Update primary selection shortcuts in gtk3

This commit is contained in:
2025-03-24 11:51:18 +01:00
parent e052b6d302
commit 79086cc920

View File

@@ -1,6 +1,6 @@
diff -ur gtk+-3.24.1/gtk/gtkentry.c gtk+-3.24.1_patched/gtk/gtkentry.c diff '--color=auto' -ur gtk-3.24.48-orig/gtk/gtkentry.c gtk-3.24.48/gtk/gtkentry.c
--- gtk+-3.24.1/gtk/gtkentry.c 2018-06-03 15:43:28.000000000 +0200 --- gtk-3.24.48-orig/gtk/gtkentry.c 2025-01-25 14:25:12.000000000 +0100
+++ gtk+-3.24.1_patched/gtk/gtkentry.c 2019-03-24 12:26:55.484614867 +0100 +++ gtk-3.24.48/gtk/gtkentry.c 2025-03-24 10:55:25.453442872 +0100
@@ -323,6 +323,7 @@ @@ -323,6 +323,7 @@
CUT_CLIPBOARD, CUT_CLIPBOARD,
COPY_CLIPBOARD, COPY_CLIPBOARD,
@@ -9,14 +9,14 @@ diff -ur gtk+-3.24.1/gtk/gtkentry.c gtk+-3.24.1_patched/gtk/gtkentry.c
TOGGLE_OVERWRITE, TOGGLE_OVERWRITE,
ICON_PRESS, ICON_PRESS,
ICON_RELEASE, ICON_RELEASE,
@@ -552,6 +553,7 @@ @@ -553,6 +554,7 @@
static void gtk_entry_cut_clipboard (GtkEntry *entry); static void gtk_entry_cut_clipboard (GtkEntry *entry);
static void gtk_entry_copy_clipboard (GtkEntry *entry); static void gtk_entry_copy_clipboard (GtkEntry *entry);
static void gtk_entry_paste_clipboard (GtkEntry *entry); static void gtk_entry_paste_clipboard (GtkEntry *entry);
+static void gtk_entry_paste_selection (GtkEntry *entry); +static void gtk_entry_paste_selection (GtkEntry *entry);
static void gtk_entry_toggle_overwrite (GtkEntry *entry); static void gtk_entry_toggle_overwrite (GtkEntry *entry);
static void gtk_entry_toggle_direction (GtkEntry *entry);
static void gtk_entry_insert_emoji (GtkEntry *entry); static void gtk_entry_insert_emoji (GtkEntry *entry);
static void gtk_entry_select_all (GtkEntry *entry);
@@ -816,6 +818,7 @@ @@ -816,6 +818,7 @@
class->cut_clipboard = gtk_entry_cut_clipboard; class->cut_clipboard = gtk_entry_cut_clipboard;
class->copy_clipboard = gtk_entry_copy_clipboard; class->copy_clipboard = gtk_entry_copy_clipboard;
@@ -25,23 +25,23 @@ diff -ur gtk+-3.24.1/gtk/gtkentry.c gtk+-3.24.1_patched/gtk/gtkentry.c
class->toggle_overwrite = gtk_entry_toggle_overwrite; class->toggle_overwrite = gtk_entry_toggle_overwrite;
class->insert_emoji = gtk_entry_insert_emoji; class->insert_emoji = gtk_entry_insert_emoji;
class->activate = gtk_entry_real_activate; class->activate = gtk_entry_real_activate;
@@ -1828,6 +1831,15 @@ @@ -1829,6 +1832,15 @@
NULL, NULL,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
+ signals[PASTE_SELECTION] = + signals[PASTE_SELECTION] =
+ g_signal_new (I_("paste-selection"), + g_signal_new (I_("paste-selection"),
+ G_OBJECT_CLASS_TYPE (gobject_class), + G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkEntryClass, paste_selection), + G_STRUCT_OFFSET (GtkEntryClass, paste_selection),
+ NULL, NULL, + NULL, NULL,
+ NULL, + NULL,
+ G_TYPE_NONE, 0); + G_TYPE_NONE, 0);
+ +
/** /**
* GtkEntry::toggle-overwrite: * GtkEntry::toggle-overwrite:
* @entry: the object which received the signal * @entry: the object which received the signal
@@ -2086,14 +2098,14 @@ @@ -2096,14 +2108,14 @@
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK, gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK,
"copy-clipboard", 0); "copy-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK, gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK,
@@ -58,37 +58,37 @@ diff -ur gtk+-3.24.1/gtk/gtkentry.c gtk+-3.24.1_patched/gtk/gtkentry.c
/* Overwrite */ /* Overwrite */
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0, gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0,
@@ -5986,6 +5998,27 @@ @@ -6000,6 +6012,27 @@
} else
} gtk_widget_error_bell (GTK_WIDGET (entry));
+static void + if (priv->text_handle)
+gtk_entry_paste_selection (GtkEntry *entry)
+{
+ GtkEntryPrivate *priv = entry->priv;
+
+ if (priv->editable)
+ gtk_entry_paste (entry, GDK_SELECTION_PRIMARY);
+ else
+ gtk_widget_error_bell (GTK_WIDGET (entry));
+
+ if (priv->text_handle)
+ { + {
+ GtkTextHandleMode handle_mode; + GtkTextHandleMode handle_mode;
+ +
+ handle_mode = _gtk_text_handle_get_mode (priv->text_handle); + handle_mode = _gtk_text_handle_get_mode (priv->text_handle);
+ +
+ if (handle_mode != GTK_TEXT_HANDLE_MODE_NONE) + if (handle_mode != GTK_TEXT_HANDLE_MODE_NONE)
+ gtk_entry_update_handles (entry, GTK_TEXT_HANDLE_MODE_CURSOR); + gtk_entry_update_handles (entry, GTK_TEXT_HANDLE_MODE_CURSOR);
+ } + }
+} +}
+ +
static void +static void
gtk_entry_delete_cb (GtkEntry *entry) +gtk_entry_paste_selection (GtkEntry *entry)
{ +{
diff -ur gtk+-3.24.1/gtk/gtkentry.h gtk+-3.24.1_patched/gtk/gtkentry.h + GtkEntryPrivate *priv = entry->priv;
--- gtk+-3.24.1/gtk/gtkentry.h 2017-11-27 00:24:51.000000000 +0100 +
+++ gtk+-3.24.1_patched/gtk/gtkentry.h 2019-03-24 11:55:03.848566726 +0100 + if (priv->editable)
+ gtk_entry_paste (entry, GDK_SELECTION_PRIMARY);
+ else
+ gtk_widget_error_bell (GTK_WIDGET (entry));
+
if (priv->text_handle)
{
GtkTextHandleMode handle_mode;
diff '--color=auto' -ur gtk-3.24.48-orig/gtk/gtkentry.h gtk-3.24.48/gtk/gtkentry.h
--- gtk-3.24.48-orig/gtk/gtkentry.h 2025-01-25 14:25:12.000000000 +0100
+++ gtk-3.24.48/gtk/gtkentry.h 2025-03-24 10:29:15.753717742 +0100
@@ -145,6 +145,7 @@ @@ -145,6 +145,7 @@
void (* cut_clipboard) (GtkEntry *entry); void (* cut_clipboard) (GtkEntry *entry);
void (* copy_clipboard) (GtkEntry *entry); void (* copy_clipboard) (GtkEntry *entry);
@@ -97,18 +97,18 @@ diff -ur gtk+-3.24.1/gtk/gtkentry.h gtk+-3.24.1_patched/gtk/gtkentry.h
void (* toggle_overwrite) (GtkEntry *entry); void (* toggle_overwrite) (GtkEntry *entry);
/* hooks to add other objects beside the entry (like in GtkSpinButton) */ /* hooks to add other objects beside the entry (like in GtkSpinButton) */
@@ -168,7 +169,6 @@ @@ -169,7 +170,6 @@
void (*_gtk_reserved2) (void);
void (*_gtk_reserved3) (void); void (*_gtk_reserved3) (void);
void (*_gtk_reserved4) (void); void (*_gtk_reserved4) (void);
void (*_gtk_reserved5) (void); - void (*_gtk_reserved5) (void);
- void (*_gtk_reserved6) (void);
}; };
GDK_AVAILABLE_IN_ALL GDK_AVAILABLE_IN_ALL
diff -ur gtk+-3.24.1/gtk/gtktextview.c gtk+-3.24.1_patched/gtk/gtktextview.c diff '--color=auto' -ur gtk-3.24.48-orig/gtk/gtktextview.c gtk-3.24.48/gtk/gtktextview.c
--- gtk+-3.24.1/gtk/gtktextview.c 2018-07-25 14:29:25.000000000 +0200 --- gtk-3.24.48-orig/gtk/gtktextview.c 2025-01-25 14:25:12.000000000 +0100
+++ gtk+-3.24.1_patched/gtk/gtktextview.c 2019-03-24 11:46:29.476553772 +0100 +++ gtk-3.24.48/gtk/gtktextview.c 2025-03-24 10:38:47.534703867 +0100
@@ -327,6 +327,7 @@ @@ -329,6 +329,7 @@
CUT_CLIPBOARD, CUT_CLIPBOARD,
COPY_CLIPBOARD, COPY_CLIPBOARD,
PASTE_CLIPBOARD, PASTE_CLIPBOARD,
@@ -116,7 +116,7 @@ diff -ur gtk+-3.24.1/gtk/gtktextview.c gtk+-3.24.1_patched/gtk/gtktextview.c
TOGGLE_OVERWRITE, TOGGLE_OVERWRITE,
MOVE_VIEWPORT, MOVE_VIEWPORT,
SELECT_ALL, SELECT_ALL,
@@ -497,6 +498,7 @@ @@ -499,6 +500,7 @@
static void gtk_text_view_cut_clipboard (GtkTextView *text_view); static void gtk_text_view_cut_clipboard (GtkTextView *text_view);
static void gtk_text_view_copy_clipboard (GtkTextView *text_view); static void gtk_text_view_copy_clipboard (GtkTextView *text_view);
static void gtk_text_view_paste_clipboard (GtkTextView *text_view); static void gtk_text_view_paste_clipboard (GtkTextView *text_view);
@@ -124,7 +124,7 @@ diff -ur gtk+-3.24.1/gtk/gtktextview.c gtk+-3.24.1_patched/gtk/gtktextview.c
static void gtk_text_view_toggle_overwrite (GtkTextView *text_view); static void gtk_text_view_toggle_overwrite (GtkTextView *text_view);
static void gtk_text_view_toggle_cursor_visible (GtkTextView *text_view); static void gtk_text_view_toggle_cursor_visible (GtkTextView *text_view);
@@ -785,6 +787,7 @@ @@ -787,6 +789,7 @@
klass->cut_clipboard = gtk_text_view_cut_clipboard; klass->cut_clipboard = gtk_text_view_cut_clipboard;
klass->copy_clipboard = gtk_text_view_copy_clipboard; klass->copy_clipboard = gtk_text_view_copy_clipboard;
klass->paste_clipboard = gtk_text_view_paste_clipboard; klass->paste_clipboard = gtk_text_view_paste_clipboard;
@@ -132,23 +132,23 @@ diff -ur gtk+-3.24.1/gtk/gtktextview.c gtk+-3.24.1_patched/gtk/gtktextview.c
klass->toggle_overwrite = gtk_text_view_toggle_overwrite; klass->toggle_overwrite = gtk_text_view_toggle_overwrite;
klass->create_buffer = gtk_text_view_create_buffer; klass->create_buffer = gtk_text_view_create_buffer;
klass->extend_selection = gtk_text_view_extend_selection; klass->extend_selection = gtk_text_view_extend_selection;
@@ -1305,6 +1308,15 @@ @@ -1316,6 +1319,15 @@
NULL, NULL,
G_TYPE_NONE, 0); G_TYPE_NONE, 0);
+ signals[PASTE_SELECTION] = + signals[PASTE_SELECTION] =
+ g_signal_new (I_("paste-selection"), + g_signal_new (I_("paste-selection"),
+ G_OBJECT_CLASS_TYPE (gobject_class), + G_OBJECT_CLASS_TYPE (gobject_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (GtkTextViewClass, paste_selection), + G_STRUCT_OFFSET (GtkTextViewClass, paste_selection),
+ NULL, NULL, + NULL, NULL,
+ NULL, + NULL,
+ G_TYPE_NONE, 0); + G_TYPE_NONE, 0);
+ +
/** /**
* GtkTextView::toggle-overwrite: * GtkTextView::toggle-overwrite:
* @text_view: the object which received the signal * @text_view: the object which received the signal
@@ -1652,14 +1664,14 @@ @@ -1666,14 +1678,14 @@
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_CONTROL_MASK, gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_CONTROL_MASK,
"copy-clipboard", 0); "copy-clipboard", 0);
gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_SHIFT_MASK, gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Insert, GDK_SHIFT_MASK,
@@ -165,29 +165,30 @@ diff -ur gtk+-3.24.1/gtk/gtktextview.c gtk+-3.24.1_patched/gtk/gtktextview.c
/* Overwrite */ /* Overwrite */
gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0, gtk_binding_entry_add_signal (binding_set, GDK_KEY_Insert, 0,
@@ -7221,6 +7233,19 @@ @@ -7247,6 +7259,20 @@
} text_view->priv->scroll_after_paste = TRUE;
static void gtk_text_buffer_paste_clipboard (get_buffer (text_view),
+gtk_text_view_paste_selection (GtkTextView *text_view) + clipboard,
+{ + NULL,
+ GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view), + text_view->priv->editable);
+ GDK_SELECTION_PRIMARY);
+
+ text_view->priv->scroll_after_paste = TRUE;
+ gtk_text_buffer_paste_clipboard (get_buffer (text_view),
+ clipboard,
+ NULL,
+ text_view->priv->editable);
+} +}
+ +
+static void +static void
gtk_text_view_paste_done_handler (GtkTextBuffer *buffer, +gtk_text_view_paste_selection (GtkTextView *text_view)
GtkClipboard *clipboard, +{
gpointer data) + GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET (text_view),
diff -ur gtk+-3.24.1/gtk/gtktextview.h gtk+-3.24.1_patched/gtk/gtktextview.h + GDK_SELECTION_PRIMARY);
--- gtk+-3.24.1/gtk/gtktextview.h 2017-11-26 22:31:46.000000000 +0100 +
+++ gtk+-3.24.1_patched/gtk/gtktextview.h 2019-03-24 11:57:41.592570698 +0100 + text_view->priv->scroll_after_paste = TRUE;
+
+ gtk_text_buffer_paste_clipboard (get_buffer (text_view),
clipboard,
NULL,
text_view->priv->editable);
diff '--color=auto' -ur gtk-3.24.48-orig/gtk/gtktextview.h gtk-3.24.48/gtk/gtktextview.h
--- gtk-3.24.48-orig/gtk/gtktextview.h 2025-01-25 14:25:12.000000000 +0100
+++ gtk-3.24.48/gtk/gtktextview.h 2025-03-24 10:32:51.750647605 +0100
@@ -181,6 +181,7 @@ @@ -181,6 +181,7 @@
void (* cut_clipboard) (GtkTextView *text_view); void (* cut_clipboard) (GtkTextView *text_view);
void (* copy_clipboard) (GtkTextView *text_view); void (* copy_clipboard) (GtkTextView *text_view);