diff options
| -rw-r--r-- | gtk/ScintillaGTK.cxx | 33 | 
1 files changed, 15 insertions, 18 deletions
| diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx index 5475a1c2e..24af95bcc 100644 --- a/gtk/ScintillaGTK.cxx +++ b/gtk/ScintillaGTK.cxx @@ -198,6 +198,7 @@ private:  	void ReceivedDrop(GtkSelectionData *selection_data);  	static void GetSelection(GtkSelectionData *selection_data, guint info, SelectionText *selected);  #ifdef USE_GTK_CLIPBOARD +	void StoreOnClipboard(SelectionText *clipText);  	static void ClipboardGetSelection(GtkClipboard* clip, GtkSelectionData *selection_data, guint info, void *data);  	static void ClipboardClearSelection(GtkClipboard* clip, void *data);  #endif @@ -1291,17 +1292,9 @@ void ScintillaGTK::CopyToClipboard(const SelectionText &selectedText) {  				atomClipboard,  				GDK_CURRENT_TIME);  #else -	GtkClipboard *clipBoard; -	clipBoard = gtk_widget_get_clipboard(GTK_WIDGET(PWidget(wMain)), atomClipboard); -	if (clipBoard == NULL) // Occurs if widget isn't in a toplevel -		return; -  	SelectionText *clipText = new SelectionText();  	clipText->Copy(selectedText); - -	gtk_clipboard_set_with_data(clipBoard, clipboardCopyTargets, nClipboardCopyTargets, -				    ClipboardGetSelection, ClipboardClearSelection, clipText); - +	StoreOnClipboard(clipText);  #endif  } @@ -1313,17 +1306,9 @@ void ScintillaGTK::Copy() {  		                        atomClipboard,  		                        GDK_CURRENT_TIME);  #else -		GtkClipboard *clipBoard; -		clipBoard = gtk_widget_get_clipboard(GTK_WIDGET(PWidget(wMain)), atomClipboard); -		if (clipBoard == NULL) // Occurs if widget isn't in a toplevel -			return; -  		SelectionText *clipText = new SelectionText();  		CopySelectionRange(clipText); - -		gtk_clipboard_set_with_data(clipBoard, clipboardCopyTargets, nClipboardCopyTargets, -					    ClipboardGetSelection, ClipboardClearSelection, clipText); - +		StoreOnClipboard(clipText);  #endif  #if PLAT_GTK_WIN32  		if (selType == selRectangle) { @@ -1639,6 +1624,18 @@ void ScintillaGTK::GetSelection(GtkSelectionData *selection_data, guint info, Se  }  #ifdef USE_GTK_CLIPBOARD +void ScintillaGTK::StoreOnClipboard(SelectionText *clipText) { +	GtkClipboard *clipBoard =  +		gtk_widget_get_clipboard(GTK_WIDGET(PWidget(wMain)), atomClipboard); +	if (clipBoard == NULL) // Occurs if widget isn't in a toplevel +		return; + +	if (gtk_clipboard_set_with_data(clipBoard, clipboardCopyTargets, nClipboardCopyTargets, +				    ClipboardGetSelection, ClipboardClearSelection, clipText)) { +		gtk_clipboard_set_can_store(clipBoard, clipboardCopyTargets, nClipboardCopyTargets); +	} +} +  void ScintillaGTK::ClipboardGetSelection(GtkClipboard *, GtkSelectionData *selection_data, guint info, void *data) {  	GetSelection(selection_data, info, static_cast<SelectionText*>(data));  } | 
