From fe56b832d8781db11911b778630d344bcc834145 Mon Sep 17 00:00:00 2001 From: deva Date: Wed, 18 Mar 2009 14:03:58 +0000 Subject: Made combobox show its background (red on invalid) even when running with plastique style. --- client/widgets/combobox.cc | 38 ++++++++++++++++++++++++++++++-------- client/widgets/combobox.h | 2 +- client/widgets/widget.cc | 2 +- 3 files changed, 32 insertions(+), 10 deletions(-) (limited to 'client/widgets') diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index 2818db3..c4a7f13 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -33,11 +33,24 @@ #include "common.h" +// Enable this to make the combobox drawn in windows style. +// This will make its background red even when not expanded. +//#define STYLE_HACK + +#ifdef STYLE_HACK +#include +QWindowsStyle s; +#endif/*STYLE_HACK*/ + ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) : QComboBox(), Widget(node, macrowindow) { setCommonAttributes(this, node); +#ifdef STYLE_HACK + setStyle(&s); +#endif/*STYLE_HACK*/ + setInsertPolicy(QComboBox::InsertAlphabetically); QDomNodeList children = node.childNodes(); @@ -70,6 +83,12 @@ ComboBox::ComboBox(QDomNode &node, MacroWindow *macrowindow) case SELECT: setEditable(false); +#ifndef STYLE_HACK + setEditable(true); + lineEdit()->setReadOnly(true); + lineEdit()->installEventFilter(this); +#endif/*STYLE_HACK*/ + connect(this, SIGNAL(currentIndexChanged(QString)), this, SLOT(changed())); break; @@ -190,14 +209,6 @@ void ComboBox::connectTo(const QObject *sender, const char *signal, connect(sender, signal, this, method); } -/* -bool ComboBox::eventFilter(QObject *, QEvent *event) -{ - if (event->type() == QEvent::KeyPress) emit wasChanged(); - return false; -} -*/ - bool ComboBox::setKeyboardFocus() { setFocus(); @@ -208,3 +219,14 @@ void ComboBox::setVisibility(bool visible) { setVisible(visible); } + +bool ComboBox::eventFilter(QObject *obj, QEvent *event) +{ + if(combotype == SELECT) { + if(event->type() == QEvent::MouseButtonRelease) { + showPopup(); + } + } + + return QObject::eventFilter(obj, event); +} diff --git a/client/widgets/combobox.h b/client/widgets/combobox.h index 922d51d..af48ba5 100644 --- a/client/widgets/combobox.h +++ b/client/widgets/combobox.h @@ -69,7 +69,7 @@ signals: void wasChanged(); protected: - // bool eventFilter(QObject *, QEvent *event); + bool eventFilter(QObject *obj, QEvent *event); private: QRegExp rx; diff --git a/client/widgets/widget.cc b/client/widgets/widget.cc index 870fc4b..42db8f6 100644 --- a/client/widgets/widget.cc +++ b/client/widgets/widget.cc @@ -79,7 +79,7 @@ bool Widget::regexpValidator() } bool Widget::luaValidator() -{ +{ if(!hasluaprogram) return true; if(macrowindow->luaprograms.contains(luaprogram) == false) return false; -- cgit v1.2.3