[Bf-blender-cvs] [f61e885] master: UIL: Dragging popups wasn't updating safe-areas

Campbell Barton noreply at git.blender.org
Fri May 2 01:25:52 CEST 2014


Commit: f61e8857066e7c6f4f4db9f6bda3c379661f0282
Author: Campbell Barton
Date:   Fri May 2 09:23:53 2014 +1000
https://developer.blender.org/rBf61e8857066e7c6f4f4db9f6bda3c379661f0282

UIL: Dragging popups wasn't updating safe-areas

===================================================================

M	source/blender/editors/interface/interface_handlers.c
M	source/blender/editors/interface/interface_intern.h
M	source/blender/editors/interface/interface_regions.c

===================================================================

diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 4c02346..dfe4dc0 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -7736,11 +7736,7 @@ static int ui_handle_menu_event(
 				sub_v2_v2v2_int(mdiff, &event->x, menu->grab_xy_prev);
 				copy_v2_v2_int(menu->grab_xy_prev, &event->x);
 
-				BLI_rcti_translate(&ar->winrct, UNPACK2(mdiff));
-
-				ED_region_update_rect(C, ar);
-
-				ED_region_tag_redraw(ar);
+				ui_popup_translate(C, ar, mdiff);
 			}
 
 			return retval;
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index a38a733..3fe6452 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -473,7 +473,9 @@ struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion,
 void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
 
 uiBut *ui_popup_menu_memory_get(struct uiBlock *block);
-void   ui_popup_menu_memory_set(struct uiBlock *block, struct uiBut *but);
+void   ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but);
+
+void   ui_popup_translate(struct bContext *C, struct ARegion *ar, const int mdiff[2]);
 
 float *ui_block_hsv_get(struct uiBlock *block);
 void ui_popup_block_scrolltest(struct uiBlock *block);
diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c
index ce80727..dd4948c 100644
--- a/source/blender/editors/interface/interface_regions.c
+++ b/source/blender/editors/interface/interface_regions.c
@@ -2143,6 +2143,29 @@ void ui_popup_menu_memory_set(uiBlock *block, uiBut *but)
 	ui_popup_menu_memory__internal(block, but);
 }
 
+/**
+ * Translate any popup regions (so we can drag them).
+ */
+void ui_popup_translate(bContext *C, ARegion *ar, const int mdiff[2])
+{
+	uiBlock *block;
+
+	BLI_rcti_translate(&ar->winrct, UNPACK2(mdiff));
+
+	ED_region_update_rect(C, ar);
+
+	ED_region_tag_redraw(ar);
+
+	/* update blocks */
+	for (block = ar->uiblocks.first; block; block = block->next) {
+		uiSafetyRct *saferct;
+		for (saferct = block->saferct.first; saferct; saferct = saferct->next) {
+			BLI_rctf_translate(&saferct->parent, UNPACK2(mdiff));
+			BLI_rctf_translate(&saferct->safety, UNPACK2(mdiff));
+		}
+	}
+}
+
 /******************** Popup Menu with callback or string **********************/
 
 struct uiPopupMenu {




More information about the Bf-blender-cvs mailing list