diff --git a/binding-mri/graphics-binding.cpp b/binding-mri/graphics-binding.cpp index 87cb89c..bcb44b6 100644 --- a/binding-mri/graphics-binding.cpp +++ b/binding-mri/graphics-binding.cpp @@ -209,6 +209,15 @@ RB_METHOD(graphicsResizeWindow) return Qnil; } +RB_METHOD(graphicsMaximizeWindow) +{ + RB_UNUSED_PARAM; + + shState->eThread().requestWindowMaximize(); + + return Qnil; +} + DEF_GRA_PROP_I(FrameRate) DEF_GRA_PROP_I(FrameCount) DEF_GRA_PROP_I(Brightness) @@ -268,4 +277,5 @@ void graphicsBindingInit() INIT_GRA_PROP_BIND( ShowCursor, "show_cursor" ); _rb_define_module_function(module, "resize_window", graphicsResizeWindow); + _rb_define_module_function(module, "maximize_window", graphicsMaximizeWindow); } diff --git a/src/eventthread.cpp b/src/eventthread.cpp index 9bb59b2..8be64df 100644 --- a/src/eventthread.cpp +++ b/src/eventthread.cpp @@ -80,6 +80,7 @@ enum { REQUEST_SETFULLSCREEN = 0, REQUEST_WINRESIZE, + REQUEST_WINMAXIMIZE, REQUEST_MESSAGEBOX, REQUEST_SETCURSORVISIBLE, @@ -459,6 +460,10 @@ void EventThread::process(RGSSThreadData &rtData) updateCursorState(cursorInWindow, gameScreen); break; + case REQUEST_WINMAXIMIZE : + SDL_MaximizeWindow(win); + break; + case UPDATE_FPS : if (rtData.config.printFPS) Debug() << "FPS:" << event.user.code; @@ -622,6 +627,13 @@ void EventThread::requestWindowResize(int width, int height, bool recenter) SDL_PushEvent(&event); } +void EventThread::requestWindowMaximize() +{ + SDL_Event event; + event.type = usrIdStart + REQUEST_WINMAXIMIZE; + SDL_PushEvent(&event); +} + void EventThread::requestShowCursor(bool mode) { SDL_Event event; diff --git a/src/eventthread.h b/src/eventthread.h index 2ad7ec6..2352f79 100644 --- a/src/eventthread.h +++ b/src/eventthread.h @@ -89,6 +89,7 @@ public: /* Called from RGSS thread */ void requestFullscreenMode(bool mode); void requestWindowResize(int width, int height, bool recenter = false); + void requestWindowMaximize(); void requestShowCursor(bool mode); void requestTerminate();