if ( win->IgnoreTextUpdate() )
return;
- if (!win->m_hasVMT) return;
-
if ( win->MarkDirtyOnChange() )
win->MarkDirty();
}
}
-//-----------------------------------------------------------------------------
-// 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->HandleWindowEvent( 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" );
-}
-}
-
//-----------------------------------------------------------------------------
// "mark_set"
//-----------------------------------------------------------------------------
SetUpdateFont(false);
m_text = NULL;
+ m_buffer = NULL;
m_showPositionOnThaw = NULL;
m_anonymousMarkList = NULL;
}
wxTextCtrl::~wxTextCtrl()
{
+ if (m_text)
+ GTKDisconnect(m_text);
+ if (m_buffer)
+ GTKDisconnect(m_buffer);
+
+ // this is also done by wxWindowGTK dtor, but has to be done here so our
+ // DoThaw() override is called
+ while (IsFrozen())
+ Thaw();
+
if (m_anonymousMarkList)
g_slist_free(m_anonymousMarkList);
}
}
- g_signal_connect (m_text, "copy-clipboard",
- G_CALLBACK (gtk_copy_clipboard_callback), this);
- g_signal_connect (m_text, "cut-clipboard",
- G_CALLBACK (gtk_cut_clipboard_callback), this);
- g_signal_connect (m_text, "paste-clipboard",
- G_CALLBACK (gtk_paste_clipboard_callback), this);
+ GTKConnectClipboardSignals(m_text);
m_cursor = wxCursor( wxCURSOR_IBEAM );
{
wxCHECK_RET(m_text != NULL, wxT("invalid text ctrl"));
- wxWindow::DoFreeze();
+ GTKFreezeWidget(m_text);
if ( HasFlag(wxTE_MULTILINE) )
{
- GTKFreezeWidget(m_text);
-
// removing buffer dramatically speeds up insertion:
g_object_ref(m_buffer);
GtkTextBuffer* buf_new = gtk_text_buffer_new(NULL);
GTK_TEXT_VIEW(m_text), m_showPositionOnThaw);
m_showPositionOnThaw = NULL;
}
-
- // and thaw the window
- GTKThawWidget(m_text);
}
- wxWindow::DoThaw();
+ GTKThawWidget(m_text);
}
// ----------------------------------------------------------------------------