[vinagre] Fixed clipboard
- From: Jonh Wendell <jwendell src gnome org>
- To: svn-commits-list gnome org
- Subject: [vinagre] Fixed clipboard
- Date: Thu, 28 May 2009 13:09:46 -0400 (EDT)
commit de6bdee50572f135f69f9cae1742127af3e9ea8e
Author: Jonh Wendell <jwendell gnome org>
Date: Thu May 28 14:09:23 2009 -0300
Fixed clipboard
---
src/vinagre-vnc-tab.c | 39 ++++++++++++++++++++++++++++++++++++++
src/vinagre-window-private.h | 2 -
src/vinagre-window.c | 43 ------------------------------------------
3 files changed, 39 insertions(+), 45 deletions(-)
diff --git a/src/vinagre-vnc-tab.c b/src/vinagre-vnc-tab.c
index 6f30579..f731340 100644
--- a/src/vinagre-vnc-tab.c
+++ b/src/vinagre-vnc-tab.c
@@ -40,6 +40,7 @@ struct _VinagreVncTabPrivate
GSList *connected_actions, *initialized_actions;
GtkWidget *viewonly_button, *scaling_button;
GtkAction *scaling_action, *viewonly_action, *original_size_action;
+ gulong signal_clipboard;
};
G_DEFINE_TYPE (VinagreVncTab, vinagre_vnc_tab, VINAGRE_TYPE_TAB)
@@ -169,6 +170,15 @@ vinagre_vnc_tab_dispose (GObject *object)
vnc_tab->priv->initialized_actions = NULL;
}
+ if (vnc_tab->priv->signal_clipboard != 0)
+ {
+ GtkClipboard *cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+
+ g_signal_handler_disconnect (cb,
+ vnc_tab->priv->signal_clipboard);
+ vnc_tab->priv->signal_clipboard = 0;
+ }
+
G_OBJECT_CLASS (vinagre_vnc_tab_parent_class)->dispose (object);
}
@@ -743,9 +753,30 @@ setup_toolbar (VinagreVncTab *vnc_tab)
}
static void
+vnc_tab_clipboard_cb (GtkClipboard *cb, GdkEvent *event, VinagreVncTab *vnc_tab)
+{
+ VinagreTab *tab = VINAGRE_TAB (vnc_tab);
+ gchar *text;
+
+ if (vinagre_notebook_get_active_tab (vinagre_tab_get_notebook (tab)) != tab)
+ return;
+
+ if (VINAGRE_IS_TAB (gtk_clipboard_get_owner (cb)))
+ return;
+
+ text = gtk_clipboard_wait_for_text (cb);
+ if (!text)
+ return;
+
+ vinagre_vnc_tab_paste_text (vnc_tab, text);
+ g_free (text);
+}
+
+static void
vinagre_vnc_tab_init (VinagreVncTab *vnc_tab)
{
GtkAction *action;
+ GtkClipboard *cb;
vnc_tab->priv = VINAGRE_VNC_TAB_GET_PRIVATE (vnc_tab);
vnc_tab->priv->clipboard_str = NULL;
@@ -813,6 +844,14 @@ vinagre_vnc_tab_init (VinagreVncTab *vnc_tab)
G_CALLBACK (vnc_desktop_resize_cb),
vnc_tab);
+ /* Setup the clipboard */
+ cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
+ vnc_tab->priv->signal_clipboard = g_signal_connect (cb,
+ "owner-change",
+ G_CALLBACK (vnc_tab_clipboard_cb),
+ vnc_tab);
+
+
gtk_widget_show_all (GTK_WIDGET (vnc_tab));
}
diff --git a/src/vinagre-window-private.h b/src/vinagre-window-private.h
index aaa2ed5..549fdce 100644
--- a/src/vinagre-window-private.h
+++ b/src/vinagre-window-private.h
@@ -67,8 +67,6 @@ struct _VinagreWindowPrivate
gboolean toolbar_visible;
gboolean statusbar_visible;
gboolean fav_panel_visible;
-
- gulong signal_clipboard;
};
diff --git a/src/vinagre-window.c b/src/vinagre-window.c
index f880718..00d6295 100644
--- a/src/vinagre-window.c
+++ b/src/vinagre-window.c
@@ -66,15 +66,6 @@ vinagre_window_dispose (GObject *object)
window->priv->manager = NULL;
}
- if (window->priv->signal_clipboard != 0)
- {
- GtkClipboard *cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
-
- g_signal_handler_disconnect (cb,
- window->priv->signal_clipboard);
- window->priv->signal_clipboard = 0;
- }
-
if (window->priv->update_recents_menu_ui_id != 0)
{
GtkRecentManager *recent_manager = gtk_recent_manager_get_default ();
@@ -769,39 +760,6 @@ create_notebook (VinagreWindow *window)
gtk_widget_show (GTK_WIDGET (window->priv->notebook));
}
-/*
-static void
-vinagre_window_clipboard_cb (GtkClipboard *cb, GdkEvent *event, VinagreWindow *window)
-{
- gchar *text;
-
- if (!window->priv->active_tab)
- return;
-
- if (gtk_clipboard_get_owner (cb) == G_OBJECT (window->priv->active_tab))
- return;
-
- text = gtk_clipboard_wait_for_text (cb);
- if (!text)
- return;
-
-// vinagre_tab_paste_text (VINAGRE_TAB (window->priv->active_tab), text);
- g_free (text);
-}
-
-static void
-vinagre_window_init_clipboard (VinagreWindow *window)
-{
- GtkClipboard *cb;
-
- cb = gtk_clipboard_get (GDK_SELECTION_CLIPBOARD);
- window->priv->signal_clipboard = g_signal_connect (cb,
- "owner-change",
- G_CALLBACK (vinagre_window_clipboard_cb),
- window);
-}
-*/
-
static void
vinagre_window_init (VinagreWindow *window)
{
@@ -855,7 +813,6 @@ vinagre_window_init (VinagreWindow *window)
G_CALLBACK (vinagre_window_update_bookmarks_list_menu),
window);
#endif
- //vinagre_window_init_clipboard (window);
}
VinagreNotebook *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]