Updating branch refs/heads/master
         to e9ca8d69ee6af4d8d46702150a62ab56722d3ce3 (commit)
       from 1639ea66b46164409902354c6ba9458bd9798789 (commit)

commit e9ca8d69ee6af4d8d46702150a62ab56722d3ce3
Author: Enrico Tröger <enrico.troe...@uvena.de>
Date:   Fri Sep 16 13:41:16 2011 +0200

    Render the Find menu item in the textview popup menu insensitive when there 
is no text to search

 lib/gui.c |   42 ++++++++++++++++++++++++++++++++++++------
 1 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/lib/gui.c b/lib/gui.c
index efed441..485c110 100644
--- a/lib/gui.c
+++ b/lib/gui.c
@@ -242,7 +242,7 @@ static gboolean textview_visibility_notify_event(GtkWidget 
*text_view, GdkEventV
 }
 
 
-static void textview_popup_search_item_cb(GtkWidget *widget, DictData *dd)
+static gchar *textview_get_text_at_cursor(DictData *dd)
 {
        gchar *word;
        GtkTextIter start, end;
@@ -268,11 +268,40 @@ static void textview_popup_search_item_cb(GtkWidget 
*widget, DictData *dd)
 
        word = gtk_text_buffer_get_text(dd->main_textbuffer, &start, &end, 
FALSE);
 
-       gtk_entry_set_text(GTK_ENTRY(dd->main_entry), word);
-       dict_search_word(dd, word);
-       gtk_widget_grab_focus(dd->main_entry);
+       return word;
+}
+
+
+static void textview_popup_search_item_cb(GtkWidget *widget, DictData *dd)
+{
+       gchar *word;
+
+       word = textview_get_text_at_cursor(dd);
+
+       if (word != NULL)
+       {
+               gtk_entry_set_text(GTK_ENTRY(dd->main_entry), word);
+               dict_search_word(dd, word);
+               gtk_widget_grab_focus(dd->main_entry);
 
-       g_free(word);
+               g_free(word);
+       }
+}
+
+
+static gboolean textview_is_text_at_cursor(DictData *dd)
+{
+       gchar *text;
+
+       text = textview_get_text_at_cursor(dd);
+       if (text != NULL)
+       {
+               gboolean non_empty_text = NZV(text);
+               g_free(text);
+               return non_empty_text;
+       }
+       else
+               return FALSE;
 }
 
 
@@ -321,10 +350,11 @@ static void textview_populate_popup_cb(GtkTextView 
*textview, GtkMenu *menu, Dic
 
        gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(copy_link), 
copy_link_image);
        gtk_widget_show(copy_link);
-       gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), copy_link);
        gtk_widget_set_sensitive(GTK_WIDGET(copy_link), 
textview_is_hyperlink_at_cursor(dd));
+       gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), copy_link);
 
        gtk_widget_show(search);
+       gtk_widget_set_sensitive(GTK_WIDGET(search), 
textview_is_text_at_cursor(dd));
        gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), search);
 
        g_signal_connect(search, "activate", 
G_CALLBACK(textview_popup_search_item_cb), dd);
_______________________________________________
Xfce4-commits mailing list
Xfce4-commits@xfce.org
https://mail.xfce.org/mailman/listinfo/xfce4-commits

Reply via email to