Diffstat (limited to 'noncore/styles/liquid/liquid.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/styles/liquid/liquid.cpp | 51 |
1 files changed, 50 insertions, 1 deletions
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp index 5f014ad..4653639 100644 --- a/noncore/styles/liquid/liquid.cpp +++ b/noncore/styles/liquid/liquid.cpp | |||
@@ -82,14 +82,19 @@ void TransMenuHandler::reloadSettings() | |||
82 | type = config. readNumEntry("Type", TransStippleBg); | 82 | type = config. readNumEntry("Type", TransStippleBg); |
83 | color = QColor ( config. readEntry("Color", QApplication::palette().active().button().name())); | 83 | color = QColor ( config. readEntry("Color", QApplication::palette().active().button().name())); |
84 | fgColor = QColor ( config. readEntry("TextColor", QApplication::palette().active().text().name())); | 84 | fgColor = QColor ( config. readEntry("TextColor", QApplication::palette().active().text().name())); |
85 | opacity = config. readNumEntry("Opacity", 10); | 85 | opacity = config. readNumEntry("Opacity", 10); |
86 | if ( opacity < -20 ) | ||
87 | opacity = 20; | ||
88 | else if ( opacity > 20 ) | ||
89 | opacity = 20; | ||
90 | |||
86 | shadowText = config. readBoolEntry("ShadowText", true); | 91 | shadowText = config. readBoolEntry("ShadowText", true); |
87 | } | 92 | } |
88 | 93 | ||
89 | bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) | 94 | bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) |
90 | { | 95 | { |
91 | QPopupMenu *p = (QPopupMenu *)obj; | 96 | QWidget *p = (QWidget *)obj; |
92 | 97 | ||
93 | if(ev->type() == QEvent::Show){ | 98 | if(ev->type() == QEvent::Show){ |
94 | if(type == TransStippleBg || type == TransStippleBtn || | 99 | if(type == TransStippleBg || type == TransStippleBtn || |
95 | type == Custom){ | 100 | type == Custom){ |
@@ -117,16 +122,52 @@ bool TransMenuHandler::eventFilter(QObject *obj, QEvent *ev) | |||
117 | } | 122 | } |
118 | else{ | 123 | else{ |
119 | QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); | 124 | QPixmapEffect::fade(*pix, (((float)opacity)+80)*0.01, color); |
120 | } | 125 | } |
126 | |||
127 | if (p->inherits("QPopupMenu")) | ||
121 | pixDict.insert(p->winId(), pix); | 128 | pixDict.insert(p->winId(), pix); |
129 | else { | ||
130 | p->setBackgroundPixmap(*pix); | ||
131 | |||
132 | QObjectList *ol = p-> queryList("QWidget"); | ||
133 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { | ||
134 | QWidget *wid = (QWidget *) it.current ( ); | ||
135 | |||
136 | wid-> setBackgroundPixmap(*pix); | ||
137 | wid-> setBackgroundOrigin(QWidget::ParentOrigin); | ||
138 | } | ||
139 | delete ol; | ||
140 | } | ||
122 | } | 141 | } |
123 | } | 142 | } |
124 | else if(ev->type() == QEvent::Hide){ | 143 | else if(ev->type() == QEvent::Hide){ |
125 | if(type == TransStippleBg || type == TransStippleBtn || | 144 | if(type == TransStippleBg || type == TransStippleBtn || |
126 | type == Custom){ | 145 | type == Custom){ |
127 | // qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); | 146 | // qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); |
147 | |||
148 | if (p->inherits("QPopupMenu")) | ||
128 | pixDict.remove(p->winId()); | 149 | pixDict.remove(p->winId()); |
150 | else { | ||
151 | p->setBackgroundMode(QWidget::PaletteBackground); | ||
152 | |||
153 | QObjectList *ol = p-> queryList("QWidget"); | ||
154 | for ( QObjectListIt it( *ol ); it. current ( ); ++it ) { | ||
155 | QWidget *wid = (QWidget *) it.current ( ); | ||
156 | |||
157 | wid-> setBackgroundMode( QWidget::PaletteBackground ); | ||
158 | } | ||
159 | delete ol; | ||
160 | } | ||
161 | } | ||
162 | } | ||
163 | else if(ev->type() == QEvent::Paint){ | ||
164 | if(type == TransStippleBg || type == TransStippleBtn || | ||
165 | type == Custom){ | ||
166 | // qWarning("Deleting menu pixmap, width %d", pixDict.find(p->winId())->width()); | ||
167 | |||
168 | if (!p->inherits("QPopupMenu")) | ||
169 | p->erase(); | ||
129 | } | 170 | } |
130 | } | 171 | } |
131 | return(false); | 172 | return(false); |
132 | } | 173 | } |
@@ -795,13 +836,18 @@ void LiquidStyle::polish(QWidget *w) | |||
795 | return; | 836 | return; |
796 | } | 837 | } |
797 | if(w->inherits("QPopupMenu")) | 838 | if(w->inherits("QPopupMenu")) |
798 | w->setBackgroundMode(QWidget::NoBackground); | 839 | w->setBackgroundMode(QWidget::NoBackground); |
840 | else if(w-> testWFlags(Qt::WType_Popup)) { | ||
841 | printf("install popup: %s\n", w-> className ( )); | ||
842 | w->installEventFilter(menuHandler); | ||
843 | } | ||
799 | 844 | ||
800 | if(w->isTopLevel()){ | 845 | if(w->isTopLevel()){ |
801 | return; | 846 | return; |
802 | } | 847 | } |
803 | 848 | ||
849 | |||
804 | w-> setBackgroundOrigin ( QWidget::ParentOrigin ); | 850 | w-> setBackgroundOrigin ( QWidget::ParentOrigin ); |
805 | 851 | ||
806 | if(w->inherits("QComboBox") || | 852 | if(w->inherits("QComboBox") || |
807 | w->inherits("QLineEdit") || w->inherits("QRadioButton") || | 853 | w->inherits("QLineEdit") || w->inherits("QRadioButton") || |
@@ -885,8 +931,11 @@ void LiquidStyle::unPolish(QWidget *w) | |||
885 | } | 931 | } |
886 | 932 | ||
887 | if(w->inherits("QPopupMenu")) | 933 | if(w->inherits("QPopupMenu")) |
888 | w->setBackgroundMode(QWidget::PaletteButton); | 934 | w->setBackgroundMode(QWidget::PaletteButton); |
935 | else if(w-> testWFlags(Qt::WType_Popup)) { | ||
936 | w->removeEventFilter(menuHandler); | ||
937 | } | ||
889 | 938 | ||
890 | if(w->isTopLevel()) | 939 | if(w->isTopLevel()) |
891 | return; | 940 | return; |
892 | 941 | ||