[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59798] branches/soc-2013-ui_replay/source /blender: Drag polling and drag operator naming does now respect and prefer overlapping regions .
Vincent Akkermans
vincent at ack-err.net
Wed Sep 4 13:56:15 CEST 2013
Revision: 59798
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59798
Author: ack-err
Date: 2013-09-04 11:56:14 +0000 (Wed, 04 Sep 2013)
Log Message:
-----------
Drag polling and drag operator naming does now respect and prefer overlapping regions.
Modified Paths:
--------------
branches/soc-2013-ui_replay/source/blender/editors/interface/interface_handlers.c
branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_dragdrop.c
Modified: branches/soc-2013-ui_replay/source/blender/editors/interface/interface_handlers.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/editors/interface/interface_handlers.c 2013-09-04 11:02:08 UTC (rev 59797)
+++ branches/soc-2013-ui_replay/source/blender/editors/interface/interface_handlers.c 2013-09-04 11:56:14 UTC (rev 59798)
@@ -2600,7 +2600,6 @@
data->escapecancel = true;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
-
}
}
Modified: branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_dragdrop.c
===================================================================
--- branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_dragdrop.c 2013-09-04 11:02:08 UTC (rev 59797)
+++ branches/soc-2013-ui_replay/source/blender/windowmanager/intern/wm_dragdrop.c 2013-09-04 11:56:14 UTC (rev 59798)
@@ -199,7 +199,9 @@
wmWindow *win = CTX_wm_window(C);
ScrArea *sa = CTX_wm_area(C);
ARegion *ar = CTX_wm_region(C);
- const char *name;
+ ARegion *ar_iter = NULL;
+ const char *name = NULL;
+ const char *name_overlap = NULL;
name = dropbox_active(C, &win->handlers, drag, event);
if (name) return name;
@@ -208,7 +210,27 @@
if (name) return name;
name = dropbox_active(C, &ar->handlers, drag, event);
- if (name) return name;
+
+ /* Make sure overlapping regions are preferred over non-overlapping ones */
+ if (!ar->overlap) {
+ for (ar_iter = sa->regionbase.first; ar_iter; ar_iter = ar_iter->next) {
+ if (ar_iter->overlap) {
+ /* only update name_overlap if none was found yet */
+ if (name_overlap == NULL) {
+ /* We've got to fake the region for a little bit */
+ CTX_wm_region_set(C, ar_iter);
+ name_overlap = dropbox_active(C, &ar_iter->handlers, drag, event);
+ }
+ }
+ }
+ }
+ /* make sure proper region is restored */
+ CTX_wm_region_set(C, ar);
+
+ if (name_overlap)
+ return name_overlap;
+ if (name)
+ return name;
return NULL;
}
More information about the Bf-blender-cvs
mailing list