Move logic from GTK callback to GTKOnTextChanged() virtual method
Check whether we should ignore the event and mark the control as being dirty if necessary in a virtual method, which can be defined in wxTextEntry and overridden by wxTextCtrl, instead of doing it in GTK callback itself. This will allow to reuse wxTextEntry callback for wxTextCtrl too in the upcoming commits. No real changes so far.
This commit is contained in:
@@ -142,6 +142,8 @@ public:
|
||||
static wxVisualAttributes
|
||||
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
|
||||
|
||||
void GTKOnTextChanged() wxOVERRIDE;
|
||||
|
||||
protected:
|
||||
// overridden wxWindow virtual methods
|
||||
virtual wxSize DoGetBestSize() const wxOVERRIDE;
|
||||
|
@@ -62,6 +62,12 @@ public:
|
||||
bool GTKEntryOnInsertText(const char* text);
|
||||
bool GTKIsUpperCase() const { return m_isUpperCase; }
|
||||
|
||||
// Called from "changed" signal handler for GtkEntry.
|
||||
//
|
||||
// By default just generates a wxEVT_TEXT, but overridden to do more things
|
||||
// in wxTextCtrl.
|
||||
virtual void GTKOnTextChanged() { SendTextUpdatedEvent(); }
|
||||
|
||||
protected:
|
||||
// This method must be called from the derived class Create() to connect
|
||||
// the handlers for the clipboard (cut/copy/paste) events.
|
||||
|
@@ -575,13 +575,7 @@ extern "C" {
|
||||
static void
|
||||
gtk_text_changed_callback( GtkWidget *WXUNUSED(widget), wxTextCtrl *win )
|
||||
{
|
||||
if ( win->IgnoreTextUpdate() )
|
||||
return;
|
||||
|
||||
if ( win->MarkDirtyOnChange() )
|
||||
win->MarkDirty();
|
||||
|
||||
win->SendTextUpdatedEvent();
|
||||
win->GTKOnTextChanged();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1371,6 +1365,17 @@ void wxTextCtrl::DiscardEdits()
|
||||
m_modified = false;
|
||||
}
|
||||
|
||||
void wxTextCtrl::GTKOnTextChanged()
|
||||
{
|
||||
if ( IgnoreTextUpdate() )
|
||||
return;
|
||||
|
||||
if ( MarkDirtyOnChange() )
|
||||
MarkDirty();
|
||||
|
||||
SendTextUpdatedEvent();
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// event handling
|
||||
// ----------------------------------------------------------------------------
|
||||
|
Reference in New Issue
Block a user