[Xfce4-commits] <midori:master> Consistently focus the view, which propagates
Christian Dywan
noreply at xfce.org
Thu May 6 22:54:01 CEST 2010
Updating branch refs/heads/master
to affde90e2c87902437163513a6c32c4bc73d81d1 (commit)
from 896404ba756f65c3c0a851133764df927c9f06b9 (commit)
commit affde90e2c87902437163513a6c32c4bc73d81d1
Author: Christian Dywan <christian at twotoasts.de>
Date: Thu May 6 22:27:29 2010 +0200
Consistently focus the view, which propagates
Rather than trying to determine and focus the web view
from different places, the parent view should simply
propagate focus by default. The child needs to be
constructed implicitly if focus comes in early.
midori/midori-browser.c | 17 ++++-------------
midori/midori-view.c | 22 ++++++++++++++++++++++
2 files changed, 26 insertions(+), 13 deletions(-)
diff --git a/midori/midori-browser.c b/midori/midori-browser.c
index 93734a7..85440e0 100644
--- a/midori/midori-browser.c
+++ b/midori/midori-browser.c
@@ -2667,9 +2667,7 @@ _midori_browser_find_done (MidoriBrowser* browser)
midori_view_unmark_text_matches (MIDORI_VIEW (view));
gtk_widget_hide (browser->find);
browser->find_typing = FALSE;
- gtk_window_set_focus (GTK_WINDOW (browser),
- midori_view_get_web_view (MIDORI_VIEW (view)) ?
- midori_view_get_web_view (MIDORI_VIEW (view)) : view);
+ gtk_window_set_focus (GTK_WINDOW (browser), view);
}
static void
@@ -5024,8 +5022,7 @@ _action_tab_current_activate (GtkAction* action,
MidoriBrowser* browser)
{
GtkWidget* view = midori_browser_get_current_tab (browser);
- GtkWidget* child = midori_view_get_web_view (MIDORI_VIEW (view));
- gtk_widget_grab_focus (child ? child : view);
+ gtk_widget_grab_focus (view);
}
static const gchar* credits_authors[] =
@@ -7560,14 +7557,11 @@ midori_browser_set_current_page (MidoriBrowser* browser,
gint n)
{
GtkWidget* view;
- GtkWidget* web_view;
gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), n);
view = gtk_notebook_get_nth_page (GTK_NOTEBOOK (browser->notebook), n);
- if (view && midori_view_is_blank (MIDORI_VIEW (view)))
+ if (midori_view_is_blank (MIDORI_VIEW (view)))
gtk_action_activate (_action_by_name (browser, "Location"));
- else if ((web_view = midori_view_get_web_view (MIDORI_VIEW (view))))
- gtk_widget_grab_focus (web_view);
else
gtk_widget_grab_focus (view);
}
@@ -7626,17 +7620,14 @@ midori_browser_set_current_tab (MidoriBrowser* browser,
GtkWidget* view)
{
gint n;
- GtkWidget* web_view;
g_return_if_fail (MIDORI_IS_BROWSER (browser));
g_return_if_fail (GTK_IS_WIDGET (view));
n = gtk_notebook_page_num (GTK_NOTEBOOK (browser->notebook), view);
gtk_notebook_set_current_page (GTK_NOTEBOOK (browser->notebook), n);
- if (view && midori_view_is_blank (MIDORI_VIEW (view)))
+ if (midori_view_is_blank (MIDORI_VIEW (view)))
gtk_action_activate (_action_by_name (browser, "Location"));
- else if ((web_view = midori_view_get_web_view (MIDORI_VIEW (view))))
- gtk_widget_grab_focus (web_view);
else
gtk_widget_grab_focus (view);
}
diff --git a/midori/midori-view.c b/midori/midori-view.c
index cdfd15a..b9bf397 100644
--- a/midori/midori-view.c
+++ b/midori/midori-view.c
@@ -225,6 +225,10 @@ midori_view_get_property (GObject* object,
GValue* value,
GParamSpec* pspec);
+static gboolean
+midori_view_focus_in_event (GtkWidget* widget,
+ GdkEventFocus* event);
+
static void
midori_view_settings_notify_cb (MidoriWebSettings* settings,
GParamSpec* pspec,
@@ -243,6 +247,7 @@ static void
midori_view_class_init (MidoriViewClass* class)
{
GObjectClass* gobject_class;
+ GtkWidgetClass* gtkwidget_class;
GParamFlags flags;
signals[ACTIVATE_ACTION] = g_signal_new (
@@ -439,6 +444,9 @@ midori_view_class_init (MidoriViewClass* class)
gobject_class->set_property = midori_view_set_property;
gobject_class->get_property = midori_view_get_property;
+ gtkwidget_class = GTK_WIDGET_CLASS (class);
+ gtkwidget_class->focus_in_event = midori_view_focus_in_event;
+
flags = G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS;
g_object_class_install_property (gobject_class,
@@ -2988,6 +2996,20 @@ midori_view_get_property (GObject* object,
}
}
+static gboolean
+midori_view_focus_in_event (GtkWidget* widget,
+ GdkEventFocus* event)
+{
+ MidoriView* view = MIDORI_VIEW (widget);
+
+ /* Always propagate focus to the child web view,
+ * create it if it's not there yet. */
+ if (!view->web_view)
+ midori_view_construct_web_view (view);
+ gtk_widget_grab_focus (view->web_view);
+ return TRUE;
+}
+
/**
* midori_view_new:
* @net: a #KatzeNet
More information about the Xfce4-commits
mailing list