]> git.saurik.com Git - wxWidgets.git/commitdiff
always let GtkTextView have mouse release events to avoid assertion failures in gtk_t...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Sep 2006 22:23:51 +0000 (22:23 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 1 Sep 2006 22:23:51 +0000 (22:23 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/textctrl.h
src/gtk/textctrl.cpp

index 9f1c6eddd2c594d4f736b5b8f63e752f49bebca1..f22b710ee5c99130f7bdf3bbea7fc9b308ab588e 100644 (file)
@@ -167,6 +167,9 @@ public:
     // should we mark the control as dirty? always resets the flag
     bool MarkDirtyOnChange();
 
     // 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);
 
     static wxVisualAttributes
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
index cd4b62035b27886efb1da884fd3ae2da9a13f1ba..703ceccd9c7b18bb529d1ba1ec6712a73dc436c7 100644 (file)
@@ -1817,6 +1817,18 @@ void wxTextCtrl::OnUrlMouseEvent(wxMouseEvent& event)
     GetEventHandler()->ProcessEvent(url_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))
 // static
 wxVisualAttributes
 wxTextCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant))