[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50900] trunk/blender/source/blender/ editors/interface/interface_regions.c: Correction to svn rev50845

Sergey Sharybin sergey.vfx at gmail.com
Wed Sep 26 12:39:32 CEST 2012


Revision: 50900
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50900
Author:   nazgul
Date:     2012-09-26 10:39:32 +0000 (Wed, 26 Sep 2012)
Log Message:
-----------
Correction to svn rev50845

Disable color picker button only if color block is invoked from another popup.

Only in this case color picking will fail. Valid RNA path isn't required for
this, only RNA pointer in button is needed.

This solves issue with missing color picking in user preferences.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50845

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface_regions.c

Modified: trunk/blender/source/blender/editors/interface/interface_regions.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_regions.c	2012-09-26 09:27:47 UTC (rev 50899)
+++ trunk/blender/source/blender/editors/interface/interface_regions.c	2012-09-26 10:39:32 UTC (rev 50900)
@@ -2083,7 +2083,7 @@
 
 
 /* a HS circle, V slider, rgb/hsv/hex sliders */
-static void uiBlockPicker(uiBlock *block, float rgba[4], PointerRNA *ptr, PropertyRNA *prop)
+static void uiBlockPicker(uiBlock *block, float rgba[4], PointerRNA *ptr, PropertyRNA *prop, int show_picker)
 {
 	static short colormode = 0;  /* temp? 0=rgb, 1=hsv, 2=hex */
 	uiBut *bt;
@@ -2144,7 +2144,7 @@
 	uiButSetFunc(bt, do_picker_new_mode_cb, bt, NULL);
 	uiBlockEndAlign(block);
 
-	if (RNA_property_path_from_ID_check(ptr, prop)) {
+	if (show_picker) {
 		bt = uiDefIconButO(block, BUT, "UI_OT_eyedropper", WM_OP_INVOKE_DEFAULT, ICON_EYEDROPPER, butwidth + 10, -60, UI_UNIT_X, UI_UNIT_Y, NULL);
 		uiButSetFunc(bt, close_popup_cb, bt, NULL);
 	}
@@ -2232,6 +2232,7 @@
 {
 	uiBut *but = arg_but;
 	uiBlock *block;
+	int show_picker = TRUE;
 	
 	block = uiBeginBlock(C, handle->region, __func__, UI_EMBOSS);
 	
@@ -2240,12 +2241,20 @@
 			block->color_profile = FALSE;
 		}
 	}
+
+	if (but->block) {
+		/* if color block is invoked from a popup we wouldn't be able to set color properly
+		 * this is because color picker will close popups first and then will try to figure
+		 * out active button RNA, and of course it'll fail
+		 */
+		show_picker = (but->block->flag & UI_BLOCK_POPUP) == 0;
+	}
 	
 	uiBlockSetFlag(block, UI_BLOCK_MOVEMOUSE_QUIT);
 	
 	copy_v3_v3(handle->retvec, but->editvec);
 	
-	uiBlockPicker(block, handle->retvec, &but->rnapoin, but->rnaprop);
+	uiBlockPicker(block, handle->retvec, &but->rnapoin, but->rnaprop, show_picker);
 	
 	block->flag = UI_BLOCK_LOOP | UI_BLOCK_REDRAW | UI_BLOCK_KEEP_OPEN | UI_BLOCK_OUT_1;
 	uiBoundsBlock(block, 10);




More information about the Bf-blender-cvs mailing list