]> git.saurik.com Git - wxWidgets.git/commitdiff
Remove wxTextCtrl::OnEnabled() hack from wxGTK.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 31 Mar 2013 01:12:21 +0000 (01:12 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 31 Mar 2013 01:12:21 +0000 (01:12 +0000)
Don't change the background colour when the control is being enabled or
disabled, it doesn't seem necessary and it's unclear why was this added by
r10179 in the first place. It does result in problems however as it could
somehow make the selection of wxTextCtrl invisible when it lost focus and so
fixes a serious usability problem which happened to all wxTextCtrls for which
a wxEVT_UPDATE_UI handler using wxUpdateUIEvent::Enable() was defined.

Closes #14898.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73756 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/textctrl.h
include/wx/gtk1/textctrl.h
include/wx/window.h
src/common/wincmn.cpp
src/gtk/textctrl.cpp
src/gtk1/textctrl.cpp
src/osx/window_osx.cpp

index 15e44703da8f8c49b5c14de8e285633493322f6c..5db8cb09e77e4fd1a0b21e1292aeec4f9de3e037 100644 (file)
@@ -145,11 +145,6 @@ public:
     GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
 protected:
-    // wxGTK-specific: called recursively by Enable,
-    // to give widgets an oppprtunity to correct their colours after they
-    // have been changed by Enable
-    virtual void OnEnabled(bool enable);
-
     // overridden wxWindow virtual methods
     virtual wxSize DoGetBestSize() const;
     virtual void DoApplyWidgetStyle(GtkRcStyle *style);
index c594bc46b2fda31d8c84dd9bb3c426a33f7407bf..de6a4034f1c68ff8112ee3318d637c05fb795b1c 100644 (file)
@@ -143,11 +143,6 @@ public:
 
     // implementation only from now on
 
-    // wxGTK-specific: called recursively by Enable,
-    // to give widgets an oppprtunity to correct their colours after they
-    // have been changed by Enable
-    virtual void OnEnabled( bool enabled ) ;
-
     // tell the control to ignore next text changed signal
     void IgnoreNextTextUpdate();
 
index 443f0366e72cce01d2a0c6554a9eaec3639f2c4a..22f7a5b0eee84b3df7faa7e29e4e91446d43126f 100644 (file)
@@ -1511,11 +1511,6 @@ protected:
     // widgets state are necessary
     virtual void DoEnable(bool WXUNUSED(enable)) { }
 
-    // called when the on-screen widget state changes and provides an
-    // an opportunity for the widget to update its visual state (colours,
-    // fonts, anything else) as necessary
-    virtual void OnEnabled(bool WXUNUSED(enabled)) { }
-
 
     // the window id - a number which uniquely identifies a window among
     // its siblings unless it is wxID_ANY
@@ -1768,7 +1763,7 @@ protected:
     static void NotifyCaptureLost();
 
 private:
-    // recursively call our own and our children OnEnabled() when the
+    // recursively call our own and our children DoEnable() when the
     // enabled/disabled status changed because a parent window had been
     // enabled/disabled
     void NotifyWindowOnEnableChange(bool enabled);
index ff653cb8309226b19215708bde9456183bde331a..5e5a2c83bed888718af1b4cc51d339a8da6837e4 100644 (file)
@@ -1149,8 +1149,6 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled)
     DoEnable(enabled);
 #endif // !defined(wxHAS_NATIVE_ENABLED_MANAGEMENT)
 
-    OnEnabled(enabled);
-
     // Disabling a top level window is typically done when showing a modal
     // dialog and we don't need to disable its children in this case, they will
     // be logically disabled anyhow (i.e. their IsEnabled() will return false)
@@ -1166,9 +1164,7 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled)
     // they would still show as enabled even though they wouldn't actually
     // accept any input (at least under MSW where children don't accept input
     // if any of the windows in their parent chain is enabled).
-    //
-    // Notice that we must do this even for wxHAS_NATIVE_ENABLED_MANAGEMENT
-    // platforms as we still need to call the children OnEnabled() recursively.
+#ifndef wxHAS_NATIVE_ENABLED_MANAGEMENT
     for ( wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
           node;
           node = node->GetNext() )
@@ -1177,6 +1173,7 @@ void wxWindowBase::NotifyWindowOnEnableChange(bool enabled)
         if ( !child->IsTopLevel() && child->IsThisEnabled() )
             child->NotifyWindowOnEnableChange(enabled);
     }
+#endif // !defined(wxHAS_NATIVE_ENABLED_MANAGEMENT)
 }
 
 bool wxWindowBase::Enable(bool enable)
index cd1e766045b5f4b4807d2c3433af4b3b5f15c66e..629a6fbfae7d315c04ae4fc56ce469173249a6ee 100644 (file)
@@ -1341,26 +1341,6 @@ bool wxTextCtrl::Enable( bool enable )
     return true;
 }
 
-// wxGTK-specific: called recursively by Enable,
-// to give widgets an opportunity to correct their colours after they
-// have been changed by Enable
-void wxTextCtrl::OnEnabled(bool WXUNUSED(enable))
-{
-    // If we have a custom background colour, we use this colour in both
-    // disabled and enabled mode, or we end up with a different colour under the
-    // text.
-    wxColour oldColour = GetBackgroundColour();
-    if (oldColour.IsOk())
-    {
-        // Need to set twice or it'll optimize the useful stuff out
-        if (oldColour == * wxWHITE)
-            SetBackgroundColour(*wxBLACK);
-        else
-            SetBackgroundColour(*wxWHITE);
-        SetBackgroundColour(oldColour);
-    }
-}
-
 void wxTextCtrl::MarkDirty()
 {
     m_modified = true;
index 7ce0d35e3d62abfd17c9d6ef6fc0b2c2e9350628..fd777b6b3d0b182a4e6a7752f9bb35a906e0948e 100644 (file)
@@ -714,29 +714,6 @@ void wxTextCtrl::DoEnable( bool enable )
     }
 }
 
-// wxGTK-specific: called recursively by Enable,
-// to give widgets an oppprtunity to correct their colours after they
-// have been changed by Enable
-void wxTextCtrl::OnEnabled( bool WXUNUSED(enable) )
-{
-    if ( IsSingleLine() )
-        return;
-
-    // If we have a custom background colour, we use this colour in both
-    // disabled and enabled mode, or we end up with a different colour under the
-    // text.
-    wxColour oldColour = GetBackgroundColour();
-    if (oldColour.IsOk())
-    {
-        // Need to set twice or it'll optimize the useful stuff out
-        if (oldColour == * wxWHITE)
-            SetBackgroundColour(*wxBLACK);
-        else
-            SetBackgroundColour(*wxWHITE);
-        SetBackgroundColour(oldColour);
-    }
-}
-
 void wxTextCtrl::MarkDirty()
 {
     m_modified = true;
index d7ef17acce5cb39ae1806f35152d747c74b49a15..cd7a53c8aa6ee8311b8ed806da39b1a51096ae90 100644 (file)
@@ -1304,7 +1304,6 @@ void wxWindowMac::MacHiliteChanged()
 
 void wxWindowMac::MacEnabledStateChanged()
 {
-    OnEnabled( GetPeer()->IsEnabled() );
 }
 
 //