From 10f61ef8233bf4574abb0d246d303de9956ff921 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Techet?= Date: Fri, 2 Jan 2015 00:59:53 +0100 Subject: Use gtk_clipboard_request_contents() instead of gtk_selection_convert() for paste on GTK When compiling Scintilla on OS X with GTK2 backend (and GTK2 with Quartz backend), gtk_selection_convert() doesn't work. GtkClipboard seems to work fine though. --- gtk/ScintillaGTK.cxx | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'gtk') diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index 61eba53c1..9f8a8b6b8 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -314,6 +314,8 @@ private: static void Destroy(GObject *object); static void SelectionReceived(GtkWidget *widget, GtkSelectionData *selection_data, guint time); + static void ClipboardReceived(GtkClipboard *clipboard, GtkSelectionData *selection_data, + gpointer data); static void SelectionGet(GtkWidget *widget, GtkSelectionData *selection_data, guint info, guint time); static gint SelectionClear(GtkWidget *widget, GdkEventSelection *selection_event); @@ -1485,10 +1487,18 @@ void ScintillaGTK::Copy() { } } +void ScintillaGTK::ClipboardReceived(GtkClipboard *clipboard, GtkSelectionData *selection_data, gpointer data) { + ScintillaGTK *sciThis = static_cast(data); + sciThis->ReceivedSelection(selection_data); +} + void ScintillaGTK::Paste() { atomSought = atomUTF8; - gtk_selection_convert(GTK_WIDGET(PWidget(wMain)), - atomClipboard, atomSought, GDK_CURRENT_TIME); + GtkClipboard *clipBoard = + gtk_widget_get_clipboard(GTK_WIDGET(PWidget(wMain)), atomClipboard); + if (clipBoard == NULL) + return; + gtk_clipboard_request_contents(clipBoard, atomSought, ClipboardReceived, this); } void ScintillaGTK::CreateCallTipWindow(PRectangle rc) { -- cgit v1.2.3