[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17712] branches/blender2.5/blender/source /blender/editors: View2D: Scrollbars will now pan the view when MMB-dragged on

Joshua Leung aligorith at gmail.com
Thu Dec 4 10:33:13 CET 2008


Revision: 17712
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17712
Author:   aligorith
Date:     2008-12-04 10:33:12 +0100 (Thu, 04 Dec 2008)

Log Message:
-----------
View2D: Scrollbars will now pan the view when MMB-dragged on

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
    branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c

Modified: branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2008-12-04 05:37:55 UTC (rev 17711)
+++ branches/blender2.5/blender/source/blender/editors/interface/view2d_ops.c	2008-12-04 09:33:12 UTC (rev 17712)
@@ -54,7 +54,10 @@
 /* General Polling Funcs */
 
 /* Check if mouse is within scrollbars 
- *	- Returns true or false (1 or 0)
+ *	- Returns appropriate code for match
+ *		'h' = in horizontal scrollbar
+ *		'v' = in vertical scrollbar
+ *		0 = not in scrollbar
  *	
  *	- x,y	= mouse coordinates in screen (not region) space
  */
@@ -64,16 +67,15 @@
 	int co[2];
 	
 	/* clamp x,y to region-coordinates first */
-	// FIXME: is this needed?
 	co[0]= x - ar->winrct.xmin;
 	co[1]= y - ar->winrct.ymin;
 	
 	/* check if within scrollbars */
 	if (v2d->scroll & (HOR_SCROLL|HOR_SCROLLO)) {
-		if (IN_2D_HORIZ_SCROLL(v2d, co)) return 1;
+		if (IN_2D_HORIZ_SCROLL(v2d, co)) return 'h';
 	}
 	if (v2d->scroll & VERT_SCROLL) {
-		if (IN_2D_VERT_SCROLL(v2d, co)) return 1;
+		if (IN_2D_VERT_SCROLL(v2d, co)) return 'v';
 	}	
 	
 	/* not found */
@@ -204,6 +206,8 @@
 	RNA_int_set(op->ptr, "deltax", 0);
 	RNA_int_set(op->ptr, "deltay", 0);
 	
+	vpd->in_scroller= mouse_in_v2d_scrollers(C, v2d, event->x, event->y);
+	
 #if 0 // XXX - enable this when cursors are working properly
 	if (v2d->keepofs & V2D_LOCKOFS_X)
 		WM_set_cursor(C, BC_NS_SCROLLCURSOR);
@@ -229,8 +233,21 @@
 		case MOUSEMOVE:
 		{
 			/* calculate new delta transform, then store mouse-coordinates for next-time */
-			RNA_int_set(op->ptr, "deltax", (vpd->lastx - event->x));
-			RNA_int_set(op->ptr, "deltay", (vpd->lasty - event->y));
+			switch (vpd->in_scroller) {
+				case 'h': /* horizontal scrollbar - so only horizontal scroll (inverse direction) */
+					RNA_int_set(op->ptr, "deltax", (event->x - vpd->lastx));
+					RNA_int_set(op->ptr, "deltay", 0);
+					break;
+				case 'v': /* vertical scrollbar - so only vertical scroll (inverse direction) */
+					RNA_int_set(op->ptr, "deltax", 0);
+					RNA_int_set(op->ptr, "deltay", (event->y - vpd->lasty));
+					break;
+				default:
+					RNA_int_set(op->ptr, "deltax", (vpd->lastx - event->x));
+					RNA_int_set(op->ptr, "deltay", (vpd->lasty - event->y));
+					break;
+			}
+			
 			vpd->lastx= event->x;
 			vpd->lasty= event->y;
 			
@@ -241,6 +258,20 @@
 		case MIDDLEMOUSE:
 			if (event->val==0) {
 				/* calculate overall delta mouse-movement for redo */
+				switch (vpd->in_scroller) {
+					case 'h': /* horizontal scrollbar - so only horizontal scroll (inverse direction) */
+						RNA_int_set(op->ptr, "deltax", (vpd->lastx - vpd->startx));
+						RNA_int_set(op->ptr, "deltay", 0);
+						break;
+					case 'v': /* vertical scrollbar - so only vertical scroll (inverse direction) */
+						RNA_int_set(op->ptr, "deltax", 0);
+						RNA_int_set(op->ptr, "deltay", (vpd->lasty - vpd->starty));
+						break;
+					default:
+						RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
+						RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty));
+						break;
+				}
 				RNA_int_set(op->ptr, "deltax", (vpd->startx - vpd->lastx));
 				RNA_int_set(op->ptr, "deltay", (vpd->starty - vpd->lasty));
 				

Modified: branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2008-12-04 05:37:55 UTC (rev 17711)
+++ branches/blender2.5/blender/source/blender/editors/screen/screen_ops.c	2008-12-04 09:33:12 UTC (rev 17712)
@@ -1319,9 +1319,6 @@
 	WM_operatortype_append(ED_SCR_OT_area_join);
 	WM_operatortype_append(ED_SCR_OT_area_rip);
 	
-	/* view2d stuff */
-	
-	
 	/* tools shared by more space types */
 	ED_marker_operatortypes();	
 	





More information about the Bf-blender-cvs mailing list