From: Julian Smart <julian@anthemion.co.uk>
Date: Wed, 16 May 2001 15:53:11 +0000 (+0000)
Subject: Made wxWindow::Enable recursive in order to solve colouring problems; forced the... 
X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/513903c4f9f62b78206df9db6905278915ee6e47

Made wxWindow::Enable recursive in order to solve colouring problems; forced the colour
of a wxTextCtrl back to the custom colour in wxTextCtrl::Enable. This appears
to fix inconsistent colour problems.


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

diff --git a/src/gtk/textctrl.cpp b/src/gtk/textctrl.cpp
index 5572e67ad3..91caedb0d7 100644
--- a/src/gtk/textctrl.cpp
+++ b/src/gtk/textctrl.cpp
@@ -756,6 +756,20 @@ bool wxTextCtrl::Enable( bool enable )
     if (m_windowStyle & wxTE_MULTILINE)
     {
         gtk_text_set_editable( GTK_TEXT(m_text), 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.Ok())
+        {
+            // Need to set twice or it'll optimize the useful stuff out
+            if (oldColour == * wxWHITE)
+                SetBackgroundColour(*wxBLACK);
+            else
+                SetBackgroundColour(*wxWHITE);
+            SetBackgroundColour(oldColour);
+        }
     }
     else
     {
diff --git a/src/gtk/window.cpp b/src/gtk/window.cpp
index 797888dd42..8adc34fead 100644
--- a/src/gtk/window.cpp
+++ b/src/gtk/window.cpp
@@ -2948,6 +2948,16 @@ bool wxWindow::Enable( bool enable )
     if ( m_wxwindow )
         gtk_widget_set_sensitive( m_wxwindow, enable );
 
+    // Recurse, so that children have the opportunity to Do The Right Thing.
+    for ( wxWindowList::Node *node = GetChildren().GetFirst();
+          node;
+          node = node->GetNext() )
+    {
+        wxWindow *child = node->GetData();
+	if (!child->IsKindOf(CLASSINFO(wxDialog)) && !child->IsKindOf(CLASSINFO(wxFrame)))
+            child->Enable(enable);
+    }
+
     return TRUE;
 }
 
diff --git a/src/gtk1/textctrl.cpp b/src/gtk1/textctrl.cpp
index 5572e67ad3..91caedb0d7 100644
--- a/src/gtk1/textctrl.cpp
+++ b/src/gtk1/textctrl.cpp
@@ -756,6 +756,20 @@ bool wxTextCtrl::Enable( bool enable )
     if (m_windowStyle & wxTE_MULTILINE)
     {
         gtk_text_set_editable( GTK_TEXT(m_text), 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.Ok())
+        {
+            // Need to set twice or it'll optimize the useful stuff out
+            if (oldColour == * wxWHITE)
+                SetBackgroundColour(*wxBLACK);
+            else
+                SetBackgroundColour(*wxWHITE);
+            SetBackgroundColour(oldColour);
+        }
     }
     else
     {
diff --git a/src/gtk1/window.cpp b/src/gtk1/window.cpp
index 797888dd42..8adc34fead 100644
--- a/src/gtk1/window.cpp
+++ b/src/gtk1/window.cpp
@@ -2948,6 +2948,16 @@ bool wxWindow::Enable( bool enable )
     if ( m_wxwindow )
         gtk_widget_set_sensitive( m_wxwindow, enable );
 
+    // Recurse, so that children have the opportunity to Do The Right Thing.
+    for ( wxWindowList::Node *node = GetChildren().GetFirst();
+          node;
+          node = node->GetNext() )
+    {
+        wxWindow *child = node->GetData();
+	if (!child->IsKindOf(CLASSINFO(wxDialog)) && !child->IsKindOf(CLASSINFO(wxFrame)))
+            child->Enable(enable);
+    }
+
     return TRUE;
 }