[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55549] trunk/blender/source/blender: Usablity:
Ton Roosendaal
ton at blender.org
Sun Mar 24 14:43:40 CET 2013
Revision: 55549
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55549
Author: ton
Date: 2013-03-24 13:43:40 +0000 (Sun, 24 Mar 2013)
Log Message:
-----------
Usablity:
In text editor, the CTRL+F find now opens property region (or keeps it) and
activates the search button for input.
That's already nice! But next step should be to do a search on exit of
the button (or while typing). That's stuff I need Campbell to help with though.
Notes:
- Probably Py api for property buttons could get an "operator=" arg?
- The warning menu "not found" should go away
- I also suggest to make "wrap" search default for new editors
Modified Paths:
--------------
trunk/blender/source/blender/editors/include/UI_interface.h
trunk/blender/source/blender/editors/interface/interface_handlers.c
trunk/blender/source/blender/editors/space_text/space_text.c
trunk/blender/source/blender/editors/space_text/text_header.c
trunk/blender/source/blender/editors/space_text/text_intern.h
trunk/blender/source/blender/editors/space_text/text_ops.c
trunk/blender/source/blender/makesdna/DNA_space_types.h
trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
Modified: trunk/blender/source/blender/editors/include/UI_interface.h
===================================================================
--- trunk/blender/source/blender/editors/include/UI_interface.h 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/include/UI_interface.h 2013-03-24 13:43:40 UTC (rev 55549)
@@ -643,6 +643,8 @@
void (*func)(const struct bContext *C, void *, void *, void *, struct rcti *rect),
void *arg1, void *arg2);
+void UI_textbutton_activate_event(const struct bContext *C, struct ARegion *ar, void *basepoin, const char *identifier);
+
void uiButSetFocusOnEnter(struct wmWindow *win, uiBut *but);
/* Autocomplete
Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 2013-03-24 13:43:40 UTC (rev 55549)
@@ -7456,4 +7456,35 @@
WM_event_remove_ui_handler(handlers, ui_handler_popup, ui_handler_remove_popup, popup, FALSE);
}
+void UI_textbutton_activate_event(const bContext *C, ARegion *ar, void *basepoin, const char *identifier)
+{
+ uiBlock *block;
+ uiBut *but;
+
+ for (block = ar->uiblocks.first; block; block = block->next) {
+ for (but = block->buttons.first; but; but = but->next) {
+ if (but->type == TEX) {
+ if (but->rnaprop && but->rnapoin.data == basepoin)
+ if (strcmp(RNA_property_identifier(but->rnaprop), identifier)==0)
+ break;
+
+ }
+ }
+ if (but)
+ break;
+ }
+
+ if (but) {
+ wmWindow *win = CTX_wm_window(C);
+ wmEvent event;
+
+ 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);
+ }
+}
+
Modified: trunk/blender/source/blender/editors/space_text/space_text.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/space_text.c 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/space_text/space_text.c 2013-03-24 13:43:40 UTC (rev 55549)
@@ -220,6 +220,8 @@
WM_operatortype_append(TEXT_OT_replace);
WM_operatortype_append(TEXT_OT_replace_set_selected);
+ WM_operatortype_append(TEXT_OT_start_find);
+
WM_operatortype_append(TEXT_OT_to_3d_object);
WM_operatortype_append(TEXT_OT_resolve_conflict);
@@ -233,9 +235,9 @@
wmKeyMapItem *kmi;
keymap = WM_keymap_find(keyconf, "Text Generic", SPACE_TEXT, 0);
- WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_start_find", FKEY, KM_PRESS, KM_CTRL, 0);
#ifdef __APPLE__
- WM_keymap_add_item(keymap, "TEXT_OT_properties", FKEY, KM_PRESS, KM_OSKEY, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_start_find", FKEY, KM_PRESS, KM_OSKEY, 0);
#endif
keymap = WM_keymap_find(keyconf, "Text", SPACE_TEXT, 0);
@@ -515,7 +517,16 @@
static void text_properties_area_draw(const bContext *C, ARegion *ar)
{
+ SpaceText *st = CTX_wm_space_text(C);
+
ED_region_panels(C, ar, 1, NULL, -1);
+
+ /* this flag trick is make sure buttons have been added already */
+ if (st->flags & ST_FIND_ACTIVATE) {
+
+ UI_textbutton_activate_event(C, ar, st, "find_text");
+ st->flags &= ~ST_FIND_ACTIVATE;
+ }
}
/********************* registration ********************/
Modified: trunk/blender/source/blender/editors/space_text/text_header.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_header.c 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/space_text/text_header.c 2013-03-24 13:43:40 UTC (rev 55549)
@@ -113,6 +113,38 @@
ot->poll = text_properties_poll;
}
+static int text_text_search_exec(bContext *C, wmOperator *UNUSED(op))
+{
+ ScrArea *sa = CTX_wm_area(C);
+ ARegion *ar = text_has_properties_region(sa);
+ SpaceText *st = CTX_wm_space_text(C);
+
+ if (ar) {
+ if (ar->flag & RGN_FLAG_HIDDEN)
+ ED_region_toggle_hidden(C, ar);
+
+ /* cannot send a button activate yet for case when region wasn't visible yet */
+ /* flag gets checked and cleared in main draw callback */
+ st->flags |= ST_FIND_ACTIVATE;
+
+ ED_region_tag_redraw(ar);
+ }
+ return OPERATOR_FINISHED;
+}
+
+
+void TEXT_OT_start_find(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name = "Find";
+ ot->description = "Start searching text";
+ ot->idname = "TEXT_OT_start_find";
+
+ /* api callbacks */
+ ot->exec = text_text_search_exec;
+ ot->poll = text_properties_poll;
+}
+
/******************** XXX popup menus *******************/
#if 0
Modified: trunk/blender/source/blender/editors/space_text/text_intern.h
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_intern.h 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/space_text/text_intern.h 2013-03-24 13:43:40 UTC (rev 55549)
@@ -134,11 +134,15 @@
void TEXT_OT_properties(struct wmOperatorType *ot);
+/* find = find indicated text */
void TEXT_OT_find(struct wmOperatorType *ot);
void TEXT_OT_find_set_selected(struct wmOperatorType *ot);
void TEXT_OT_replace(struct wmOperatorType *ot);
void TEXT_OT_replace_set_selected(struct wmOperatorType *ot);
+/* text_find = open properties, activate search button */
+void TEXT_OT_start_find(struct wmOperatorType *ot);
+
void TEXT_OT_to_3d_object(struct wmOperatorType *ot);
void TEXT_OT_resolve_conflict(struct wmOperatorType *ot);
Modified: trunk/blender/source/blender/editors/space_text/text_ops.c
===================================================================
--- trunk/blender/source/blender/editors/space_text/text_ops.c 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/editors/space_text/text_ops.c 2013-03-24 13:43:40 UTC (rev 55549)
@@ -2966,7 +2966,7 @@
void TEXT_OT_find(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Find";
+ ot->name = "Find Next";
ot->idname = "TEXT_OT_find";
ot->description = "Find specified text";
Modified: trunk/blender/source/blender/makesdna/DNA_space_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_space_types.h 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/makesdna/DNA_space_types.h 2013-03-24 13:43:40 UTC (rev 55549)
@@ -840,6 +840,8 @@
ST_FIND_ALL = (1 << 6),
ST_SHOW_MARGIN = (1 << 7),
ST_MATCH_CASE = (1 << 8),
+
+ ST_FIND_ACTIVATE = (1 << 9),
} eSpaceText_Flags;
/* stext->findstr/replacestr */
Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2013-03-24 12:13:13 UTC (rev 55548)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c 2013-03-24 13:43:40 UTC (rev 55549)
@@ -339,7 +339,7 @@
static int wm_event_always_pass(wmEvent *event)
{
/* some events we always pass on, to ensure proper communication */
- return ISTIMER(event->type) || (event->type == WINDEACTIVATE);
+ return ISTIMER(event->type) || (event->type == WINDEACTIVATE) || (event->type == EVT_BUT_OPEN);
}
/* ********************* ui handler ******************* */
More information about the Bf-blender-cvs
mailing list