Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTon Roosendaal <ton@blender.org>2013-06-07 19:42:26 +0400
committerTon Roosendaal <ton@blender.org>2013-06-07 19:42:26 +0400
commitc24be7ec6e5269c54552d1fb03707b97befd48d1 (patch)
tree0b3a034e62b39ab9d97021288dc0572e06eb21d9 /source/blender/editors/interface/interface_handlers.c
parenta604fb730dd62a2730a3a753adc057abb93296cb (diff)
Usablity:
Textbuttons: double click now selects entire words (like on file path segements) Triple click was requested too, but that's not a WM event type yet.
Diffstat (limited to 'source/blender/editors/interface/interface_handlers.c')
-rw-r--r--source/blender/editors/interface/interface_handlers.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index 5ca22a3419e..0d8c11c0036 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -2192,11 +2192,14 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
break;
case LEFTMOUSE:
{
+ bool had_selection = but->selsta != but->selend;
+
/* exit on LMB only on RELEASE for searchbox, to mimic other popups, and allow multiple menu levels */
if (data->searchbox)
inbox = ui_searchbox_inside(data->searchbox, event->x, event->y);
- if (event->val == KM_PRESS) {
+ /* for double click: we do a press again for when you first click on button (selects all text, no cursor pos) */
+ if (event->val == KM_PRESS || event->val == KM_DBL_CLICK) {
mx = event->x;
my = event->y;
ui_window_to_block(data->region, block, &mx, &my);
@@ -2217,6 +2220,14 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
retval = WM_UI_HANDLER_BREAK;
}
}
+
+ /* only select a word in button if there was no selection before */
+ if (event->val == KM_DBL_CLICK && had_selection == false) {
+ ui_textedit_move(but, data, STRCUR_DIR_PREV, 0, STRCUR_JUMP_DELIM);
+ ui_textedit_move(but, data, STRCUR_DIR_NEXT, true, STRCUR_JUMP_DELIM);
+ retval = WM_UI_HANDLER_BREAK;
+ changed = true;
+ }
else if (inbox) {
button_activate_state(C, but, BUTTON_STATE_EXIT);
retval = WM_UI_HANDLER_BREAK;