Diffstat (limited to 'noncore/styles/liquid/liquid.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/styles/liquid/liquid.cpp | 7 |
1 files changed, 0 insertions, 7 deletions
diff --git a/noncore/styles/liquid/liquid.cpp b/noncore/styles/liquid/liquid.cpp index daac22c..e6d8310 100644 --- a/noncore/styles/liquid/liquid.cpp +++ b/noncore/styles/liquid/liquid.cpp | |||
@@ -1059,106 +1059,102 @@ public: | |||
1059 | 1059 | ||
1060 | void paint ( QPaintEvent *ev ) | 1060 | void paint ( QPaintEvent *ev ) |
1061 | { | 1061 | { |
1062 | erase ( ev-> region ( )); | 1062 | erase ( ev-> region ( )); |
1063 | QPainter p ( this ); | 1063 | QPainter p ( this ); |
1064 | style ( ). drawToolButton ( this, &p ); | 1064 | style ( ). drawToolButton ( this, &p ); |
1065 | drawButtonLabel ( &p ); | 1065 | drawButtonLabel ( &p ); |
1066 | } | 1066 | } |
1067 | }; | 1067 | }; |
1068 | 1068 | ||
1069 | /* | 1069 | /* |
1070 | * This is a fun method ;-) Here's an overview. KToolBar grabs resize to | 1070 | * This is a fun method ;-) Here's an overview. KToolBar grabs resize to |
1071 | * force everything to erase and repaint on resize. This is going away, I'm | 1071 | * force everything to erase and repaint on resize. This is going away, I'm |
1072 | * trying to get shaped widgets to work right without masking. QPushButton, | 1072 | * trying to get shaped widgets to work right without masking. QPushButton, |
1073 | * QComboBox, and Panel applet handles capture mouse enter and leaves in order | 1073 | * QComboBox, and Panel applet handles capture mouse enter and leaves in order |
1074 | * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and | 1074 | * to set the highlightwidget and repaint for mouse hovers. CheckBoxes and |
1075 | * RadioButtons need to do this differently. Qt buffers these in pixmaps and | 1075 | * RadioButtons need to do this differently. Qt buffers these in pixmaps and |
1076 | * caches them in QPixmapCache, which is bad for doing things like hover | 1076 | * caches them in QPixmapCache, which is bad for doing things like hover |
1077 | * because the style methods aren't called in paintEvents if everything | 1077 | * because the style methods aren't called in paintEvents if everything |
1078 | * is cached. We use our own Paint event handler instead. Taskbuttons and | 1078 | * is cached. We use our own Paint event handler instead. Taskbuttons and |
1079 | * pager buttons draw into a pixmap buffer, so we handle those with palette | 1079 | * pager buttons draw into a pixmap buffer, so we handle those with palette |
1080 | * modifications. For QHeader, different header items are actually one widget | 1080 | * modifications. For QHeader, different header items are actually one widget |
1081 | * that draws multiple items, so we need to check which ID is hightlighted | 1081 | * that draws multiple items, so we need to check which ID is hightlighted |
1082 | * and draw it. Finally, we also check enter and leave events for QLineEdit, | 1082 | * and draw it. Finally, we also check enter and leave events for QLineEdit, |
1083 | * since if it's inside a combobox we want to highlight the combobox during | 1083 | * since if it's inside a combobox we want to highlight the combobox during |
1084 | * hovering in the edit. | 1084 | * hovering in the edit. |
1085 | */ | 1085 | */ |
1086 | bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) | 1086 | bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) |
1087 | { | 1087 | { |
1088 | if(obj->inherits("QToolBar")){ | 1088 | if(obj->inherits("QToolBar")){ |
1089 | if(ev->type() == QEvent::Resize){ | 1089 | if(ev->type() == QEvent::Resize){ |
1090 | const QObjectList *tbChildList = obj->children(); | 1090 | const QObjectList *tbChildList = obj->children(); |
1091 | QObjectListIt it(*tbChildList); | 1091 | QObjectListIt it(*tbChildList); |
1092 | QObject *child; | 1092 | QObject *child; |
1093 | while((child = it.current()) != NULL){ | 1093 | while((child = it.current()) != NULL){ |
1094 | ++it; | 1094 | ++it; |
1095 | if(child->isWidgetType()) | 1095 | if(child->isWidgetType()) |
1096 | ((QWidget *)child)->repaint(true); | 1096 | ((QWidget *)child)->repaint(true); |
1097 | } | 1097 | } |
1098 | 1098 | ||
1099 | } | 1099 | } |
1100 | } | 1100 | } |
1101 | else if(obj->inherits("QToolButton")){ | 1101 | else if(obj->inherits("QToolButton")){ |
1102 | QToolButton *btn = (QToolButton *)obj; | 1102 | QToolButton *btn = (QToolButton *)obj; |
1103 | if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise () | 1103 | if(ev->type() == QEvent::FocusIn ){ // && !btn-> autoRaise () |
1104 | if(btn->isEnabled()){ | 1104 | if(btn->isEnabled()){ |
1105 | highlightWidget = btn; | 1105 | highlightWidget = btn; |
1106 | btn->repaint(false); | 1106 | btn->repaint(false); |
1107 | |||
1108 | qDebug ( "TB FOCUS IN [%p]", btn ); | ||
1109 | } | 1107 | } |
1110 | } | 1108 | } |
1111 | else if(ev->type() == QEvent::FocusOut ){ | 1109 | else if(ev->type() == QEvent::FocusOut ){ |
1112 | if(btn == highlightWidget){ | 1110 | if(btn == highlightWidget){ |
1113 | highlightWidget = NULL; | 1111 | highlightWidget = NULL; |
1114 | btn->repaint(false); | 1112 | btn->repaint(false); |
1115 | |||
1116 | qDebug ( "TB FOCUS OUT [%p]", btn ); | ||
1117 | } | 1113 | } |
1118 | } | 1114 | } |
1119 | else if(ev->type() == QEvent::Paint) { | 1115 | else if(ev->type() == QEvent::Paint) { |
1120 | (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev ); | 1116 | (( HackToolButton *) btn )-> paint ((QPaintEvent *) ev ); |
1121 | return true; | 1117 | return true; |
1122 | } | 1118 | } |
1123 | } | 1119 | } |
1124 | else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ | 1120 | else if(obj->inherits("QRadioButton") || obj->inherits("QCheckBox")){ |
1125 | QButton *btn = (QButton *)obj; | 1121 | QButton *btn = (QButton *)obj; |
1126 | bool isRadio = obj->inherits("QRadioButton"); | 1122 | bool isRadio = obj->inherits("QRadioButton"); |
1127 | if(ev->type() == QEvent::Paint){ | 1123 | if(ev->type() == QEvent::Paint){ |
1128 | //if(btn->autoMask()) | 1124 | //if(btn->autoMask()) |
1129 | btn->erase(); | 1125 | btn->erase(); |
1130 | QPainter p; | 1126 | QPainter p; |
1131 | p.begin(btn); | 1127 | p.begin(btn); |
1132 | QFontMetrics fm = btn->fontMetrics(); | 1128 | QFontMetrics fm = btn->fontMetrics(); |
1133 | QSize lsz = fm.size(ShowPrefix, btn->text()); | 1129 | QSize lsz = fm.size(ShowPrefix, btn->text()); |
1134 | QSize sz = isRadio ? exclusiveIndicatorSize() | 1130 | QSize sz = isRadio ? exclusiveIndicatorSize() |
1135 | : indicatorSize(); | 1131 | : indicatorSize(); |
1136 | 1132 | ||
1137 | /* | 1133 | /* |
1138 | if(btn->hasFocus()){ | 1134 | if(btn->hasFocus()){ |
1139 | QRect r = QRect(0, 0, btn->width(), btn->height()); | 1135 | QRect r = QRect(0, 0, btn->width(), btn->height()); |
1140 | p.setPen(btn->colorGroup().button().dark(140)); | 1136 | p.setPen(btn->colorGroup().button().dark(140)); |
1141 | p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); | 1137 | p.drawLine(r.x()+1, r.y(), r.right()-1, r.y()); |
1142 | p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); | 1138 | p.drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); |
1143 | p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); | 1139 | p.drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); |
1144 | p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); | 1140 | p.drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); |
1145 | } | 1141 | } |
1146 | */ | 1142 | */ |
1147 | int x = 0; | 1143 | int x = 0; |
1148 | int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; | 1144 | int y = (btn->height()-lsz.height()+fm.height()-sz.height())/2; |
1149 | if(isRadio) | 1145 | if(isRadio) |
1150 | drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), | 1146 | drawExclusiveIndicator(&p, x, y, sz.width(), sz.height(), |
1151 | btn->colorGroup(), btn->isOn(), | 1147 | btn->colorGroup(), btn->isOn(), |
1152 | btn->isDown(), btn->isEnabled()); | 1148 | btn->isDown(), btn->isEnabled()); |
1153 | else | 1149 | else |
1154 | drawIndicator(&p, x, y, sz.width(), sz.height(), | 1150 | drawIndicator(&p, x, y, sz.width(), sz.height(), |
1155 | btn->colorGroup(), btn->state(), btn->isDown(), | 1151 | btn->colorGroup(), btn->state(), btn->isDown(), |
1156 | btn->isEnabled()); | 1152 | btn->isEnabled()); |
1157 | x = sz.width() + 6; | 1153 | x = sz.width() + 6; |
1158 | y = 0; | 1154 | y = 0; |
1159 | drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), | 1155 | drawItem(&p, sz.width()+6+1, 0, btn->width()-(sz.width()+6+1), |
1160 | btn->height(), AlignLeft|AlignVCenter|ShowPrefix, | 1156 | btn->height(), AlignLeft|AlignVCenter|ShowPrefix, |
1161 | btn->colorGroup(), btn->isEnabled(), | 1157 | btn->colorGroup(), btn->isEnabled(), |
1162 | btn->pixmap(), btn->text()); | 1158 | btn->pixmap(), btn->text()); |
1163 | p.end(); | 1159 | p.end(); |
1164 | return(true); | 1160 | return(true); |
@@ -1202,101 +1198,98 @@ bool LiquidStyle::eventFilter(QObject *obj, QEvent *ev) | |||
1202 | 1198 | ||
1203 | QPixmap *pix = bevelFillDict.find(g.button().dark(120).rgb()); | 1199 | QPixmap *pix = bevelFillDict.find(g.button().dark(120).rgb()); |
1204 | if(!pix){ | 1200 | if(!pix){ |
1205 | int h, s, v; | 1201 | int h, s, v; |
1206 | g.button().dark(120).hsv(&h, &s, &v); | 1202 | g.button().dark(120).hsv(&h, &s, &v); |
1207 | pix = new QPixmap(*bevelFillPix); | 1203 | pix = new QPixmap(*bevelFillPix); |
1208 | adjustHSV(*pix, h, s, v); | 1204 | adjustHSV(*pix, h, s, v); |
1209 | bevelFillDict.insert(g.button().dark(120).rgb(), pix); | 1205 | bevelFillDict.insert(g.button().dark(120).rgb(), pix); |
1210 | } | 1206 | } |
1211 | p-> paint ((QPaintEvent *) ev, g, pix ); | 1207 | p-> paint ((QPaintEvent *) ev, g, pix ); |
1212 | return true; | 1208 | return true; |
1213 | } | 1209 | } |
1214 | } | 1210 | } |
1215 | return false ; | 1211 | return false ; |
1216 | } | 1212 | } |
1217 | 1213 | ||
1218 | void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h, | 1214 | void LiquidStyle::drawButton(QPainter *p, int x, int y, int w, int h, |
1219 | const QColorGroup &g, bool sunken, | 1215 | const QColorGroup &g, bool sunken, |
1220 | const QBrush *) | 1216 | const QBrush *) |
1221 | { | 1217 | { |
1222 | drawRoundButton(p, sunken ? g.background() : g.button(), g.background(), | 1218 | drawRoundButton(p, sunken ? g.background() : g.button(), g.background(), |
1223 | x, y, w, h); | 1219 | x, y, w, h); |
1224 | } | 1220 | } |
1225 | 1221 | ||
1226 | void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, | 1222 | void LiquidStyle::drawToolButton(QPainter *p, int x, int y, int w, int h, |
1227 | const QColorGroup &g, bool sunken, | 1223 | const QColorGroup &g, bool sunken, |
1228 | const QBrush *) | 1224 | const QBrush *) |
1229 | { | 1225 | { |
1230 | if(p->device()->devType() != QInternal::Widget){ | 1226 | if(p->device()->devType() != QInternal::Widget){ |
1231 | // drawing into a temp pixmap, don't use mask | 1227 | // drawing into a temp pixmap, don't use mask |
1232 | QColor c = sunken ? g.button() : g.background(); | 1228 | QColor c = sunken ? g.button() : g.background(); |
1233 | p->setPen(c.dark(130)); | 1229 | p->setPen(c.dark(130)); |
1234 | p->drawRect(x, y, w, h); | 1230 | p->drawRect(x, y, w, h); |
1235 | p->setPen(c.light(105)); | 1231 | p->setPen(c.light(105)); |
1236 | p->drawRect(x+1, y+1, w-2, h-2); | 1232 | p->drawRect(x+1, y+1, w-2, h-2); |
1237 | 1233 | ||
1238 | 1234 | ||
1239 | // fill | 1235 | // fill |
1240 | QPixmap *pix = bevelFillDict.find(c.rgb()); | 1236 | QPixmap *pix = bevelFillDict.find(c.rgb()); |
1241 | if(!pix){ | 1237 | if(!pix){ |
1242 | int h, s, v; | 1238 | int h, s, v; |
1243 | c.hsv(&h, &s, &v); | 1239 | c.hsv(&h, &s, &v); |
1244 | pix = new QPixmap(*bevelFillPix); | 1240 | pix = new QPixmap(*bevelFillPix); |
1245 | adjustHSV(*pix, h, s, v); | 1241 | adjustHSV(*pix, h, s, v); |
1246 | bevelFillDict.insert(c.rgb(), pix); | 1242 | bevelFillDict.insert(c.rgb(), pix); |
1247 | } | 1243 | } |
1248 | 1244 | ||
1249 | p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); | 1245 | p->drawTiledPixmap(x+2, y+2, w-4, h-4, *pix); |
1250 | qDebug ( "DRAW TOOLBUTTON IN PIXMAP" ); | ||
1251 | } | 1246 | } |
1252 | else{ | 1247 | else{ |
1253 | qDebug ( "DRAW TOOLBUTTON sunken=%d/high=%p/device=%p", sunken, highlightWidget,p->device() ); | ||
1254 | |||
1255 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : | 1248 | drawClearBevel(p, x, y, w, h, sunken ? g.button() : |
1256 | highlightWidget == p->device() ? g.button().light(110) : | 1249 | highlightWidget == p->device() ? g.button().light(110) : |
1257 | g.background(), g.background()); | 1250 | g.background(), g.background()); |
1258 | } | 1251 | } |
1259 | } | 1252 | } |
1260 | 1253 | ||
1261 | void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) | 1254 | void LiquidStyle::drawPushButton(QPushButton *btn, QPainter *p) |
1262 | { | 1255 | { |
1263 | QRect r = btn->rect(); | 1256 | QRect r = btn->rect(); |
1264 | bool sunken = btn->isOn() || btn->isDown(); | 1257 | bool sunken = btn->isOn() || btn->isDown(); |
1265 | QColorGroup g = btn->colorGroup(); | 1258 | QColorGroup g = btn->colorGroup(); |
1266 | 1259 | ||
1267 | 1260 | ||
1268 | //int dw = buttonDefaultIndicatorWidth(); | 1261 | //int dw = buttonDefaultIndicatorWidth(); |
1269 | if(btn->hasFocus() || btn->isDefault()){ | 1262 | if(btn->hasFocus() || btn->isDefault()){ |
1270 | QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); | 1263 | QColor c = btn->hasFocus() ? g.button().light(110) : g.background(); |
1271 | QPixmap *pix = bevelFillDict.find(c.rgb()); | 1264 | QPixmap *pix = bevelFillDict.find(c.rgb()); |
1272 | if(!pix){ | 1265 | if(!pix){ |
1273 | int h, s, v; | 1266 | int h, s, v; |
1274 | c.hsv(&h, &s, &v); | 1267 | c.hsv(&h, &s, &v); |
1275 | pix = new QPixmap(*bevelFillPix); | 1268 | pix = new QPixmap(*bevelFillPix); |
1276 | adjustHSV(*pix, h, s, v); | 1269 | adjustHSV(*pix, h, s, v); |
1277 | bevelFillDict.insert(c.rgb(), pix); | 1270 | bevelFillDict.insert(c.rgb(), pix); |
1278 | } | 1271 | } |
1279 | p->setPen(c.dark(150)); | 1272 | p->setPen(c.dark(150)); |
1280 | p->drawLine(r.x()+1, r.y(), r.right()-1, r.y()); | 1273 | p->drawLine(r.x()+1, r.y(), r.right()-1, r.y()); |
1281 | p->drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); | 1274 | p->drawLine(r.x(), r.y()+1, r.x(), r.bottom()-1); |
1282 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); | 1275 | p->drawLine(r.right(), r.y()+1, r.right(), r.bottom()-1); |
1283 | p->drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); | 1276 | p->drawLine(r.x()+1, r.bottom(), r.right()-1, r.bottom()); |
1284 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); | 1277 | p->drawTiledPixmap(r.x()+1, r.y()+1, r.width()-2, r.height()-2, *pix); |
1285 | } | 1278 | } |
1286 | 1279 | ||
1287 | QColor newColor = btn == highlightWidget || sunken ? | 1280 | QColor newColor = btn == highlightWidget || sunken ? |
1288 | g.button().light(120) : g.button(); | 1281 | g.button().light(120) : g.button(); |
1289 | 1282 | ||
1290 | drawRoundButton(p, newColor, g.background(), | 1283 | drawRoundButton(p, newColor, g.background(), |
1291 | r.x(), r.y(), r.width(), r.height(), !btn->autoMask(), | 1284 | r.x(), r.y(), r.width(), r.height(), !btn->autoMask(), |
1292 | sunken, btn->isDefault() || btn->autoDefault() || btn->hasFocus(), | 1285 | sunken, btn->isDefault() || btn->autoDefault() || btn->hasFocus(), |
1293 | btn->autoMask()); | 1286 | btn->autoMask()); |
1294 | } | 1287 | } |
1295 | 1288 | ||
1296 | void LiquidStyle::drawPushButtonLabel(QPushButton *btn, QPainter *p) | 1289 | void LiquidStyle::drawPushButtonLabel(QPushButton *btn, QPainter *p) |
1297 | { | 1290 | { |
1298 | int x1, y1, x2, y2, w, h; | 1291 | int x1, y1, x2, y2, w, h; |
1299 | btn->rect().coords(&x1, &y1, &x2, &y2); | 1292 | btn->rect().coords(&x1, &y1, &x2, &y2); |
1300 | w = btn->width(); | 1293 | w = btn->width(); |
1301 | h = btn->height(); | 1294 | h = btn->height(); |
1302 | 1295 | ||