diff options
author | Ton Roosendaal <ton@blender.org> | 2009-06-06 17:35:04 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-06-06 17:35:04 +0400 |
commit | 9d8fa4f959ff704e113d70ed713d1b8aec0ef014 (patch) | |
tree | 63795ef16cd527574925dc9cbe246ee74deed78a /source/blender/windowmanager/intern | |
parent | 47ca5cbea26fb7562472a127db6181d134f46319 (diff) |
2.5
Several usablity tweaks:
- Search menu allows ScrollWheel to view items
- Tooltip on button on bottom of window showed wrong
- Tooltips were popping up while draggin (MMB) or scrolling
(wheel). Now they stay away.
- Stolen from Gimp (blame venomgfx for hint!): ScrollWheel allows
to go over menu items and use number buttons, only on mouse-over.
Note for devs: the WM_event_add_mousemove() call (to add a fake
event to bring UI back alive after view changes) now works much
more reliably. It ensures the mouse move is only handled after all
notifiers/redraws were done.
Diffstat (limited to 'source/blender/windowmanager/intern')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 53f70f6ab8f..f5c8e535002 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1088,6 +1088,17 @@ void wm_event_do_handlers(bContext *C) wm_event_free(event); } + + /* only add mousemove when queue was read entirely */ + if(win->addmousemove) { + wmEvent event= *(win->eventstate); + event.type= MOUSEMOVE; + event.prevx= event.x; + event.prevy= event.y; + wm_event_add(win, &event); + win->addmousemove= 0; + } + CTX_wm_window_set(C, NULL); } } @@ -1238,11 +1249,8 @@ void WM_event_remove_ui_handler(ListBase *handlers, wmUIHandlerFunc func, wmUIHa void WM_event_add_mousemove(bContext *C) { wmWindow *window= CTX_wm_window(C); - wmEvent event= *(window->eventstate); - event.type= MOUSEMOVE; - event.prevx= event.x; - event.prevy= event.y; - wm_event_add(window, &event); + + window->addmousemove= 1; } /* for modal callbacks, check configuration for how to interpret exit with tweaks */ |