[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52701] trunk/blender/source/blender/ editors/interface/interface_handlers.c: UI: allow middlemouse in addition to leftmouse for clicking on various buttons ,
Brecht Van Lommel
brechtvanlommel at pandora.be
Sat Dec 1 20:14:56 CET 2012
Revision: 52701
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52701
Author: blendix
Date: 2012-12-01 19:14:55 +0000 (Sat, 01 Dec 2012)
Log Message:
-----------
UI: allow middlemouse in addition to leftmouse for clicking on various buttons,
means that if you have emulate 3 button mouse enabled and still have alt pressed
when clicking, it works.
Modified Paths:
--------------
trunk/blender/source/blender/editors/interface/interface_handlers.c
Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 2012-12-01 18:07:45 UTC (rev 52700)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2012-12-01 19:14:55 UTC (rev 52701)
@@ -1886,6 +1886,7 @@
retval = WM_UI_HANDLER_BREAK;
break;
case LEFTMOUSE:
+ case MIDDLEMOUSE:
{
/* exit on LMB only on RELEASE for searchbox, to mimic other popups, and allow multiple menu levels */
if (data->searchbox)
@@ -2249,11 +2250,11 @@
static int ui_do_but_BUT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (event->type == LEFTMOUSE && event->val == KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_WAIT_RELEASE);
return WM_UI_HANDLER_BREAK;
}
- else if (event->type == LEFTMOUSE && but->block->handle) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && but->block->handle) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
return WM_UI_HANDLER_BREAK;
}
@@ -2263,7 +2264,7 @@
}
}
else if (data->state == BUTTON_STATE_WAIT_RELEASE) {
- if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
if (!(but->flag & UI_SELECT))
data->cancel = TRUE;
button_activate_state(C, but, BUTTON_STATE_EXIT);
@@ -2277,7 +2278,7 @@
static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
but->drawstr[0] = 0;
but->modifier_key = 0;
button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT);
@@ -2338,7 +2339,7 @@
static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT);
return WM_UI_HANDLER_BREAK;
}
@@ -2363,7 +2364,7 @@
static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (ELEM(event->type, LEFTMOUSE, EVT_BUT_OPEN) && event->val == KM_PRESS) {
+ if (ELEM3(event->type, LEFTMOUSE, MIDDLEMOUSE, EVT_BUT_OPEN) && event->val == KM_PRESS) {
if (but->dt == UI_EMBOSSN && !event->ctrl) {
/* pass */
}
@@ -2388,7 +2389,7 @@
static int ui_do_but_TOG(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event)
{
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
data->togdual = event->ctrl;
data->togonly = !event->shift;
button_activate_state(C, but, BUTTON_STATE_EXIT);
@@ -2404,7 +2405,7 @@
if (data->state == BUTTON_STATE_HIGHLIGHT) {
/* first handle click on icondrag type button */
- if (event->type == LEFTMOUSE && but->dragpoin) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && but->dragpoin) {
if (ui_but_mouse_inside_icon(but, data->region, event)) {
/* tell the button to wait and keep checking further events to
@@ -2416,7 +2417,7 @@
}
}
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
int ret = WM_UI_HANDLER_BREAK;
/* XXX (a bit ugly) Special case handling for filebrowser drag button */
if (but->dragpoin && but->imb && ui_but_mouse_inside_icon(but, data->region, event)) {
@@ -2436,7 +2437,7 @@
/* If the mouse has been pressed and released, getting to
* this point without triggering a drag, then clear the
* drag state for this button and continue to pass on the event */
- if (event->type == LEFTMOUSE && event->val == KM_RELEASE) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_RELEASE) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
return WM_UI_HANDLER_CONTINUE;
}
@@ -2678,11 +2679,11 @@
click = 1;
}
else if (event->val == KM_PRESS) {
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->ctrl) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->ctrl) {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
retval = WM_UI_HANDLER_BREAK;
}
- else if (event->type == LEFTMOUSE) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE)) {
data->dragstartx = data->draglastx = ui_is_a_warp_but(but) ? screen_mx : mx;
button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
retval = WM_UI_HANDLER_BREAK;
@@ -2705,7 +2706,7 @@
data->escapecancel = TRUE;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
if (data->dragchange)
button_activate_state(C, but, BUTTON_STATE_EXIT);
else
@@ -2902,12 +2903,12 @@
click = 2;
}
else if (event->val == KM_PRESS) {
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->ctrl) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->ctrl) {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
retval = WM_UI_HANDLER_BREAK;
}
/* alt-click on sides to get "arrows" like in NUM buttons, and match wheel usage above */
- else if (event->type == LEFTMOUSE && event->alt) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->alt) {
int halfpos = BLI_rctf_cent_x(&but->rect);
click = 2;
if (mx < halfpos)
@@ -2915,7 +2916,7 @@
else
mx = but->rect.xmax;
}
- else if (event->type == LEFTMOUSE) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE)) {
data->dragstartx = mx;
data->draglastx = mx;
button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
@@ -2938,7 +2939,7 @@
data->escapecancel = TRUE;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
if (data->dragchange)
button_activate_state(C, but, BUTTON_STATE_EXIT);
else
@@ -3030,7 +3031,7 @@
if (data->state == BUTTON_STATE_HIGHLIGHT) {
if (event->val == KM_PRESS) {
- if (event->type == LEFTMOUSE) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE)) {
if (horizontal) {
data->dragstartx = mx;
data->draglastx = mx;
@@ -3055,7 +3056,7 @@
data->escapecancel = TRUE;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
else if (event->type == MOUSEMOVE) {
@@ -3076,7 +3077,7 @@
if (data->state == BUTTON_STATE_HIGHLIGHT) {
/* first handle click on icondrag type button */
- if (event->type == LEFTMOUSE && but->dragpoin && event->val == KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && but->dragpoin && event->val == KM_PRESS) {
if (ui_but_mouse_inside_icon(but, data->region, event)) {
button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG);
data->dragstartx = event->x;
@@ -3086,7 +3087,7 @@
}
/* regular open menu */
- if (ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
+ if (ELEM4(event->type, LEFTMOUSE, MIDDLEMOUSE, PADENTER, RETKEY) && event->val == KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);
return WM_UI_HANDLER_BREAK;
}
@@ -3158,7 +3159,7 @@
return WM_UI_HANDLER_BREAK;
}
- if (event->type == LEFTMOUSE && event->val == KM_RELEASE) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_RELEASE) {
button_activate_state(C, but, BUTTON_STATE_MENU_OPEN);
return WM_UI_HANDLER_BREAK;
}
@@ -3238,7 +3239,7 @@
ui_window_to_block(data->region, block, &mx, &my);
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (event->type == LEFTMOUSE && event->val == KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_PRESS) {
data->dragstartx = mx;
data->dragstarty = my;
data->draglastx = mx;
@@ -3259,7 +3260,7 @@
ui_numedit_apply(C, block, but, data);
}
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
@@ -3424,7 +3425,7 @@
ui_window_to_block(data->region, block, &mx, &my);
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (event->type == LEFTMOUSE && event->val == KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_PRESS) {
data->dragstartx = mx;
data->dragstarty = my;
data->draglastx = mx;
@@ -3493,7 +3494,7 @@
ui_numedit_apply(C, block, but, data);
}
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
@@ -3623,7 +3624,7 @@
ui_window_to_block(data->region, block, &mx, &my);
if (data->state == BUTTON_STATE_HIGHLIGHT) {
- if (event->type == LEFTMOUSE && event->val == KM_PRESS) {
+ if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val == KM_PRESS) {
data->dragstartx = mx;
data->dragstarty = my;
data->draglastx = mx;
@@ -3703,7 +3704,7 @@
ui_numedit_apply(C, block, but, data);
}
}
- else if (event->type == LEFTMOUSE && event->val != KM_PRESS) {
+ else if (ELEM(event->type, LEFTMOUSE, MIDDLEMOUSE) && event->val != KM_PRESS) {
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list