Revision: 43404
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43404
Author: campbellbarton
Date: 2012-01-15 17:26:30 +0000 (Sun, 15 Jan 2012)
Log Message:
-----------
support for quick jump to scroll area with middle mouse clicking on scroll area
(become used to this for qt and gtk apps)
Modified Paths:
--------------
trunk/blender/source/blender/editors/interface/view2d_ops.c
Modified: trunk/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- trunk/blender/source/blender/editors/interface/view2d_ops.c 2012-01-15
14:19:32 UTC (rev 43403)
+++ trunk/blender/source/blender/editors/interface/view2d_ops.c 2012-01-15
17:26:30 UTC (rev 43404)
@@ -1207,6 +1207,7 @@
float delta; /* amount moved by mouse on axis of
interest */
float scrollbarwidth; /* width of the scrollbar itself, used for page
up/down clicks */
+ int scrollbar_orig; /* initial location of scrollbar x/y, mouse
relative */
int lastx, lasty; /* previous mouse coordinates (in
screen coordinates) for determining movement */
} v2dScrollerMove;
@@ -1302,15 +1303,16 @@
vsm->v2d= v2d;
vsm->ar= ar;
vsm->scroller= in_scroller;
-
+
/* store mouse-coordinates, and convert mouse/screen coordinates to
region coordinates */
vsm->lastx = event->x;
vsm->lasty = event->y;
-
/* 'zone' depends on where mouse is relative to bubble
* - zooming must be allowed on this axis, otherwise, default to
pan
*/
scrollers= UI_view2d_scrollers_calc(C, v2d, V2D_ARG_DUMMY,
V2D_ARG_DUMMY, V2D_ARG_DUMMY, V2D_ARG_DUMMY);
+
+
if (in_scroller == 'h') {
/* horizontal scroller - calculate adjustment factor first */
mask_size= (float)(v2d->hor.xmax - v2d->hor.xmin);
@@ -1325,6 +1327,7 @@
}
vsm->scrollbarwidth = scrollers->hor_max - scrollers->hor_min;
+ vsm->scrollbar_orig = ((scrollers->hor_max +
scrollers->hor_min) / 2) + ar->winrct.xmin;
}
else {
/* vertical scroller - calculate adjustment factor first */
@@ -1340,6 +1343,7 @@
}
vsm->scrollbarwidth = scrollers->vert_max - scrollers->vert_min;
+ vsm->scrollbar_orig = ((scrollers->vert_max +
scrollers->vert_min) / 2) + + ar->winrct.ymin;
}
UI_view2d_scrollers_free(scrollers);
@@ -1464,6 +1468,7 @@
break;
case LEFTMOUSE:
+ case MIDDLEMOUSE:
if (event->val==KM_RELEASE) {
/* single-click was in empty space outside
bubble, so scroll by 1 'page' */
if (ELEM(vsm->zone, SCROLLHANDLE_MIN_OUTSIDE,
SCROLLHANDLE_MAX_OUTSIDE)) {
@@ -1484,6 +1489,7 @@
}
}
break;
+
}
return OPERATOR_RUNNING_MODAL;
@@ -1508,6 +1514,21 @@
scroller_activate_init(C, op, event, in_scroller);
vsm= (v2dScrollerMove *)op->customdata;
+ /* support for quick jump to location - gtk and qt do this on
linux */
+ if (event->type == MIDDLEMOUSE) {
+ switch (vsm->scroller) {
+ case 'h': /* horizontal scroller - so only
horizontal movement ('cur' moves opposite to mouse) */
+ vsm->delta= (float)(event->x -
vsm->scrollbar_orig);
+ break;
+ case 'v': /* vertical scroller - so only
vertical movement ('cur' moves opposite to mouse) */
+ vsm->delta= (float)(event->y -
vsm->scrollbar_orig);
+ break;
+ }
+ scroller_activate_apply(C, op);
+
+ vsm->zone= SCROLLHANDLE_BAR;
+ }
+
/* check if zoom zones are inappropriate (i.e. zoom widgets not
shown), so cannot continue
* NOTE: see view2d.c for latest conditions, and keep this in
sync with that
*/
@@ -1669,6 +1690,10 @@
{
wmKeyMap *keymap= WM_keymap_find(keyconf, "View2D", 0, 0);
+ /* scrollers */
+ WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE,
KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", MIDDLEMOUSE,
KM_PRESS, 0, 0);
+
/* pan/scroll */
WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0,
0);
WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS,
KM_SHIFT, 0);
@@ -1713,12 +1738,13 @@
/* borderzoom - drag */
WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_border", BKEY, KM_PRESS,
KM_SHIFT, 0);
-
- /* scrollers */
- WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE,
KM_PRESS, 0, 0);
/* Alternative keymap for buttons listview */
keymap= WM_keymap_find(keyconf, "View2D Buttons List", 0, 0);
+
+ WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE,
KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", MIDDLEMOUSE,
KM_PRESS, 0, 0);
+
WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MIDDLEMOUSE, KM_PRESS, 0,
0);
WM_keymap_add_item(keymap, "VIEW2D_OT_pan", MOUSEPAN, 0, 0, 0);
WM_keymap_add_item(keymap, "VIEW2D_OT_scroll_down", WHEELDOWNMOUSE,
KM_PRESS, 0, 0);
@@ -1732,6 +1758,5 @@
WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_out", PADMINUS, KM_PRESS, 0,
0);
WM_keymap_add_item(keymap, "VIEW2D_OT_zoom_in", PADPLUSKEY, KM_PRESS,
0, 0);
WM_keymap_add_item(keymap, "VIEW2D_OT_reset", HOMEKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "VIEW2D_OT_scroller_activate", LEFTMOUSE,
KM_PRESS, 0, 0);
}
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs