Fix own mistake from 4cb4556fa5ba78ff
authorJulian Eisel <eiseljulian@gmail.com>
Thu, 22 Mar 2018 22:52:38 +0000 (23:52 +0100)
committerJulian Eisel <eiseljulian@gmail.com>
Thu, 22 Mar 2018 22:52:38 +0000 (23:52 +0100)
Trying to close Blender from a second window wouldn't work, the first window
would have to be hovered first. Ouch!

source/blender/windowmanager/WM_api.h
source/blender/windowmanager/intern/wm_event_system.c
source/blender/windowmanager/intern/wm_init_exit.c

index a910e1bce2ef58ff0da8d88deb57c73122218880..bf26d512589e2099c63c5bbc2a1d93872ced6eda 100644 (file)
@@ -186,7 +186,7 @@ enum {
 struct wmEventHandler *WM_event_add_dropbox_handler(ListBase *handlers, ListBase *dropboxes);
 
                        /* mouse */
-void           WM_event_add_mousemove(struct bContext *C);
+void           WM_event_add_mousemove(const struct bContext *C);
 bool           WM_event_is_modal_tweak_exit(const struct wmEvent *event, int tweak_event);
 bool           WM_event_is_last_mousemove(const struct wmEvent *event);
 
index d62327a83a9d93fe494dd048274ea7bdcebc541b..b18e9f050c297480e0c97156115ce78767b5932e 100644 (file)
@@ -2919,7 +2919,7 @@ static void WM_event_remove_handler(ListBase *handlers, wmEventHandler *handler)
 }
 #endif
 
-void WM_event_add_mousemove(bContext *C)
+void WM_event_add_mousemove(const bContext *C)
 {
        wmWindow *window = CTX_wm_window(C);
        
index 4fcbff6bf98b0a2e4205974dac3d67339cc27507..9b4868523dc35dc0ae4f5fd75426016bc41904ad 100644 (file)
@@ -450,12 +450,11 @@ void wm_exit_schedule_delayed(const bContext *C)
        /* What we do here is a little bit hacky, but quite simple and doesn't require bigger
         * changes: Add a handler wrapping WM_exit() to cause a delayed call of it. */
 
-       wmWindowManager *wm = CTX_wm_manager(C);
-       /* Doesn't matter which window we use. */
-       wmWindow *win = wm->windows.first;
+       wmWindow *win = CTX_wm_window(C);
 
        /* Use modal UI handler for now. Could add separate WM handlers or so, but probably not worth it. */
        WM_event_add_ui_handler(C, &win->modalhandlers, wm_exit_handler, NULL, NULL, 0);
+       WM_event_add_mousemove(C); /* ensure handler actually gets called */
 }
 
 /**