View | Details | Raw Unified | Return to bug 188264 | Differences between
and this patch

Collapse All | Expand All

(-)x11-toolkits/gtk30/Makefile (-1 / +3 lines)
Lines 52-58 GLIB_SCHEMAS= org.gtk.Demo.gschema.xml \ Link Here
52
		org.gtk.Settings.FileChooser.gschema.xml \
52
		org.gtk.Settings.FileChooser.gschema.xml \
53
		org.gtk.exampleapp.gschema.xml
53
		org.gtk.exampleapp.gschema.xml
54
54
55
OPTIONS_DEFINE=	CUPS CLOUDPRINT COLORD DEBUG
55
OPTIONS_DEFINE=	CUPS CLOUDPRINT COLORD DEBUG SHIFT_INSERT
56
OPTIONS_DEFAULT=CUPS COLORD
56
OPTIONS_DEFAULT=CUPS COLORD
57
OPTIONS_SUB=	yes
57
OPTIONS_SUB=	yes
58
COLORD_DESC=	Color profile support
58
COLORD_DESC=	Color profile support
Lines 65-70 CLOUDPRINT_CONFIGURE_ENABLE= cloudprint Link Here
65
CLOUDPRINT_LIB_DEPENDS=	librest-0.7.so:${PORTSDIR}/devel/librest \
65
CLOUDPRINT_LIB_DEPENDS=	librest-0.7.so:${PORTSDIR}/devel/librest \
66
			libjson-glib-1.0.so:${PORTSDIR}/devel/json-glib
66
			libjson-glib-1.0.so:${PORTSDIR}/devel/json-glib
67
DEBUG_CONFIGURE_ENABLE=debug
67
DEBUG_CONFIGURE_ENABLE=debug
68
SHIFT_INSERT_DESC=	Use Shift-Insert to paste primary selection
69
SHIFT_INSERT_EXTRA_PATCHES= ${FILESDIR}/extra-patch-shift-insert
68
70
69
# needed for the exists() check, booo
71
# needed for the exists() check, booo
70
.include <bsd.port.options.mk>
72
.include <bsd.port.options.mk>
(-)x11-toolkits/gtk30/files/extra-patch-shift-insert (+24 lines)
Line 0 Link Here
1
--- gtk/gtktextview.c~
2
+++ gtk/gtktextview.c
3
@@ -1461,7 +1484,8 @@ G_GNUC_END_IGNORE_DEPRECATIONS
4
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK,
5
 				"copy-clipboard", 0);
6
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
7
-				"paste-clipboard", 0);
8
+				"paste-selection", 1,
9
+				G_TYPE_STRING, "primary");
10
 
11
   /* Overwrite */
12
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0,
13
--- gtk/gtkentry.c~
14
+++ gtk/gtkentry.c
15
@@ -2020,7 +2043,8 @@ gtk_entry_class_init (GtkEntryClass *cla
16
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK,
17
 				"copy-clipboard", 0);
18
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
19
-				"paste-clipboard", 0);
20
+				"paste-selection", 1,
21
+				G_TYPE_STRING, "primary");
22
 
23
   /* Overwrite */
24
   gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0,
(-)x11-toolkits/gtk30/files/patch-gnome-bug643391 (+230 lines)
Line 0 Link Here
1
From bdaf004097e65a424d244d6cf73dfe8f241e0fcc Mon Sep 17 00:00:00 2001
2
From: Andy Spencer <andy753421@gmail.com>
3
Date: Sun, 27 Feb 2011 01:52:06 +0000
4
Subject: [PATCH 1/1] Add "paste-selection" keybind signal
5
6
This allows (re)binding a key to paste the PRIMARY and/or SECONDARY
7
selections under X11.
8
---
9
 gtk/gtkentry.c    |   44 ++++++++++++++++++++++++++++++++++++++++++++
10
 gtk/gtkentry.h    |    4 +++-
11
 gtk/gtktextview.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
12
 gtk/gtktextview.h |    4 +++-
13
 4 files changed, 98 insertions(+), 2 deletions(-)
14
15
diff --git a/gtk/gtkentry.c b/gtk/gtkentry.c
16
index 4dacb7d..447901b 100644
17
--- gtk/gtkentry.c
18
+++ gtk/gtkentry.c
19
@@ -256,6 +256,7 @@ enum {
20
   CUT_CLIPBOARD,
21
   COPY_CLIPBOARD,
22
   PASTE_CLIPBOARD,
23
+  PASTE_SELECTION,
24
   TOGGLE_OVERWRITE,
25
   ICON_PRESS,
26
   ICON_RELEASE,
27
@@ -475,6 +476,8 @@ static void gtk_entry_backspace          (GtkEntry        *entry);
28
 static void gtk_entry_cut_clipboard      (GtkEntry        *entry);
29
 static void gtk_entry_copy_clipboard     (GtkEntry        *entry);
30
 static void gtk_entry_paste_clipboard    (GtkEntry        *entry);
31
+static void gtk_entry_paste_selection    (GtkEntry        *entry,
32
+					  const gchar     *which);
33
 static void gtk_entry_toggle_overwrite   (GtkEntry        *entry);
34
 static void gtk_entry_select_all         (GtkEntry        *entry);
35
 static void gtk_entry_real_activate      (GtkEntry        *entry);
36
@@ -707,6 +710,7 @@ gtk_entry_class_init (GtkEntryClass *class)
37
   class->cut_clipboard = gtk_entry_cut_clipboard;
38
   class->copy_clipboard = gtk_entry_copy_clipboard;
39
   class->paste_clipboard = gtk_entry_paste_clipboard;
40
+  class->paste_selection = gtk_entry_paste_selection;
41
   class->toggle_overwrite = gtk_entry_toggle_overwrite;
42
   class->activate = gtk_entry_real_activate;
43
   class->get_text_area_size = gtk_entry_get_text_area_size;
44
@@ -1581,6 +1585,25 @@ gtk_entry_class_init (GtkEntryClass *class)
45
 		  G_TYPE_NONE, 0);
46
 
47
   /**
48
+   * GtkEntry::paste-selection:
49
+   * @entry: the object which received the signal
50
+   *
51
+   * The ::paste-selection signal is a
52
+   * <link linkend="keybinding-signals">keybinding signal</link>
53
+   * which gets emitted to paste the contents of the given selection
54
+   * into the entry.
55
+   */
56
+  signals[PASTE_SELECTION] =
57
+    g_signal_new (I_("paste-selection"),
58
+		  G_OBJECT_CLASS_TYPE (gobject_class),
59
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
60
+		  G_STRUCT_OFFSET (GtkEntryClass, paste_selection),
61
+		  NULL, NULL,
62
+		  _gtk_marshal_VOID__STRING,
63
+		  G_TYPE_NONE, 1,
64
+		  G_TYPE_STRING);
65
+
66
+  /**
67
    * GtkEntry::toggle-overwrite:
68
    * @entry: the object which received the signal
69
    *
70
@@ -5112,6 +5135,27 @@ gtk_entry_paste_clipboard (GtkEntry *entry)
71
 }
72
 
73
 static void
74
+gtk_entry_paste_selection (GtkEntry *entry,
75
+			   const gchar *which)
76
+{
77
+  GtkEntryPrivate *priv = entry->priv;
78
+
79
+  if (priv->editable)
80
+    {
81
+      if (g_str_equal(which, "primary"))
82
+	gtk_entry_paste (entry, GDK_SELECTION_PRIMARY);
83
+      else if (g_str_equal(which, "secondary"))
84
+	gtk_entry_paste (entry, GDK_SELECTION_SECONDARY);
85
+      else if (g_str_equal(which, "clipboard"))
86
+	gtk_entry_paste (entry, GDK_SELECTION_CLIPBOARD);
87
+      else
88
+	gtk_widget_error_bell (GTK_WIDGET (entry));
89
+    }
90
+  else
91
+    gtk_widget_error_bell (GTK_WIDGET (entry));
92
+}
93
+
94
+static void
95
 gtk_entry_delete_cb (GtkEntry *entry)
96
 {
97
   GtkEntryPrivate *priv = entry->priv;
98
diff --git a/gtk/gtkentry.h b/gtk/gtkentry.h
99
index 3bd37d3..5a7877c 100644
100
--- gtk/gtkentry.h
101
+++ gtk/gtkentry.h
102
@@ -117,6 +117,9 @@ struct _GtkEntryClass
103
 			       gint           *width,
104
 			       gint           *height);
105
 
106
+  void (* paste_selection)    (GtkEntry             *entry,
107
+			       const gchar          *which);
108
+
109
   /* Padding for future expansion */
110
   void (*_gtk_reserved1)      (void);
111
   void (*_gtk_reserved2)      (void);
112
@@ -124,7 +127,6 @@ struct _GtkEntryClass
113
   void (*_gtk_reserved4)      (void);
114
   void (*_gtk_reserved5)      (void);
115
   void (*_gtk_reserved6)      (void);
116
-  void (*_gtk_reserved7)      (void);
117
 };
118
 
119
 GDK_AVAILABLE_IN_ALL
120
diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c
121
index 47e26be..b245554 100644
122
--- gtk/gtktextview.c
123
+++ gtk/gtktextview.c
124
@@ -252,6 +252,7 @@ enum
125
   CUT_CLIPBOARD,
126
   COPY_CLIPBOARD,
127
   PASTE_CLIPBOARD,
128
+  PASTE_SELECTION,
129
   TOGGLE_OVERWRITE,
130
   MOVE_VIEWPORT,
131
   SELECT_ALL,
132
@@ -400,6 +401,8 @@ static void gtk_text_view_backspace        (GtkTextView           *text_view);
133
 static void gtk_text_view_cut_clipboard    (GtkTextView           *text_view);
134
 static void gtk_text_view_copy_clipboard   (GtkTextView           *text_view);
135
 static void gtk_text_view_paste_clipboard  (GtkTextView           *text_view);
136
+static void gtk_text_view_paste_selection  (GtkTextView           *text_view,
137
+					    const gchar           *which);
138
 static void gtk_text_view_toggle_overwrite (GtkTextView           *text_view);
139
 static void gtk_text_view_toggle_cursor_visible (GtkTextView      *text_view);
140
 
141
@@ -642,6 +645,7 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
142
   klass->cut_clipboard = gtk_text_view_cut_clipboard;
143
   klass->copy_clipboard = gtk_text_view_copy_clipboard;
144
   klass->paste_clipboard = gtk_text_view_paste_clipboard;
145
+  klass->paste_selection = gtk_text_view_paste_selection;
146
   klass->toggle_overwrite = gtk_text_view_toggle_overwrite;
147
 
148
   /*
149
@@ -1035,6 +1039,25 @@ gtk_text_view_class_init (GtkTextViewClass *klass)
150
 		  G_TYPE_NONE, 0);
151
 
152
   /**
153
+   * GtkTextView::paste-selection:
154
+   * @text_view: the object which received the signal
155
+   *
156
+   * The ::paste-selection signal is a
157
+   * <link linkend="keybinding-signals">keybinding signal</link>
158
+   * which gets emitted to paste the contents of the given selection
159
+   * into the text view.
160
+   */
161
+  signals[PASTE_SELECTION] =
162
+    g_signal_new (I_("paste-selection"),
163
+		  G_OBJECT_CLASS_TYPE (gobject_class),
164
+		  G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
165
+		  G_STRUCT_OFFSET (GtkTextViewClass, paste_selection),
166
+		  NULL, NULL,
167
+		  _gtk_marshal_VOID__STRING,
168
+		  G_TYPE_NONE, 1,
169
+		  G_TYPE_STRING);
170
+
171
+  /**
172
    * GtkTextView::toggle-overwrite:
173
    * @text_view: the object which received the signal
174
    *
175
@@ -6024,6 +6047,31 @@ gtk_text_view_paste_clipboard (GtkTextView *text_view)
176
 }
177
 
178
 static void
179
+gtk_text_view_paste_selection (GtkTextView *text_view,
180
+			       const gchar *which)
181
+{
182
+  GtkClipboard *clipboard = NULL;
183
+
184
+  if (g_str_equal (which, "primary"))
185
+    clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view),
186
+					  GDK_SELECTION_PRIMARY);
187
+  else if (g_str_equal (which, "secondary"))
188
+    clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view),
189
+					  GDK_SELECTION_SECONDARY);
190
+  else if (g_str_equal (which, "clipboard"))
191
+    clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view),
192
+					  GDK_SELECTION_CLIPBOARD);
193
+
194
+  if (clipboard)
195
+    gtk_text_buffer_paste_clipboard (get_buffer (text_view),
196
+				     clipboard,
197
+				     NULL,
198
+				     text_view->priv->editable);
199
+  else
200
+    gtk_widget_error_bell (GTK_WIDGET (text_view));
201
+}
202
+
203
+static void
204
 gtk_text_view_paste_done_handler (GtkTextBuffer *buffer,
205
                                   GtkClipboard  *clipboard,
206
                                   gpointer       data)
207
diff --git a/gtk/gtktextview.h b/gtk/gtktextview.h
208
index a025314..385f83e 100644
209
--- gtk/gtktextview.h
210
+++ gtk/gtktextview.h
211
@@ -163,13 +163,15 @@ struct _GtkTextViewClass
212
 
213
   /*< private >*/
214
 
215
+  void (* paste_selection) (GtkTextView *text_view,
216
+			    const gchar *which);
217
+
218
   /* Padding for future expansion */
219
   void (*_gtk_reserved1) (void);
220
   void (*_gtk_reserved2) (void);
221
   void (*_gtk_reserved3) (void);
222
   void (*_gtk_reserved4) (void);
223
   void (*_gtk_reserved5) (void);
224
-  void (*_gtk_reserved6) (void);
225
 };
226
 
227
 GDK_AVAILABLE_IN_ALL
228
-- 
229
1.7.3.4
230

Return to bug 188264