diff options
author | Xan Lopez <xan@src.gnome.org> | 2007-11-12 07:22:34 +0800 |
---|---|---|
committer | Xan Lopez <xan@src.gnome.org> | 2007-11-12 07:22:34 +0800 |
commit | de2c912fc1e7a43022933d03e095af3fcb90b775 (patch) | |
tree | 70f5860d3b5dbed7d70503350bc9c69c0aad9209 /embed | |
parent | a212aa82d4a2ceed4079543269f39c87dd35dbe0 (diff) | |
download | gsoc2013-epiphany-de2c912fc1e7a43022933d03e095af3fcb90b775.tar.gz gsoc2013-epiphany-de2c912fc1e7a43022933d03e095af3fcb90b775.tar.zst gsoc2013-epiphany-de2c912fc1e7a43022933d03e095af3fcb90b775.zip |
Implement grab_focus in EphyBaseEmbed.
We still need a custom implementation in MozillaEmbed because
the child of the embed won't exist until the widget is realized,
so there is no point in grabbing focus until then.
svn path=/trunk/; revision=7668
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-base-embed.c | 12 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 32 | ||||
-rw-r--r-- | embed/webkit/webkit-embed.cpp | 7 |
3 files changed, 26 insertions, 25 deletions
diff --git a/embed/ephy-base-embed.c b/embed/ephy-base-embed.c index aa82ed284..79e7146f3 100644 --- a/embed/ephy-base-embed.c +++ b/embed/ephy-base-embed.c @@ -147,6 +147,17 @@ ephy_base_embed_size_allocate (GtkWidget *widget, } static void +ephy_base_embed_grab_focus (GtkWidget *widget) +{ + GtkWidget *child; + + child = gtk_bin_get_child (GTK_BIN (widget)); + + if (child) + gtk_widget_grab_focus (child); +} + +static void impl_set_typed_address (EphyEmbed *embed, const char *address, EphyEmbedAddressExpire expire) @@ -367,6 +378,7 @@ ephy_base_embed_class_init (EphyBaseEmbedClass *klass) widget_class->size_request = ephy_base_embed_size_request; widget_class->size_allocate = ephy_base_embed_size_allocate; + widget_class->grab_focus = ephy_base_embed_grab_focus; g_object_class_install_property (gobject_class, PROP_SECURITY, diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index 6a2af9279..6470a739d 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -145,23 +145,6 @@ G_DEFINE_TYPE_WITH_CODE (MozillaEmbed, mozilla_embed, EPHY_TYPE_BASE_EMBED, ephy_command_manager_iface_init)) static void -mozilla_embed_grab_focus (GtkWidget *widget) -{ - GtkWidget *child; - - child = gtk_bin_get_child (GTK_BIN (widget)); - - if (child != NULL) - { - gtk_widget_grab_focus (child); - } - else - { - g_warning ("Need to realize the embed before grabbing focus!\n"); - } -} - -static void impl_close (EphyEmbed *embed) { MozillaEmbedPrivate *mpriv = MOZILLA_EMBED (embed)->priv; @@ -223,6 +206,19 @@ mozilla_embed_size_allocate (GtkWidget *widget, } static void +mozilla_embed_grab_focus (GtkWidget *widget) +{ + GtkWidget *child; + + child = gtk_bin_get_child (GTK_BIN (widget)); + + if (child && GTK_WIDGET_REALIZED (child)) + gtk_widget_grab_focus (child); + else + g_warning ("Need to realize the embed before grabbing focus!\n"); +} + +static void mozilla_embed_class_init (MozillaEmbedClass *klass) { GObjectClass *object_class = G_OBJECT_CLASS (klass); @@ -234,9 +230,9 @@ mozilla_embed_class_init (MozillaEmbedClass *klass) gtk_object_class->destroy = mozilla_embed_destroy; - widget_class->grab_focus = mozilla_embed_grab_focus; widget_class->realize = mozilla_embed_realize; widget_class->size_allocate = mozilla_embed_size_allocate; + widget_class->grab_focus = mozilla_embed_grab_focus; g_type_class_add_private (object_class, sizeof(MozillaEmbedPrivate)); } diff --git a/embed/webkit/webkit-embed.cpp b/embed/webkit/webkit-embed.cpp index 63457dfe1..cbd9bb8ed 100644 --- a/embed/webkit/webkit-embed.cpp +++ b/embed/webkit/webkit-embed.cpp @@ -88,11 +88,6 @@ G_DEFINE_TYPE_WITH_CODE (WebKitEmbed, webkit_embed, EPHY_TYPE_BASE_EMBED, ephy_command_manager_iface_init)) static void -webkit_embed_grab_focus (GtkWidget *widget) -{ -} - -static void impl_close (EphyEmbed *embed) { gtk_widget_destroy (GTK_WIDGET (embed)); @@ -194,8 +189,6 @@ webkit_embed_class_init (WebKitEmbedClass *klass) gtk_object_class->destroy = webkit_embed_destroy; - widget_class->grab_focus = webkit_embed_grab_focus; - g_type_class_add_private (object_class, sizeof(WebKitEmbedPrivate)); } |