From 1119ce19580d1a4b55a2d637863d4dac7c5237cd Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 29 May 2018 13:06:14 -0700 Subject: [PATCH] Add Window expose event --- lime/_backend/native/NativeApplication.hx | 19 ++++++++++++------- lime/app/Module.hx | 8 ++++++++ lime/ui/Window.hx | 1 + project/include/ui/WindowEvent.h | 1 + project/src/backend/sdl/SDLApplication.cpp | 5 ++++- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/lime/_backend/native/NativeApplication.hx b/lime/_backend/native/NativeApplication.hx index 511fa435d..b411c9dd6 100644 --- a/lime/_backend/native/NativeApplication.hx +++ b/lime/_backend/native/NativeApplication.hx @@ -640,6 +640,10 @@ class NativeApplication { window.onEnter.dispatch (); + case WINDOW_EXPOSE: + + window.onExpose.dispatch (); + case WINDOW_FOCUS_IN: window.onFocusIn.dispatch (); @@ -1200,12 +1204,13 @@ private class WindowEventInfo { var WINDOW_CLOSE = 1; var WINDOW_DEACTIVATE = 2; var WINDOW_ENTER = 3; - var WINDOW_FOCUS_IN = 4; - var WINDOW_FOCUS_OUT = 5; - var WINDOW_LEAVE = 6; - var WINDOW_MINIMIZE = 7; - var WINDOW_MOVE = 8; - var WINDOW_RESIZE = 9; - var WINDOW_RESTORE = 10; + var WINDOW_EXPOSE = 4; + var WINDOW_FOCUS_IN = 5; + var WINDOW_FOCUS_OUT = 6; + var WINDOW_LEAVE = 7; + var WINDOW_MINIMIZE = 8; + var WINDOW_MOVE = 9; + var WINDOW_RESIZE = 10; + var WINDOW_RESTORE = 11; } diff --git a/lime/app/Module.hx b/lime/app/Module.hx index b0e871fa4..ceec1adf7 100644 --- a/lime/app/Module.hx +++ b/lime/app/Module.hx @@ -60,6 +60,7 @@ class Module implements IModule { window.onDeactivate.add (onWindowDeactivate.bind (window)); window.onDropFile.add (onWindowDropFile.bind (window)); window.onEnter.add (onWindowEnter.bind (window)); + window.onExpose.add (onWindowExpose.bind (window)); window.onFocusIn.add (onWindowFocusIn.bind (window)); window.onFocusOut.add (onWindowFocusOut.bind (window)); window.onFullscreen.add (onWindowFullscreen.bind (window)); @@ -471,6 +472,13 @@ class Module implements IModule { public function onWindowEnter (window:Window):Void { } + /** + * Called when a window expose event is fired + * @param window The window dispatching the event + */ + public function onWindowExpose (window:Window):Void { } + + /** * Called when a window focus in event is fired * @param window The window dispatching the event diff --git a/lime/ui/Window.hx b/lime/ui/Window.hx index 6edb195e6..6efa1a883 100644 --- a/lime/ui/Window.hx +++ b/lime/ui/Window.hx @@ -43,6 +43,7 @@ class Window { public var onDeactivate = new EventVoid> (); public var onDropFile = new EventVoid> (); public var onEnter = new EventVoid> (); + public var onExpose = new EventVoid> (); public var onFocusIn = new EventVoid> (); public var onFocusOut = new EventVoid> (); public var onFullscreen = new EventVoid> (); diff --git a/project/include/ui/WindowEvent.h b/project/include/ui/WindowEvent.h index e7060f707..c5e94503e 100644 --- a/project/include/ui/WindowEvent.h +++ b/project/include/ui/WindowEvent.h @@ -15,6 +15,7 @@ namespace lime { WINDOW_CLOSE, WINDOW_DEACTIVATE, WINDOW_ENTER, + WINDOW_EXPOSE, WINDOW_FOCUS_IN, WINDOW_FOCUS_OUT, WINDOW_LEAVE, diff --git a/project/src/backend/sdl/SDLApplication.cpp b/project/src/backend/sdl/SDLApplication.cpp index 4d870b957..35a0e739d 100644 --- a/project/src/backend/sdl/SDLApplication.cpp +++ b/project/src/backend/sdl/SDLApplication.cpp @@ -259,7 +259,9 @@ namespace lime { ProcessWindowEvent (event); break; - case SDL_WINDOWEVENT_EXPOSED: + case SDL_WINDOWEVENT_EXPOSED: + + ProcessWindowEvent (event); if (!inBackground) { @@ -741,6 +743,7 @@ namespace lime { case SDL_WINDOWEVENT_FOCUS_LOST: windowEvent.type = WINDOW_FOCUS_OUT; break; case SDL_WINDOWEVENT_LEAVE: windowEvent.type = WINDOW_LEAVE; break; case SDL_WINDOWEVENT_MINIMIZED: windowEvent.type = WINDOW_MINIMIZE; break; + case SDL_WINDOWEVENT_EXPOSED: windowEvent.type = WINDOW_EXPOSE; break; case SDL_WINDOWEVENT_MOVED: