[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