From 18069e35a2d1e8a13511c32dd965aac5002dae5f Mon Sep 17 00:00:00 2001
From: deva <deva>
Date: Fri, 26 Feb 2010 10:30:18 +0000
Subject: Make disabled widgets drawn as valid always (non-red).

---
 client/widgets/lineedit.cc     | 26 +++++++++++++++++++-------
 client/widgets/lineedit.h      |  3 +++
 client/widgets/radiobuttons.cc |  7 +++++++
 client/widgets/radiobuttons.h  |  3 +++
 4 files changed, 32 insertions(+), 7 deletions(-)

(limited to 'client')

diff --git a/client/widgets/lineedit.cc b/client/widgets/lineedit.cc
index 7c2558b..e7ec9ce 100644
--- a/client/widgets/lineedit.cc
+++ b/client/widgets/lineedit.cc
@@ -56,17 +56,22 @@ void LineEdit::changed()
 {
   QPalette palette;
 
-  if(regexpValidator()) {
-    if(luaValidator()) {
-      // valid string
-      palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255)));
+  if(isEnabled()) {
+    if(regexpValidator()) {
+      if(luaValidator()) {
+        // valid string
+        palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255)));
+      } else {
+        // invalid string
+        palette.setBrush(QPalette::Base, QBrush(QColor(200, 230, 200)));
+      }
     } else {
       // invalid string
-      palette.setBrush(QPalette::Base, QBrush(QColor(200, 230, 200)));
+      palette.setBrush(QPalette::Base, QBrush(QColor(230, 200, 200)));
     }
   } else {
-    // invalid string
-    palette.setBrush(QPalette::Base, QBrush(QColor(230, 200, 200)));
+    // valid string
+    palette.setBrush(QPalette::Base, QBrush(QColor(255, 255, 255)));
   }
 
   setPalette(palette);
@@ -143,3 +148,10 @@ bool LineEdit::eventFilter(QObject *, QEvent *event)
   }
   return false;
 }
+
+void LineEdit::changeEvent(QEvent *event)
+{
+  if(event->type() == QEvent::EnabledChange) {
+    changed();
+  }
+}
diff --git a/client/widgets/lineedit.h b/client/widgets/lineedit.h
index c8ba808..556e52c 100644
--- a/client/widgets/lineedit.h
+++ b/client/widgets/lineedit.h
@@ -61,6 +61,9 @@ public slots:
 signals:
   void wasChanged();
 
+protected:
+  void changeEvent(QEvent *event);
+
 private:
   bool eventFilter(QObject *, QEvent *event);
 };
diff --git a/client/widgets/radiobuttons.cc b/client/widgets/radiobuttons.cc
index d11c3e5..9c5f8ad 100644
--- a/client/widgets/radiobuttons.cc
+++ b/client/widgets/radiobuttons.cc
@@ -183,3 +183,10 @@ bool RadioButtons::isDisabled()
 {
   return isEnabled() == false;
 }
+
+void RadioButtons::changeEvent(QEvent *event)
+{
+  if(event->type() == QEvent::EnabledChange) {
+    setBGColor(!isEnabled());
+  }
+}
diff --git a/client/widgets/radiobuttons.h b/client/widgets/radiobuttons.h
index a32147b..9b165c9 100644
--- a/client/widgets/radiobuttons.h
+++ b/client/widgets/radiobuttons.h
@@ -63,6 +63,9 @@ public slots:
 signals:
   void wasChanged();
 
+protected:
+  void changeEvent(QEvent *event);
+
 private:
   QVector < RadioButton* > radiobutton_list;
 
-- 
cgit v1.2.3