[geany/geany] 218458: Merge pull request #1200 from b4n/terminal-focus
Colomban Wendling
git-noreply at geany.org
Fri Oct 21 12:47:26 UTC 2016
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Fri, 21 Oct 2016 12:47:26 UTC
Commit: 21845805c696ecb95f7f970f55e472b9b62422c8
https://github.com/geany/geany/commit/21845805c696ecb95f7f970f55e472b9b62422c8
Log Message:
-----------
Merge pull request #1200 from b4n/terminal-focus
Fix focusing the Terminal tab in the message window
Modified Paths:
--------------
src/keybindings.c
Modified: src/keybindings.c
33 lines changed, 31 insertions(+), 2 deletions(-)
===================================================================
@@ -1738,14 +1738,43 @@ static void focus_sidebar(void)
}
+static GtkWidget *find_focus_widget(GtkWidget *widget)
+{
+ GtkWidget *focus = NULL;
+
+ if (GTK_IS_BIN(widget)) /* optimized simple case */
+ focus = find_focus_widget(gtk_bin_get_child(GTK_BIN(widget)));
+ else if (GTK_IS_CONTAINER(widget))
+ {
+ GList *children = gtk_container_get_children(GTK_CONTAINER(widget));
+ GList *node;
+
+ for (node = children; node && ! focus; node = node->next)
+ focus = find_focus_widget(node->data);
+ g_list_free(children);
+ }
+
+ /* Some containers handled above might not have children and be what we want to focus
+ * (e.g. GtkTreeView), so focus that if possible and we don't have anything better */
+ if (! focus && gtk_widget_get_can_focus(widget))
+ focus = widget;
+
+ return focus;
+}
+
+
static void focus_msgwindow(void)
{
if (ui_prefs.msgwindow_visible)
{
gint page_num = gtk_notebook_get_current_page(GTK_NOTEBOOK(msgwindow.notebook));
- GtkWidget *page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(msgwindow.notebook), page_num);
+ GtkWidget *widget = gtk_notebook_get_nth_page(GTK_NOTEBOOK(msgwindow.notebook), page_num);
- gtk_widget_grab_focus(gtk_bin_get_child(GTK_BIN(page)));
+ widget = find_focus_widget(widget);
+ if (widget)
+ gtk_widget_grab_focus(widget);
+ else
+ utils_beep();
}
}
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list