--- gtk/gtktextview.c.orig 2004-04-05 16:07:03.057897992 -0500 +++ gtk/gtktextview.c.orig 2004-04-05 16:10:04.862259528 -0500 @@ -6736,6 +6736,14 @@ } static void +clear_cb (GtkTextView *text_view) +{ + GtkTextIter buf_start, buf_end; + gtk_text_buffer_get_bounds(get_buffer (text_view), &buf_start, &buf_end); + gtk_text_buffer_delete(get_buffer (text_view), &buf_start, &buf_end); +} + +static void popup_menu_detach (GtkWidget *attach_widget, GtkMenu *menu) { @@ -6862,7 +6870,7 @@ gboolean can_insert; GtkTextIter iter; GtkTextIter sel_start, sel_end; - + GtkTextIter buf_start, buf_end; if (text_view->popup_menu) gtk_widget_destroy (text_view->popup_menu); @@ -6879,6 +6887,7 @@ &iter, gtk_text_buffer_get_insert (get_buffer (text_view))); + gtk_text_buffer_get_bounds (get_buffer(text_view), &buf_start, &buf_end); can_insert = gtk_text_iter_can_insert (&iter, text_view->editable); append_action_signal (text_view, text_view->popup_menu, GTK_STOCK_CUT, "cut_clipboard", @@ -6900,6 +6909,19 @@ gtk_widget_show (menuitem); gtk_menu_shell_append (GTK_MENU_SHELL (text_view->popup_menu), menuitem); + if (g_getenv ("GTK_SUPERFLUOUS_ADDITIONS") != NULL) + { + menuitem = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL); + gtk_widget_set_sensitive (menuitem, + range_contains_editable_text (&buf_start, + &buf_end, + text_view->editable)); + g_signal_connect_swapped (menuitem, "activate", + G_CALLBACK (clear_cb), text_view); + gtk_widget_show (menuitem); + gtk_menu_shell_append (GTK_MENU_SHELL (text_view->popup_menu), menuitem); + } + menuitem = gtk_separator_menu_item_new (); gtk_widget_show (menuitem); gtk_menu_shell_append (GTK_MENU_SHELL (text_view->popup_menu), menuitem);