diff options
-rw-r--r-- | extensions/cookie-manager/cookie-manager-page.c | 6 | ||||
-rw-r--r-- | katze/gtk3-compat.c | 33 | ||||
-rw-r--r-- | midori/midori-locationaction.c | 5 |
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 |