+//-----------------------------------------------------------------------------
+// clipboard events: "copy-clipboard", "cut-clipboard", "paste-clipboard"
+//-----------------------------------------------------------------------------
+
+// common part of the event handlers below
+static void
+handle_text_clipboard_callback( GtkWidget *widget, wxTextCtrl *win,
+ wxEventType eventType, const gchar * signal_name)
+{
+ wxClipboardTextEvent event( eventType, win->GetId() );
+ event.SetEventObject( win );
+ if ( win->GetEventHandler()->ProcessEvent( event ) )
+ {
+ // don't let the default processing to take place if we did something
+ // ourselves in the event handler
+ g_signal_stop_emission_by_name (widget, signal_name);
+ }
+}
+
+extern "C" {
+static void
+gtk_copy_clipboard_callback( GtkWidget *widget, wxTextCtrl *win )
+{
+ handle_text_clipboard_callback(
+ widget, win, wxEVT_COMMAND_TEXT_COPY, "copy-clipboard" );
+}
+
+static void
+gtk_cut_clipboard_callback( GtkWidget *widget, wxTextCtrl *win )
+{
+ handle_text_clipboard_callback(
+ widget, win, wxEVT_COMMAND_TEXT_CUT, "cut-clipboard" );
+}
+
+static void
+gtk_paste_clipboard_callback( GtkWidget *widget, wxTextCtrl *win )
+{
+ handle_text_clipboard_callback(
+ widget, win, wxEVT_COMMAND_TEXT_PASTE, "paste-clipboard" );
+}
+}
+