Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-05-28 07:33:13 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-05-28 07:40:12 +0300
commit13f292d10d3bb19aa9aa694cecbde499f93e7a54 (patch)
treeb12dffe51f9649c24642f18131b47bedca169438 /source/blender/windowmanager/intern/wm_event_system.c
parent2e22cfd08a0d589e8894e322ed29d5c3227ca04d (diff)
Gizmo: only highlight when held modifier keys are used
Check the current events modifiers against the gizmo keymap, only highlighting when keymap items match. Needed to resolve T63996
Diffstat (limited to 'source/blender/windowmanager/intern/wm_event_system.c')
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 3312d402d2d..51b2ca6a3d0 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -732,6 +732,24 @@ void WM_operator_region_active_win_set(bContext *C)
}
}
+int WM_event_modifier_flag(const wmEvent *event)
+{
+ int flag = 0;
+ if (event->ctrl) {
+ flag |= KM_CTRL;
+ }
+ if (event->alt) {
+ flag |= KM_ALT;
+ }
+ if (event->shift) {
+ flag |= KM_SHIFT;
+ }
+ if (event->oskey) {
+ flag |= KM_OSKEY;
+ }
+ return flag;
+}
+
/* for debugging only, getting inspecting events manually is tedious */
void WM_event_print(const wmEvent *event)
{
@@ -2724,14 +2742,16 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers
/* Drag events use the previous click location to highlight the gizmos,
* Get the highlight again in case the user dragged off the gizmo. */
const bool is_event_drag = ISTWEAK(event->type) || (event->val == KM_CLICK_DRAG);
+ const bool is_event_modifier = ISKEYMODIFIER(event->type);
bool handle_highlight = false;
bool handle_keymap = false;
/* handle gizmo highlighting */
- if (!wm_gizmomap_modal_get(gzmap) && ((event->type == MOUSEMOVE) || is_event_drag)) {
+ if (!wm_gizmomap_modal_get(gzmap) &&
+ ((event->type == MOUSEMOVE) || is_event_modifier || is_event_drag)) {
handle_highlight = true;
- if (is_event_drag) {
+ if (is_event_modifier || is_event_drag) {
handle_keymap = true;
}
}