always let GtkTextView have mouse release events to avoid assertion failures in gtk_text_view_start_selection_drag()

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-09-01 22:23:51 +00:00
parent 9768729112
commit 8312c461b8
2 changed files with 15 additions and 0 deletions

View File

@ -167,6 +167,9 @@ public:
// should we mark the control as dirty? always resets the flag
bool MarkDirtyOnChange();
// always let GTK have mouse release events for multiline controls
virtual bool GTKProcessEvent(wxEvent& event) const;
static wxVisualAttributes
GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);

View File

@ -1817,6 +1817,18 @@ void wxTextCtrl::OnUrlMouseEvent(wxMouseEvent& event)
GetEventHandler()->ProcessEvent(url_event);
}
bool wxTextCtrl::GTKProcessEvent(wxEvent& event) const
{
bool rc = wxTextCtrlBase::GTKProcessEvent(event);
// GtkTextView starts a drag operation when left mouse button is pressed
// and ends it when it is released and if it doesn't get the release event
// the next click on a control results in an assertion failure inside
// gtk_text_view_start_selection_drag() which simply *kills* the program
// without anything we can do about it, so always let GTK+ have this event
return rc && (IsSingleLine() || event.GetEventType() != wxEVT_LEFT_UP);
}
// static
wxVisualAttributes
wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))