[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