[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34858] trunk/blender/source/blender/ editors: UI Tweaks: Text field in Rename Markers popup now gets focus when the
Joshua Leung
aligorith at gmail.com
Tue Feb 15 02:24:13 CET 2011
Revision: 34858
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34858
Author: aligorith
Date: 2011-02-15 01:24:12 +0000 (Tue, 15 Feb 2011)
Log Message:
-----------
UI Tweaks: Text field in Rename Markers popup now gets focus when the
popup appears, saving an extra click
I've separated out the "XXX"-'d event-adding-hack section from the
search-menu code into a separate API function (as recommended there).
This call is used to make sure that textboxes in popups can get
activated by default, to allow typing immediately.
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/UI_interface.h
trunk/blender/source/blender/editors/interface/interface.c
trunk/blender/source/blender/editors/interface/interface_layout.c
trunk/blender/source/blender/editors/interface/interface_templates.c
Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h 2011-02-15 01:16:32 UTC (rev 34857)
+++ trunk/blender/source/blender/editors/include/UI_interface.h 2011-02-15 01:24:12 UTC (rev 34858)
@@ -548,6 +548,8 @@
void uiBlockSetDrawExtraFunc(uiBlock *block, void (*func)(const struct bContext *C, void *, void *, void *, struct rcti *rect), void *arg1, void *arg2);
+void uiButSetFocusOnEnter (struct wmWindow *win, uiBut *but);
+
/* Autocomplete
*
* Tab complete helper functions, for use in uiButCompleteFunc callbacks.
Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c 2011-02-15 01:16:32 UTC (rev 34857)
+++ trunk/blender/source/blender/editors/interface/interface.c 2011-02-15 01:24:12 UTC (rev 34858)
@@ -3510,6 +3510,22 @@
}
}
+/* push a new event onto event queue to activate the given button
+ * (usually a text-field) upon entering a popup
+ */
+void uiButSetFocusOnEnter(wmWindow *win, uiBut *but)
+{
+ wmEvent event;
+
+ event= *(win->eventstate);
+ event.type= EVT_BUT_OPEN;
+ event.val= KM_PRESS;
+ event.customdata= but;
+ event.customdatafree= FALSE;
+
+ wm_event_add(win, &event);
+}
+
/* Program Init/Exit */
void UI_init(void)
Modified: trunk/blender/source/blender/editors/interface/interface_layout.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_layout.c 2011-02-15 01:16:32 UTC (rev 34857)
+++ trunk/blender/source/blender/editors/interface/interface_layout.c 2011-02-15 01:24:12 UTC (rev 34858)
@@ -2733,11 +2733,20 @@
}
}
- /* no undo for buttons for operator redo panels */
+ /* set various special settings for buttons */
{
uiBut *but;
- for(but= uiLayoutGetBlock(layout)->buttons.first; but; but= but->next)
+ for(but= uiLayoutGetBlock(layout)->buttons.first; but; but= but->next) {
+ /* no undo for buttons for operator redo panels */
uiButClearFlag(but, UI_BUT_UNDO);
+
+ /* if button is operator's default property, and a text-field, enable focus for it
+ * - this is used for allowing operators with popups to rename stuff with fewer clicks
+ */
+ if ((but->rnaprop == op->type->prop) && (but->type == TEX)) {
+ uiButSetFocusOnEnter(CTX_wm_window(C), but);
+ }
+ }
}
}
Modified: trunk/blender/source/blender/editors/interface/interface_templates.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_templates.c 2011-02-15 01:16:32 UTC (rev 34857)
+++ trunk/blender/source/blender/editors/interface/interface_templates.c 2011-02-15 01:24:12 UTC (rev 34858)
@@ -144,7 +144,6 @@
static char search[256];
static TemplateID template;
PointerRNA idptr;
- wmEvent event;
wmWindow *win= CTX_wm_window(C);
uiBlock *block;
uiBut *but;
@@ -185,12 +184,8 @@
uiBlockSetDirection(block, UI_DOWN);
uiEndBlock(C, block);
- event= *(win->eventstate); /* XXX huh huh? make api call */
- event.type= EVT_BUT_OPEN;
- event.val= KM_PRESS;
- event.customdata= but;
- event.customdatafree= FALSE;
- wm_event_add(win, &event);
+ /* give search-field focus */
+ uiButSetFocusOnEnter(win, but);
return block;
}
More information about the Bf-blender-cvs
mailing list