gnome-terminal r2544 - trunk/src
- From: chpe svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-terminal r2544 - trunk/src
- Date: Fri, 11 Apr 2008 22:22:12 +0100 (BST)
Author: chpe
Date: Fri Apr 11 22:22:12 2008
New Revision: 2544
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2544&view=rev
Log:
Only request the clipbaord targets, not the contents. Bug #523010, patch by Ted X Toth.
Modified:
trunk/src/terminal-window.c
Modified: trunk/src/terminal-window.c
==============================================================================
--- trunk/src/terminal-window.c (original)
+++ trunk/src/terminal-window.c Fri Apr 11 22:22:12 2008
@@ -657,14 +657,19 @@
static void
update_edit_menu (GtkClipboard *clipboard,
- const gchar *text,
+ GtkSelectionData *data,
TerminalWindow *window)
{
TerminalWindowPrivate *priv = window->priv;
GtkAction *action;
+ gboolean can_paste;
+ can_paste = gtk_selection_data_targets_include_text (data);
action = gtk_action_group_get_action (priv->action_group, "EditPaste");
- gtk_action_set_sensitive (action, text != NULL);
+ gtk_action_set_sensitive (action, can_paste);
+
+ /* Ref was added in gtk_clipboard_request_contents below */
+ g_object_unref (window);
}
static void
@@ -682,7 +687,10 @@
TerminalWindow *window = (TerminalWindow *) user_data;
TerminalWindowPrivate *priv = window->priv;
- gtk_clipboard_request_text (priv->clipboard, (GtkClipboardTextReceivedFunc) update_edit_menu, window);
+ gtk_clipboard_request_contents (priv->clipboard,
+ gdk_atom_intern_static_string ("TARGETS"),
+ (GtkClipboardReceivedFunc) update_edit_menu,
+ g_object_ref (window));
}
static void
@@ -896,16 +904,15 @@
static void
popup_clipboard_request_callback (GtkClipboard *clipboard,
- const char *text,
- gpointer user_data)
+ GtkSelectionData *data,
+ TerminalScreenPopupInfo *info)
{
- TerminalScreenPopupInfo *info = user_data;
TerminalWindow *window = info->window;
TerminalWindowPrivate *priv = window->priv;
TerminalScreen *screen = info->screen;
GtkWidget *popup_menu, *im_menu, *im_menu_item;
GtkAction *action;
- gboolean show_link, show_email_link, show_input_method_menu;
+ gboolean can_paste, show_link, show_email_link, show_input_method_menu;
remove_popup_info (window);
@@ -917,6 +924,7 @@
priv->popup_info = info; /* adopt the ref added when requesting the clipboard */
+ can_paste = gtk_selection_data_targets_include_text (data);
show_link = info->string != NULL && info->flavour != FLAVOR_EMAIL;
show_email_link = info->string != NULL && info->flavour == FLAVOR_EMAIL;
@@ -937,7 +945,7 @@
action = gtk_action_group_get_action (priv->action_group, "PopupCopy");
gtk_action_set_sensitive (action, terminal_screen_get_text_selected (screen));
action = gtk_action_group_get_action (priv->action_group, "PopupPaste");
- gtk_action_set_sensitive (action, text != NULL);
+ gtk_action_set_sensitive (action, can_paste);
g_object_get (gtk_widget_get_settings (GTK_WIDGET (window)),
"gtk-show-input-method-menu", &show_input_method_menu,
@@ -987,8 +995,10 @@
g_return_if_fail (info->window == window);
clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window), GDK_NONE /* FIXMEchpe ? */);
- gtk_clipboard_request_text (clipboard, popup_clipboard_request_callback,
- terminal_screen_popup_info_ref (info));
+ gtk_clipboard_request_contents (clipboard,
+ gdk_atom_intern_static_string("TARGETS"),
+ (GtkClipboardReceivedFunc) popup_clipboard_request_callback,
+ terminal_screen_popup_info_ref (info));
}
/*****************************************/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]