diff options
author | Campbell Barton <ideasman42@gmail.com> | 2013-10-15 04:24:53 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2013-10-15 04:24:53 +0400 |
commit | d4cf5e360558fb8e1cfdc181ec6c8f981c4c5a3d (patch) | |
tree | 960137e9468d493d9866b204c664a90d2105efaa /source | |
parent | f9f2e2073952cb8abed2eb10bae0d367f7e51e0a (diff) |
fix [#37078] Search props don't react on click at the right end (where 'X' is if field not empty)
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/interface/interface_handlers.c | 11 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_widgets.c | 4 |
3 files changed, 13 insertions, 3 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index c5faa99e067..0d49b08c167 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -2648,7 +2648,9 @@ static int ui_do_but_TEX(bContext *C, uiBlock *block, uiBut *but, uiHandleButton static int ui_do_but_SEARCH_UNLINK(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, const wmEvent *event) { /* unlink icon is on right */ - if (ELEM4(event->type, LEFTMOUSE, EVT_BUT_OPEN, PADENTER, RETKEY) && event->val == KM_PRESS) { + if (ELEM4(event->type, LEFTMOUSE, EVT_BUT_OPEN, PADENTER, RETKEY) && event->val == KM_PRESS && + ui_is_but_search_unlink_visible(but)) + { ARegion *ar = data->region; rcti rect; int x = event->x, y = event->y; @@ -5761,6 +5763,13 @@ bool ui_is_but_interactive(uiBut *but) return true; } +bool ui_is_but_search_unlink_visible(uiBut *but) +{ + BLI_assert(but->type == SEARCH_MENU_UNLINK); + return ((but->editstr == NULL) && + (but->drawstr[0] != '\0')); +} + uiBut *ui_but_find_mouse_over(ARegion *ar, int x, int y) { uiBlock *block; diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 9cc16d82810..46c6e980ccc 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -402,6 +402,7 @@ extern bool ui_is_but_unit(uiBut *but); extern bool ui_is_but_rna_valid(uiBut *but); extern bool ui_is_but_utf8(uiBut *but); extern bool ui_is_but_interactive(uiBut *but); +extern bool ui_is_but_search_unlink_visible(uiBut *but); extern int ui_is_but_push_ex(uiBut *but, double *value); extern int ui_is_but_push(uiBut *but); diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index 4be8812d68c..215e9df4ae1 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -961,7 +961,7 @@ static void ui_text_clip_left(uiFontStyle *fstyle, uiBut *but, const rcti *rect) if (but->flag & UI_HAS_ICON) okwidth -= UI_DPI_ICON_SIZE; - if (but->type == SEARCH_MENU_UNLINK && !but->editstr) + if ((but->type == SEARCH_MENU_UNLINK) && ui_is_but_search_unlink_visible(but)) okwidth -= BLI_rcti_size_y(rect); okwidth = max_ii(okwidth, 0); @@ -1325,7 +1325,7 @@ static void widget_draw_text_icon(uiFontStyle *fstyle, uiWidgetColors *wcol, uiB } /* unlink icon for this button type */ - if (but->type == SEARCH_MENU_UNLINK && !but->editstr && but->drawstr[0]) { + if ((but->type == SEARCH_MENU_UNLINK) && ui_is_but_search_unlink_visible(but)) { rcti temp = *rect; temp.xmin = temp.xmax - (BLI_rcti_size_y(rect) * 1.08f); |