aboutsummaryrefslogtreecommitdiffstats
path: root/lib/widgets/ephy-location-entry.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/widgets/ephy-location-entry.c')
-rw-r--r--lib/widgets/ephy-location-entry.c31
1 files changed, 14 insertions, 17 deletions
diff --git a/lib/widgets/ephy-location-entry.c b/lib/widgets/ephy-location-entry.c
index b991c6065..8d0a95bf1 100644
--- a/lib/widgets/ephy-location-entry.c
+++ b/lib/widgets/ephy-location-entry.c
@@ -1,3 +1,4 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
* Copyright (C) 2002 Ricardo Fernández Pascual
* Copyright (C) 2003 Marco Pesenti Gritti
@@ -40,7 +41,7 @@ struct _EphyLocationEntryPrivate
GtkWidget *entry;
char *before_completion;
gboolean user_changed;
- gboolean activation_mode;
+ GtkWidget *shown_widget;
guint text_col;
guint action_col;
@@ -153,15 +154,10 @@ ephy_location_entry_class_init (EphyLocationEntryClass *klass)
static void
ephy_location_entry_activation_finished (EphyLocationEntry *entry)
{
- if (entry->priv->activation_mode)
+ if (entry->priv->shown_widget)
{
- GtkWidget *toolbar;
-
- entry->priv->activation_mode = FALSE;
-
- toolbar = gtk_widget_get_ancestor (GTK_WIDGET (entry),
- GTK_TYPE_TOOLBAR);
- gtk_widget_hide (toolbar);
+ gtk_widget_hide (entry->priv->shown_widget);
+ entry->priv->shown_widget = NULL;
}
}
@@ -309,7 +305,7 @@ ephy_location_entry_init (EphyLocationEntry *le)
le->priv = p;
p->user_changed = TRUE;
- p->activation_mode = FALSE;
+ p->shown_widget = NULL;
ephy_location_entry_construct_contents (le);
@@ -407,15 +403,16 @@ ephy_location_entry_get_location (EphyLocationEntry *le)
void
ephy_location_entry_activate (EphyLocationEntry *le)
{
- GtkWidget *toplevel, *toolbar;
-
- toolbar = gtk_widget_get_ancestor (GTK_WIDGET (le), GTK_TYPE_TOOLBAR);
+ GtkWidget *toplevel, *widget;
- if (!GTK_WIDGET_VISIBLE (toolbar))
+ for (widget = GTK_WIDGET (le); widget != NULL; widget = widget->parent)
{
- le->priv->activation_mode = TRUE;
-
- gtk_widget_show (toolbar);
+ if (!GTK_WIDGET_VISIBLE (widget))
+ {
+ le->priv->shown_widget = widget;
+ gtk_widget_show (le->priv->shown_widget);
+ break;
+ }
}
toplevel = gtk_widget_get_toplevel (le->priv->entry);