summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extensions/cookie-manager/cookie-manager-page.c6
-rw-r--r--katze/gtk3-compat.c33
-rw-r--r--midori/midori-locationaction.c5
3 files changed, 38 insertions, 6 deletions
diff --git a/extensions/cookie-manager/cookie-manager-page.c b/extensions/cookie-manager/cookie-manager-page.c
index 60b5c54e..b42a219f 100644
--- a/extensions/cookie-manager/cookie-manager-page.c
+++ b/extensions/cookie-manager/cookie-manager-page.c
@@ -163,7 +163,7 @@ static void cookie_manager_page_cookies_changed_cb(CookieManager *cm, CookieMana
g_object_unref(priv->filter);
/* if a filter is set, apply it again but ignore the place holder text */
- if (!g_object_get_data (G_OBJECT (priv->filter_entry), "sokoke_has_default"))
+ if (!g_object_get_data (G_OBJECT (priv->filter_entry), "sokoke_showing_default"))
{
filter_text = gtk_entry_get_text(GTK_ENTRY(priv->filter_entry));
if (*filter_text != '\0')
@@ -575,7 +575,7 @@ static void cm_button_delete_all_clicked_cb(GtkToolButton *button, CookieManager
if (toplevel != NULL)
gtk_window_set_icon_name(GTK_WINDOW(dialog), gtk_window_get_icon_name(GTK_WINDOW(toplevel)));
- if (!g_object_get_data (G_OBJECT (priv->filter_entry), "sokoke_has_default"))
+ if (!g_object_get_data (G_OBJECT (priv->filter_entry), "sokoke_showing_default"))
{
filter_text = gtk_entry_get_text(GTK_ENTRY(priv->filter_entry));
if (*filter_text != '\0')
@@ -808,7 +808,7 @@ static void cm_filter_entry_changed_cb(GtkEditable *editable, CookieManagerPage
if (priv->ignore_changed_filter)
return;
- if (!g_object_get_data (G_OBJECT (editable), "sokoke_has_default"))
+ if (!g_object_get_data (G_OBJECT (editable), "sokoke_showing_default"))
text = gtk_entry_get_text(GTK_ENTRY(editable));
else
text = NULL;
diff --git a/katze/gtk3-compat.c b/katze/gtk3-compat.c
index 4a15ba14..d8a37f2e 100644
--- a/katze/gtk3-compat.c
+++ b/katze/gtk3-compat.c
@@ -166,17 +166,44 @@ sokoke_on_entry_drag_drop (GtkEntry* entry,
return FALSE;
}
+static void
+sokoke_on_entry_popup (GtkEntry *entry,
+ GtkWidget *popup,
+ gpointer user_data)
+{
+ /* If the user selects paste in the popup, we should hide the default
+ when the menu closes so it pastes into a clean entry */
+ g_signal_connect_swapped (popup, "destroy", G_CALLBACK (
+ sokoke_hide_placeholder_text), entry);
+}
+
void
gtk_entry_set_placeholder_text (GtkEntry* entry,
const gchar* default_text)
{
/* Note: The default text initially overwrites any previous text */
- gchar* old_value = g_object_get_data (G_OBJECT (entry), "sokoke_default_text");
+ gchar* old_default_text = g_object_get_data (G_OBJECT (entry), "sokoke_default_text");
g_object_set_data (G_OBJECT (entry), "sokoke_default_text", (gpointer)default_text);
if (default_text == NULL)
+ {
g_object_set_data (G_OBJECT (entry), "sokoke_showing_default", GINT_TO_POINTER (0));
- else if (!old_value)
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_drag_motion), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_focus_in_event), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_drag_leave), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_drag_drop), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_focus_out_event), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_text_changed), NULL);
+ g_signal_handlers_disconnect_by_func (entry,
+ G_CALLBACK (sokoke_on_entry_popup), NULL);
+ }
+ else if (old_default_text == NULL)
{
g_object_set_data (G_OBJECT (entry), "sokoke_showing_default", GINT_TO_POINTER (1));
sokoke_widget_set_pango_font_style (GTK_WIDGET (entry), PANGO_STYLE_ITALIC);
@@ -193,6 +220,8 @@ gtk_entry_set_placeholder_text (GtkEntry* entry,
G_CALLBACK (sokoke_on_entry_focus_out_event), NULL);
g_signal_connect (entry, "notify::text",
G_CALLBACK (sokoke_on_entry_text_changed), NULL);
+ g_signal_connect (entry, "populate-popup",
+ G_CALLBACK (sokoke_on_entry_popup), NULL);
}
else if (!gtk_widget_has_focus (GTK_WIDGET (entry)))
{
diff --git a/midori/midori-locationaction.c b/midori/midori-locationaction.c
index db64b953..e983cbab 100644
--- a/midori/midori-locationaction.c
+++ b/midori/midori-locationaction.c
@@ -981,7 +981,10 @@ static void
midori_location_action_changed_cb (GtkEntry* entry,
MidoriLocationAction* location_action)
{
- katze_assign (location_action->text, g_strdup (gtk_entry_get_text (entry)));
+ if (g_object_get_data (G_OBJECT (entry), "sokoke_showing_default"))
+ katze_assign (location_action->text, g_strdup (""));
+ else
+ katze_assign (location_action->text, g_strdup (gtk_entry_get_text (entry)));
}
static void