summaryrefslogtreecommitdiff
path: root/src/ui/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/window.c')
-rw-r--r--src/ui/window.c36
1 files changed, 32 insertions, 4 deletions
diff --git a/src/ui/window.c b/src/ui/window.c
index bc32e479..0a97b97c 100644
--- a/src/ui/window.c
+++ b/src/ui/window.c
@@ -865,7 +865,7 @@ static iBool handleWindowEvent_MainWindow_(iMainWindow *d, const SDL_WindowEvent
865 if (d->base.isMinimized) { 865 if (d->base.isMinimized) {
866 return iFalse; 866 return iFalse;
867 } 867 }
868 closePopups_App(); 868 closePopups_App(iFalse);
869 checkPixelRatioChange_Window_(as_Window(d)); 869 checkPixelRatioChange_Window_(as_Window(d));
870 const iInt2 newPos = init_I2(ev->data1, ev->data2); 870 const iInt2 newPos = init_I2(ev->data1, ev->data2);
871 if (isEqual_I2(newPos, init1_I2(-32000))) { /* magic! */ 871 if (isEqual_I2(newPos, init1_I2(-32000))) { /* magic! */
@@ -915,7 +915,7 @@ static iBool handleWindowEvent_MainWindow_(iMainWindow *d, const SDL_WindowEvent
915 // updateSize_Window_(d, iTrue); 915 // updateSize_Window_(d, iTrue);
916 return iTrue; 916 return iTrue;
917 } 917 }
918 closePopups_App(); 918 closePopups_App(iFalse);
919 if (unsnap_MainWindow_(d, NULL)) { 919 if (unsnap_MainWindow_(d, NULL)) {
920 return iTrue; 920 return iTrue;
921 } 921 }
@@ -937,7 +937,7 @@ static iBool handleWindowEvent_MainWindow_(iMainWindow *d, const SDL_WindowEvent
937 return iTrue; 937 return iTrue;
938 case SDL_WINDOWEVENT_MINIMIZED: 938 case SDL_WINDOWEVENT_MINIMIZED:
939 d->base.isMinimized = iTrue; 939 d->base.isMinimized = iTrue;
940 closePopups_App(); 940 closePopups_App(iTrue);
941 return iTrue; 941 return iTrue;
942#else /* if defined (!iPlatformDesktop) */ 942#else /* if defined (!iPlatformDesktop) */
943 case SDL_WINDOWEVENT_RESIZED: 943 case SDL_WINDOWEVENT_RESIZED:
@@ -973,7 +973,7 @@ static iBool handleWindowEvent_MainWindow_(iMainWindow *d, const SDL_WindowEvent
973#if !defined (iPlatformDesktop) 973#if !defined (iPlatformDesktop)
974 setFreezeDraw_MainWindow(d, iTrue); 974 setFreezeDraw_MainWindow(d, iTrue);
975#endif 975#endif
976 closePopups_App(); 976 closePopups_App(iTrue);
977 return iFalse; 977 return iFalse;
978 case SDL_WINDOWEVENT_TAKE_FOCUS: 978 case SDL_WINDOWEVENT_TAKE_FOCUS:
979 SDL_SetWindowInputFocus(d->base.win); 979 SDL_SetWindowInputFocus(d->base.win);
@@ -1178,7 +1178,35 @@ iLocalDef iBool isEscapeKeypress_(const SDL_Event *ev) {
1178 return (ev->type == SDL_KEYDOWN || ev->type == SDL_KEYUP) && ev->key.keysym.sym == SDLK_ESCAPE; 1178 return (ev->type == SDL_KEYDOWN || ev->type == SDL_KEYUP) && ev->key.keysym.sym == SDLK_ESCAPE;
1179} 1179}
1180 1180
1181static uint32_t windowId_SDLEvent_(const SDL_Event *ev) {
1182 switch (ev->type) {
1183 case SDL_MOUSEBUTTONDOWN:
1184 case SDL_MOUSEBUTTONUP:
1185 return ev->button.windowID;
1186 case SDL_MOUSEMOTION:
1187 return ev->motion.windowID;
1188 case SDL_MOUSEWHEEL:
1189 return ev->wheel.windowID;
1190 case SDL_KEYDOWN:
1191 case SDL_KEYUP:
1192 return ev->key.windowID;
1193 case SDL_TEXTINPUT:
1194 return ev->text.windowID;
1195 case SDL_USEREVENT:
1196 return ev->user.windowID;
1197 default:
1198 return 0;
1199 }
1200}
1201
1181iBool dispatchEvent_Window(iWindow *d, const SDL_Event *ev) { 1202iBool dispatchEvent_Window(iWindow *d, const SDL_Event *ev) {
1203#if 0
1204 /* For the right window? */
1205 const uint32_t evWin = windowId_SDLEvent_(ev);
1206 if (evWin && evWin != id_Window(d)) {
1207 return iFalse; /* Meant for a different window. */
1208 }
1209#endif
1182 if (ev->type == SDL_MOUSEMOTION) { 1210 if (ev->type == SDL_MOUSEMOTION) {
1183 /* Hover widget may change. */ 1211 /* Hover widget may change. */
1184 setHover_Widget(NULL); 1212 setHover_Widget(NULL);