summaryrefslogtreecommitdiff
path: root/library/lightstyle.cpp
Unidiff
Diffstat (limited to 'library/lightstyle.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/lightstyle.cpp1284
1 files changed, 1284 insertions, 0 deletions
diff --git a/library/lightstyle.cpp b/library/lightstyle.cpp
new file mode 100644
index 0000000..f18bdca
--- a/dev/null
+++ b/library/lightstyle.cpp
@@ -0,0 +1,1284 @@
1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3**
4** This file is part of Qtopia Environment.
5**
6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file.
10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15**
16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you.
18**
19**********************************************************************/
20#include "lightstyle.h"
21
22#if QT_VERSION < 300
23
24#define INCLUDE_MENUITEM_DEF
25#include "qmenubar.h"
26#include "qapplication.h"
27#include "qpainter.h"
28#include "qpalette.h"
29#include "qframe.h"
30#include "qpushbutton.h"
31#include "qdrawutil.h"
32#include "qscrollbar.h"
33#include "qtabbar.h"
34#include "qguardedptr.h"
35#include "qlayout.h"
36#include "qlineedit.h"
37
38
39class LightStylePrivate
40{
41public:
42 LightStylePrivate()
43 : hoverWidget(0), ref(1), savePalette(0)
44 {
45 }
46
47 QGuardedPtr<QWidget> hoverWidget;
48 QPalette oldPalette, hoverPalette;
49 int ref;
50 QPoint mousePos;
51 QPalette *savePalette;
52};
53
54
55static LightStylePrivate *singleton = 0;
56
57
58LightStyle::LightStyle()
59 : QWindowsStyle()
60{
61 if (! singleton) {
62 singleton = new LightStylePrivate;
63
64 QPalette pal = QApplication::palette();
65 singleton->oldPalette = pal;
66
67 QColor bg = pal.color(QPalette::Active, QColorGroup::Background);
68 QColor prelight;
69
70 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128)
71 prelight = pal.color(QPalette::Active,
72 QColorGroup::Background).light(110);
73 else
74 prelight = pal.color(QPalette::Active,
75 QColorGroup::Background).light(120);
76
77 QColorGroup active2(pal.color(QPalette::Active,
78 QColorGroup::Foreground), // foreground
79 prelight, // button
80 prelight.light(), // light
81 prelight.dark(), // dark
82 prelight.dark(120), // mid
83 pal.color(QPalette::Active,
84 QColorGroup::Text), // text
85 pal.color(QPalette::Active,
86 QColorGroup::BrightText), // bright text
87 pal.color(QPalette::Active,
88 QColorGroup::Base), // base
89 bg); // background
90 active2.setColor(QColorGroup::Highlight,
91 pal.color(QPalette::Active, QColorGroup::Highlight));
92
93 singleton->hoverPalette = pal;
94 singleton->hoverPalette.setActive(active2);
95 singleton->hoverPalette.setInactive(active2);
96 } else
97 singleton->ref++;
98}
99
100
101LightStyle::~LightStyle()
102{
103 if (singleton && singleton->ref-- <= 0) {
104 delete singleton;
105 singleton = 0;
106 }
107}
108
109
110QSize LightStyle::scrollBarExtent() const
111{
112 return QSize(12 + defaultFrameWidth(), 12 + defaultFrameWidth());
113}
114
115
116int LightStyle::buttonDefaultIndicatorWidth() const
117{
118 return 2;
119}
120
121
122int LightStyle::sliderThickness() const
123{
124 return 16;
125}
126
127int LightStyle::sliderLength() const
128{
129 return 13;
130}
131
132
133int LightStyle::buttonMargin() const
134{
135 return 4;
136}
137
138
139QSize LightStyle::exclusiveIndicatorSize() const
140{
141 return QSize(13, 13);
142}
143
144
145int LightStyle::defaultFrameWidth() const
146{
147 return 2;
148}
149
150
151QSize LightStyle::indicatorSize() const
152{
153 return QSize(13, 13);
154}
155
156
157void LightStyle::polish(QWidget *widget)
158{
159 if (widget->inherits("QPushButton"))
160 widget->installEventFilter(this);
161
162#if QT_VERSION >= 300
163 if (widget->inherits("QLineEdit")) {
164 QLineEdit *lineedit = (QLineEdit *) widget;
165 lineedit->setFrameShape(QFrame::StyledPanel);
166 lineedit->setLineWidth(2);
167 }
168#endif
169
170 QWindowsStyle::polish(widget);
171}
172
173
174void LightStyle::unPolish(QWidget *widget)
175{
176 if (widget->inherits("QPushButton"))
177 widget->removeEventFilter(this);
178
179#if QT_VERSION >= 300
180 if (widget->inherits("QLineEdit")) {
181 QLineEdit *lineedit = (QLineEdit *) widget;
182 lineedit->setLineWidth(1);
183 lineedit->setFrameShape(QFrame::WinPanel);
184 }
185#endif
186
187 QWindowsStyle::unPolish(widget);
188}
189
190
191void LightStyle::polish(QApplication *app)
192{
193 QPalette pal = app->palette();
194
195 QColorGroup active(pal.color(QPalette::Active,
196 QColorGroup::Foreground), // foreground
197 pal.color(QPalette::Active,
198 QColorGroup::Button), // button
199 pal.color(QPalette::Active,
200 QColorGroup::Background).light(), // light
201 pal.color(QPalette::Active,
202 QColorGroup::Background).dark(175), // dark
203 pal.color(QPalette::Active,
204 QColorGroup::Background).dark(110), // mid
205 pal.color(QPalette::Active,
206 QColorGroup::Text), // text
207 pal.color(QPalette::Active,
208 QColorGroup::BrightText), // bright text
209 pal.color(QPalette::Active,
210 QColorGroup::Base), // base
211 pal.color(QPalette::Active,
212 QColorGroup::Background)), // background
213
214
215 disabled(pal.color(QPalette::Disabled,
216 QColorGroup::Foreground), // foreground
217 pal.color(QPalette::Disabled,
218 QColorGroup::Button), // button
219 pal.color(QPalette::Disabled,
220 QColorGroup::Background).light(), // light
221 pal.color(QPalette::Disabled,
222 QColorGroup::Background).dark(), // dark
223 pal.color(QPalette::Disabled,
224 QColorGroup::Background).dark(110), // mid
225 pal.color(QPalette::Disabled,
226 QColorGroup::Text), // text
227 pal.color(QPalette::Disabled,
228 QColorGroup::BrightText), // bright text
229 pal.color(QPalette::Disabled,
230 QColorGroup::Base), // base
231 pal.color(QPalette::Disabled,
232 QColorGroup::Background)); // background
233
234 active.setColor(QColorGroup::Highlight,
235 pal.color(QPalette::Active, QColorGroup::Highlight));
236 disabled.setColor(QColorGroup::Highlight,
237 pal.color(QPalette::Disabled, QColorGroup::Highlight));
238
239 active.setColor(QColorGroup::HighlightedText,
240 pal.color(QPalette::Active, QColorGroup::HighlightedText));
241 disabled.setColor(QColorGroup::HighlightedText,
242 pal.color(QPalette::Disabled, QColorGroup::HighlightedText));
243
244 pal.setActive(active);
245 pal.setInactive(active);
246 pal.setDisabled(disabled);
247
248 singleton->oldPalette = pal;
249
250 QColor bg = pal.color(QPalette::Active, QColorGroup::Background);
251 QColor prelight;
252
253 if ( (bg.red() + bg.green() + bg.blue()) / 3 > 128)
254 prelight = pal.color(QPalette::Active,
255 QColorGroup::Background).light(110);
256 else
257 prelight = pal.color(QPalette::Active,
258 QColorGroup::Background).light(120);
259
260 QColorGroup active2(pal.color(QPalette::Active,
261 QColorGroup::Foreground), // foreground
262 prelight, // button
263 prelight.light(), // light
264 prelight.dark(), // dark
265 prelight.dark(120), // mid
266 pal.color(QPalette::Active,
267 QColorGroup::Text), // text
268 pal.color(QPalette::Active,
269 QColorGroup::BrightText), // bright text
270 pal.color(QPalette::Active,
271 QColorGroup::Base), // base
272 bg); // background
273 active2.setColor(QColorGroup::Highlight,
274 pal.color(QPalette::Active, QColorGroup::Highlight));
275
276 singleton->hoverPalette = pal;
277 singleton->hoverPalette.setActive(active2);
278 singleton->hoverPalette.setInactive(active2);
279
280 app->setPalette(pal);
281}
282
283
284void LightStyle::unPolish(QApplication *app)
285{
286 app->setPalette(singleton->oldPalette);
287}
288
289
290void LightStyle::polishPopupMenu(QPopupMenu *menu)
291{
292 menu->setMouseTracking(TRUE);
293}
294
295
296void LightStyle::drawPushButton(QPushButton *button, QPainter *p)
297{
298 int x1, y1, x2, y2;
299 button->rect().coords(&x1, &y1, &x2, &y2);
300
301 if (button->isDefault()) {
302 p->save();
303 p->setPen(button->palette().active().color(QColorGroup::Highlight));
304 p->setBrush(button->palette().active().brush(QColorGroup::Highlight));
305 p->drawRoundRect(x1, y1, x2 - x1 + 1, y2 - y1 + 1, 15, 15);
306 p->restore();
307 }
308
309 if (button->isDefault() || button->autoDefault()) {
310 x1 += buttonDefaultIndicatorWidth();
311 y1 += buttonDefaultIndicatorWidth();
312 x2 -= buttonDefaultIndicatorWidth();
313 y2 -= buttonDefaultIndicatorWidth();
314
315 if (button->isDefault()) {
316 QPointArray pa(8);
317 pa.setPoint(0, x1 + 2, y1 );
318 pa.setPoint(1, x2 - 1, y1 );
319 pa.setPoint(2, x2 + 1, y1 + 2);
320 pa.setPoint(3, x2 + 1, y2 - 2);
321 pa.setPoint(4, x2 - 2, y2 + 1);
322 pa.setPoint(5, x1 + 2, y2 + 1);
323 pa.setPoint(6, x1, y2 - 1);
324 pa.setPoint(7, x1, y1 + 2);
325 QRegion r(pa);
326 p->setClipRegion(r);
327 }
328 }
329
330 QBrush fill;
331 if (button->isDown() || button->isOn())
332 fill = button->colorGroup().brush(QColorGroup::Mid);
333 else
334 fill = button->colorGroup().brush(QColorGroup::Button);
335
336 if ( !button->isFlat() || button->isOn() || button->isDown() )
337 drawButton(p, x1, y1, x2 - x1 + 1, y2 - y1 + 1,
338 button->colorGroup(), button->isOn() || button->isDown(), &fill);
339}
340
341
342void LightStyle::drawButton(QPainter *p, int x, int y, int w, int h,
343 const QColorGroup &g,
344 bool sunken, const QBrush *fill)
345{
346 p->save();
347 if ( fill )
348 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill);
349 else
350 p->fillRect(x + 2, y + 2, w - 4, h - 4,
351 QBrush(sunken ? g.mid() : g.button()));
352
353 // frame
354 p->setPen(g.dark());
355 p->drawLine(x, y + 2, x, y + h - 3); // left
356 p->drawLine(x + 2, y, x + w - 3, y); // top
357 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right
358 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom
359 p->drawPoint(x + 1, y + 1);
360 p->drawPoint(x + 1, y + h - 2);
361 p->drawPoint(x + w - 2, y + 1);
362 p->drawPoint(x + w - 2, y + h - 2);
363
364 // bevel
365 if (sunken)
366 p->setPen(g.mid());
367 else
368 p->setPen(g.light());
369
370 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left
371 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top
372
373 if (sunken)
374 p->setPen(g.light());
375 else
376 p->setPen(g.mid());
377
378 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1
379 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1
380
381 p->restore();
382}
383
384
385void LightStyle::drawBevelButton(QPainter *p, int x, int y, int w, int h,
386 const QColorGroup &g,
387 bool sunken, const QBrush *fill)
388{
389 drawButton(p, x, y, w, h, g, sunken, fill);
390}
391
392
393void LightStyle::getButtonShift(int &x, int &y) const
394{
395 x = y = 0;
396}
397
398
399void LightStyle::drawComboButton(QPainter *p, int x, int y, int w, int h,
400 const QColorGroup &g, bool,
401 bool editable, bool,
402 const QBrush *fill)
403{
404 drawButton(p, x, y, w, h, g, FALSE, fill);
405
406 if (editable) {
407 QRect r = comboButtonRect(x, y, w, h);
408 qDrawShadePanel(p, r.x() - 1, r.y() - 1,
409 r.width() + defaultFrameWidth(),
410 r.height() + defaultFrameWidth(),
411 g, TRUE);
412 }
413
414 int indent = ((y + h) / 2) - 3;
415 int xpos = x;
416
417#if QT_VERSION >= 300
418 if( QApplication::reverseLayout() )
419 xpos += indent;
420 else
421#endif
422 xpos += w - indent - 5;
423
424 drawArrow(p, Qt::DownArrow, TRUE, xpos, indent, 5, 5, g, TRUE, fill);
425}
426
427
428QRect LightStyle::comboButtonRect( int x, int y, int w, int h ) const
429{
430 QRect r(x + 3, y + 3, w - 6, h - 6);
431 int indent = ((y + h) / 2) - 3;
432 r.setRight(r.right() - indent - 10);
433
434#if QT_VERSION >= 300
435 if( QApplication::reverseLayout() )
436 r.moveBy( indent + 10, 0 );
437#endif
438
439 return r;
440}
441
442
443QRect LightStyle::comboButtonFocusRect(int x, int y, int w, int h ) const
444{
445 return comboButtonRect(x, y, w, h);
446}
447
448
449void LightStyle::drawPanel(QPainter *p, int x, int y, int w, int h,
450 const QColorGroup &g, bool sunken,
451 int lw, const QBrush *fill)
452{
453 if (lw >= 2) {
454 if ( fill )
455 p->fillRect(x + 2, y + 2, w - 4, h - 4, *fill);
456
457 QPen oldpen = p->pen();
458
459 // frame
460 p->setPen(g.dark());
461 p->drawLine(x, y + 2, x, y + h - 3); // left
462 p->drawLine(x + 2, y, x + w - 3, y); // top
463 p->drawLine(x + w - 1, y + 2, x + w - 1, y + h - 3); // right
464 p->drawLine(x + 2, y + h - 1, x + w - 3, y + h - 1); // bottom
465 p->drawPoint(x + 1, y + 1);
466 p->drawPoint(x + 1, y + h - 2);
467 p->drawPoint(x + w - 2, y + 1);
468 p->drawPoint(x + w - 2, y + h - 2);
469
470 // bevel
471 if (sunken)
472 p->setPen(g.mid());
473 else
474 p->setPen(g.light());
475
476 p->drawLine(x + 1, y + 2, x + 1, y + h - 3); // left
477 p->drawLine(x + 2, y + 1, x + w - 3, y + 1); // top
478
479 if (sunken)
480 p->setPen(g.light());
481 else
482 p->setPen(g.mid());
483
484 p->drawLine(x + w - 2, y + 2, x + w - 2, y + h - 3); // right + 1
485 p->drawLine(x + 2, y + h - 2, x + w - 3, y + h - 2); // bottom + 1
486
487 // corners
488 p->setPen(g.background());
489 p->drawLine(x, y, x + 1, y);
490 p->drawLine(x, y + h - 1, x + 1, y + h - 1);
491 p->drawLine(x + w - 2, y, x + w - 1, y);
492 p->drawLine(x + w - 2, y + h - 1, x + w - 1, y + h - 1);
493 p->drawPoint(x, y + 1);
494 p->drawPoint(x, y + h - 2);
495 p->drawPoint(x + w - 1, y + 1);
496 p->drawPoint(x + w - 1, y + h - 2);
497
498 p->setPen(oldpen);
499 } else
500 qDrawShadePanel(p, x, y, w, h, g, sunken, lw, fill);
501}
502
503
504void LightStyle::drawIndicator(QPainter *p, int x, int y ,int w, int h,
505 const QColorGroup &g, int state,
506 bool down, bool)
507{
508 drawButton(p, x, y, w, h, g, TRUE,
509 &g.brush(down ? QColorGroup::Mid : QColorGroup::Base));
510
511 p->save();
512
513 p->setPen(g.foreground());
514 if (state == QButton::NoChange) {
515 p->drawLine(x + 3, y + h / 2, x + w - 4, y + h / 2);
516 p->drawLine(x + 3, y + 1 + h / 2, x + w - 4, y + 1 + h / 2);
517 p->drawLine(x + 3, y - 1 + h / 2, x + w - 4, y - 1 + h / 2);
518 } else if (state == QButton::On) {
519 p->drawLine(x + 4, y + 3, x + w - 4, y + h - 5);
520 p->drawLine(x + 3, y + 3, x + w - 4, y + h - 4);
521 p->drawLine(x + 3, y + 4, x + w - 5, y + h - 4);
522 p->drawLine(x + 3, y + h - 5, x + w - 5, y + 3);
523 p->drawLine(x + 3, y + h - 4, x + w - 4, y + 3);
524 p->drawLine(x + 4, y + h - 4, x + w - 4, y + 4);
525 }
526
527 p->restore();
528}
529
530
531void LightStyle::drawExclusiveIndicator(QPainter *p, int x, int y, int w, int h,
532 const QColorGroup &g, bool on,
533 bool down, bool)
534{
535 p->save();
536
537 p->fillRect(x, y, w, h, g.brush(QColorGroup::Background));
538
539 p->setPen(g.dark());
540 p->drawArc(x, y, w, h, 0, 16*360);
541 p->setPen(g.mid());
542 p->drawArc(x + 1, y + 1, w - 2, h - 2, 45*16, 180*16);
543 p->setPen(g.light());
544 p->drawArc(x + 1, y + 1, w - 2, h - 2, 235*16, 180*16);
545
546 p->setPen(down ? g.mid() : g.base());
547 p->setBrush(down ? g.mid() : g.base());
548 p->drawEllipse(x + 2, y + 2, w - 4, h - 4);
549
550 if (on) {
551 p->setBrush(g.foreground());
552 p->drawEllipse(x + 3, y + 3, w - x - 6, h - y - 6);
553 }
554
555 p->restore();
556}
557
558
559
560#if 1
561//copied from QPE style
562void LightStyle::drawTab( QPainter *p, const QTabBar *tb, QTab *t, bool selected )
563{
564#if 0
565 //We can't do this, because QTabBar::focusInEvent redraws the
566 // tab label with the default font.
567 QFont f = tb->font();
568 f.setBold( selected );
569 p->setFont( f );
570#endif
571 QRect r( t->rect() );
572 if ( tb->shape() == QTabBar::RoundedAbove ) {
573 p->setPen( tb->colorGroup().light() );
574 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );
575 if ( r.left() == 0 )
576 p->drawPoint( tb->rect().bottomLeft() );
577 else {
578 p->setPen( tb->colorGroup().light() );
579 p->drawLine( r.left(), r.bottom(), r.right(), r.bottom() );
580 }
581
582 if ( selected ) {
583 p->setPen( tb->colorGroup().background() );
584 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );
585 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-2),
586 tb->colorGroup().brush( QColorGroup::Background ));
587
588 } else {
589 r.setRect( r.left() + 2, r.top() + 2,
590 r.width() - 4, r.height() - 2 );
591 p->setPen( tb->colorGroup().button() );
592 p->drawLine( r.left()+2, r.top()+1, r.right()-2, r.top()+1 );
593 p->fillRect( QRect( r.left()+1, r.top()+2, r.width()-2, r.height()-3),
594 tb->colorGroup().brush( QColorGroup::Button ));
595 //do shading; will not work for pixmap brushes
596 QColor bg = tb->colorGroup().button();
597 // int h,s,v;
598 // bg.hsv( &h, &s, &v );
599 int n = r.height()/2;
600 int dark = 100;
601 for ( int i = 1; i < n; i++ ) {
602 dark = (dark * (100+(i*15)/n) )/100;
603 p->setPen( bg.dark( dark ) );
604 int y = r.bottom()-n+i;
605 int x1 = r.left()+1;
606 int x2 = r.right()-1;
607 p->drawLine( x1, y, x2, y );
608 }
609
610 }
611
612 p->setPen( tb->colorGroup().light() );
613 p->drawLine( r.left(), r.bottom()-1, r.left(), r.top() + 2 );
614 p->drawPoint( r.left()+1, r.top() + 1 );
615 p->drawLine( r.left()+2, r.top(),
616 r.right() - 2, r.top() );
617
618 p->setPen( tb->colorGroup().dark() );
619 p->drawPoint( r.right() - 1, r.top() + 1 );
620 p->drawLine( r.right(), r.top() + 2, r.right(), r.bottom() - 1);
621 } else if ( tb->shape() == QTabBar::RoundedBelow ) {
622 if ( selected ) {
623 p->setPen( tb->colorGroup().background() );
624 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );
625 p->fillRect( QRect( r.left()+1, r.top(), r.width()-2, r.height()-2),
626 tb->palette().normal().brush( QColorGroup::Background ));
627 } else {
628 p->setPen( tb->colorGroup().dark() );
629 p->drawLine( r.left(), r.top(),
630 r.right(), r.top() );
631 r.setRect( r.left() + 2, r.top(),
632 r.width() - 4, r.height() - 2 );
633 p->setPen( tb->colorGroup().button() );
634 p->drawLine( r.left()+2, r.bottom()-1, r.right()-2, r.bottom()-1 );
635 p->fillRect( QRect( r.left()+1, r.top()+1, r.width()-2, r.height()-3),
636 tb->palette().normal().brush( QColorGroup::Button ));
637 }
638
639 p->setPen( tb->colorGroup().dark() );
640 p->drawLine( r.right(), r.top(),
641 r.right(), r.bottom() - 2 );
642 p->drawPoint( r.right() - 1, r.bottom() - 1 );
643 p->drawLine( r.right() - 2, r.bottom(),
644 r.left() + 2, r.bottom() );
645
646 p->setPen( tb->colorGroup().light() );
647 p->drawLine( r.left(), r.top()+1,
648 r.left(), r.bottom() - 2 );
649 p->drawPoint( r.left() + 1, r.bottom() - 1 );
650 if ( r.left() == 0 )
651 p->drawPoint( tb->rect().topLeft() );
652
653 } else {
654 QCommonStyle::drawTab( p, tb, t, selected );
655 }
656}
657
658#else
659
660void LightStyle::drawTab(QPainter *p, const QTabBar *tabbar, QTab *tab,
661 bool selected)
662{
663 p->save();
664
665 QColorGroup g = tabbar->colorGroup();
666 QRect fr(tab->r);
667 fr.setLeft(fr.left() + 2);
668
669 if (! selected) {
670 if (tabbar->shape() == QTabBar::RoundedAbove ||
671 tabbar->shape() == QTabBar::TriangularAbove) {
672
673 fr.setTop(fr.top() + 2);
674 } else {
675 fr.setBottom(fr.bottom() - 2);
676 }
677 }
678
679 QRegion tabr(tab->r);
680
681 QPointArray cliptri(4);
682 cliptri.setPoint(0, fr.left(), fr.top());
683 cliptri.setPoint(1, fr.left(), fr.top() + 5);
684 cliptri.setPoint(2, fr.left() + 5, fr.top());
685 cliptri.setPoint(3, fr.left(), fr.top());
686 QRegion trir(cliptri);
687 p->setClipRegion(tabr - trir);
688
689 p->setPen( NoPen );
690 p->setBrush(g.brush(selected ? QColorGroup::Background : QColorGroup::Mid));
691
692 fr.setWidth(fr.width() - 1);
693 p->drawRect(fr.left() + 1, fr.top() + 1, fr.width() - 2, fr.height() - 2);
694
695 if (tabbar->shape() == QTabBar::RoundedAbove) {
696 // "rounded" tabs on top
697 fr.setBottom(fr.bottom() - 1);
698
699 p->setPen(g.dark());
700 p->drawLine(fr.left(), fr.top() + 5, fr.left(), fr.bottom() - 1);
701 p->drawLine(fr.left(), fr.top() + 5, fr.left() + 5, fr.top());
702 p->drawLine(fr.left() + 5, fr.top(), fr.right() - 1, fr.top());
703 p->drawLine(fr.right(), fr.top() + 1, fr.right(), fr.bottom() - 1);
704
705 if (selected) {
706 p->drawLine(fr.right(), fr.bottom(), fr.right() + 2, fr.bottom());
707 p->drawPoint(fr.left(), fr.bottom());
708 } else
709 p->drawLine(fr.left(), fr.bottom(), fr.right() + 2, fr.bottom());
710
711 if (fr.left() == 2) {
712 p->drawPoint(fr.left() - 1, fr.bottom() + 1);
713 p->drawPoint(fr.left() - 2, fr.bottom() + 2);
714 }
715
716 if (selected) {
717 p->setPen(g.mid());
718 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 2);
719 }
720
721 p->setPen(g.light()); p->setPen(red);
722 p->drawLine(fr.left() + 1, fr.top() + 6, fr.left() + 1,
723 fr.bottom() - (selected ? 0 : 1));
724 p->drawLine(fr.left() + 1, fr.top() + 5, fr.left() + 5, fr.top() + 1);
725 p->drawLine(fr.left() + 6, fr.top() + 1, fr.right() - 3, fr.top() + 1);
726 if (selected) {
727 p->drawLine(fr.right() + 1, fr.bottom() + 1,
728 fr.right() + 2, fr.bottom() + 1);
729 p->drawLine(fr.left(), fr.bottom() + 1, fr.left() + 1, fr.bottom() + 1);
730 } else
731 p->drawLine(fr.left(), fr.bottom() + 1,
732 fr.right() + 2, fr.bottom() + 1);
733 } else if (tabbar->shape() == QTabBar::RoundedBelow) {
734 // "rounded" tabs on bottom
735 fr.setTop(fr.top() + 1);
736
737 p->setPen(g.dark());
738 p->drawLine(fr.left(), fr.top(), fr.left(), fr.bottom() - 1);
739 p->drawLine(fr.left() + 1, fr.bottom(), fr.right() - 1, fr.bottom());
740 p->drawLine(fr.right(), fr.top(), fr.right(), fr.bottom() - 1);
741
742 if (! selected)
743 p->drawLine(fr.left(), fr.top(), fr.right() + 3, fr.top());
744 else
745 p->drawLine(fr.right(), fr.top(), fr.right() + 3, fr.top());
746
747 p->setPen(g.mid());
748 if (selected)
749 p->drawLine(fr.right() - 1, fr.top() + 1, fr.right() - 1, fr.bottom() - 1);
750 else
751 p->drawLine(fr.left(), fr.top() - 1, fr.right() + 3, fr.top() - 1);
752
753 p->setPen(g.light());
754 p->drawLine(fr.left() + 1, fr.top() + (selected ? -1 : 2),
755 fr.left() + 1, fr.bottom() - 1);
756
757 } else {
758 // triangular drawing code
759 QCommonStyle::drawTab(p, tabbar, tab, selected);
760 }
761
762 p->restore();
763}
764#endif
765
766void LightStyle::drawSlider(QPainter *p, int x, int y, int w, int h,
767 const QColorGroup &g, Qt::Orientation orientation,
768 bool above, bool below)
769{
770 drawButton(p, x, y, w, h, g, FALSE, &g.brush(QColorGroup::Button));
771
772 if (orientation == Horizontal) {
773 if (above && below) {
774 drawArrow(p, Qt::UpArrow, FALSE, x + 1, y + 1, w, h / 2, g, TRUE);
775 drawArrow(p, Qt::DownArrow, FALSE, x + 1, y + (h / 2) - 1,
776 w, h / 2, g, TRUE);
777 } else
778 drawArrow(p, (above) ? Qt::UpArrow : Qt::DownArrow,
779 FALSE, x + 1, y, w, h, g, TRUE);
780 } else {
781 if (above && below) {
782 drawArrow(p, Qt::LeftArrow, FALSE, x + 1, y, w / 2, h, g, TRUE);
783 drawArrow(p, Qt::RightArrow, FALSE, x + (w / 2) - 2, y, w / 2, h, g, TRUE);
784 } else
785 drawArrow(p, (above) ? Qt::LeftArrow : Qt::RightArrow,
786 FALSE, x, y, w, h, g, TRUE);
787 }
788}
789
790
791void LightStyle::drawSliderGroove(QPainter *p, int x, int y, int w, int h,
792 const QColorGroup& g, QCOORD c,
793 Qt::Orientation orientation)
794{
795 if (orientation == Horizontal)
796 drawButton(p, x, y+c - 3, w, 6, g, TRUE, &g.brush(QColorGroup::Mid));
797 else
798 drawButton(p, x+c - 3, y, 6, h, g, TRUE, &g.brush(QColorGroup::Mid));
799}
800
801
802void LightStyle::scrollBarMetrics(const QScrollBar *scrollbar,
803 int &sliderMin, int &sliderMax,
804 int &sliderLength, int &buttonDim) const
805{
806 int maxLength;
807 int length = ((scrollbar->orientation() == Horizontal) ?
808 scrollbar->width() : scrollbar->height());
809 int extent = ((scrollbar->orientation() == Horizontal) ?
810 scrollbar->height() : scrollbar->width());
811 extent--;
812
813 if (length > (extent + defaultFrameWidth() - 1) * 2 + defaultFrameWidth())
814 buttonDim = extent - defaultFrameWidth();
815 else
816 buttonDim = (length - defaultFrameWidth()) / 2 - 1;
817
818 sliderMin = buttonDim;
819 maxLength = length - buttonDim * 3;
820
821 if (scrollbar->maxValue() != scrollbar->minValue()) {
822 uint range = scrollbar->maxValue() - scrollbar->minValue();
823 sliderLength = (scrollbar->pageStep() * maxLength) /
824 (range + scrollbar->pageStep());
825
826 if (sliderLength < buttonDim || range > INT_MAX / 2)
827 sliderLength = buttonDim;
828 if (sliderLength > maxLength)
829 sliderLength = maxLength;
830 } else
831 sliderLength = maxLength;
832
833 sliderMax = sliderMin + maxLength - sliderLength;
834}
835
836
837QStyle::ScrollControl LightStyle::scrollBarPointOver(const QScrollBar *scrollbar,
838 int sliderStart, const QPoint &p)
839{
840 if (! scrollbar->rect().contains(p))
841 return NoScroll;
842
843 int sliderMin, sliderMax, sliderLength, buttonDim, pos;
844 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim );
845
846 if (scrollbar->orientation() == Horizontal)
847 pos = p.x();
848 else
849 pos = p.y();
850
851 if (pos < buttonDim)
852 return SubLine;
853 if (pos < sliderStart)
854 return SubPage;
855 if (pos < sliderStart + sliderLength)
856 return Slider;
857 if (pos < sliderMax + sliderLength)
858 return AddPage;
859 if (pos < sliderMax + sliderLength + buttonDim)
860 return SubLine;
861 return AddLine;
862}
863
864
865
866void LightStyle::drawScrollBarControls( QPainter* p, const QScrollBar* scrollbar,
867 int sliderStart, uint controls,
868 uint activeControl )
869{
870 QColorGroup g = scrollbar->colorGroup();
871
872 int sliderMin, sliderMax, sliderLength, buttonDim;
873 scrollBarMetrics( scrollbar, sliderMin, sliderMax, sliderLength, buttonDim );
874
875 if (sliderStart > sliderMax) { // sanity check
876 sliderStart = sliderMax;
877 }
878
879 QRect addR, subR, subR2, addPageR, subPageR, sliderR;
880 int length = ((scrollbar->orientation() == Horizontal) ?
881 scrollbar->width() : scrollbar->height());
882 int extent = ((scrollbar->orientation() == Horizontal) ?
883 scrollbar->height() : scrollbar->width());
884
885
886 int fudge = 3; //####disgusting hack
887
888 if (scrollbar->orientation() == Horizontal) {
889 subR.setRect(0, defaultFrameWidth(),
890 buttonDim + fudge, buttonDim);
891 subR2.setRect(length - (buttonDim * 2), defaultFrameWidth() ,
892 buttonDim, buttonDim);
893 addR.setRect(length - buttonDim, defaultFrameWidth(),
894 buttonDim, buttonDim);
895 } else {
896 subR.setRect(defaultFrameWidth() + 1, 0,
897 buttonDim, buttonDim + fudge);
898 subR2.setRect(defaultFrameWidth() + 1, length - (buttonDim * 2),
899 buttonDim, buttonDim);
900 addR.setRect(defaultFrameWidth() + 1, length - buttonDim,
901 buttonDim, buttonDim);
902 }
903
904 int sliderEnd = sliderStart + sliderLength;
905 int sliderW = extent - defaultFrameWidth() - 1;
906 if (scrollbar->orientation() == Horizontal) {
907 subPageR.setRect( subR.right() + 1, defaultFrameWidth(),
908 sliderStart - subR.right() - 1 , sliderW );
909 addPageR.setRect( sliderEnd, defaultFrameWidth(),
910 subR2.left() - sliderEnd, sliderW );
911 sliderR.setRect( sliderStart, defaultFrameWidth(), sliderLength, sliderW );
912 } else {
913 subPageR.setRect( defaultFrameWidth(), subR.bottom() + 1,
914 sliderW, sliderStart - subR.bottom() - 1 );
915 addPageR.setRect( defaultFrameWidth(), sliderEnd,
916 sliderW, subR2.top() - sliderEnd );
917 sliderR .setRect( defaultFrameWidth(), sliderStart,
918 sliderW, sliderLength );
919 }
920
921 if ( controls == ( AddLine | SubLine | AddPage | SubPage |
922 Slider | First | Last ) ) {
923 if (scrollbar->orientation() == Horizontal)
924 qDrawShadePanel(p, 0, 0, length, 2, g, TRUE, 1,
925 &g.brush(QColorGroup::Background));
926 else
927 qDrawShadePanel(p, 0, 0, 2, length, g, TRUE, 1,
928 &g.brush(QColorGroup::Background));
929 }
930
931 if ( controls & AddLine )
932 drawArrow( p, (scrollbar->orientation() == Vertical) ? DownArrow : RightArrow,
933 FALSE, addR.x(), addR.y(),
934 addR.width(), addR.height(),
935 (( activeControl == AddLine ) ?
936 singleton->hoverPalette.active() : g),
937 TRUE, &g.brush(QColorGroup::Background));
938 if ( controls & SubLine ) {
939 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow,
940 FALSE, subR.x(), subR.y(),
941 subR.width(), subR.height(),
942 (( activeControl == SubLine ) ?
943 singleton->hoverPalette.active() : g),
944 TRUE, &g.brush(QColorGroup::Background));
945 drawArrow( p, (scrollbar->orientation() == Vertical) ? UpArrow : LeftArrow,
946 FALSE, subR2.x(), subR2.y(),
947 subR2.width(), subR2.height(),
948 (( activeControl == SubLine ) ?
949 singleton->hoverPalette.active() : g),
950 TRUE, &g.brush(QColorGroup::Background));
951 }
952
953 if ( controls & SubPage )
954 p->fillRect( subPageR,
955 ((activeControl == SubPage) ?
956 g.brush( QColorGroup::Dark ) :
957 g.brush( QColorGroup::Mid )));
958 if ( controls & AddPage )
959 p->fillRect( addPageR,
960 ((activeControl == AddPage) ?
961 g.brush( QColorGroup::Dark ) :
962 g.brush( QColorGroup::Mid )));
963
964 if ( controls & Slider ) {
965
966 QPoint bo = p->brushOrigin();
967 p->setBrushOrigin(sliderR.topLeft());
968 if ( sliderR.isValid() ) {
969 p->fillRect( sliderR.x(), sliderR.y(), 2, 2,
970 g.brush( QColorGroup::Mid ));
971 p->fillRect( sliderR.x() + sliderR.width() - 2,
972 sliderR.y(), 2, 2,
973 g.brush( QColorGroup::Mid ));
974 p->fillRect( sliderR.x() + sliderR.width() - 2,
975 sliderR.y() + sliderR.height() - 2, 2, 2,
976 g.brush( QColorGroup::Mid ));
977 p->fillRect( sliderR.x(),
978 sliderR.y() + sliderR.height() - 2, 2, 2,
979 g.brush( QColorGroup::Mid ));
980
981 QColorGroup cg( g );
982 cg.setBrush( QColorGroup::Background, g.brush( QColorGroup::Mid ) );
983 drawBevelButton( p, sliderR.x(), sliderR.y(),
984 sliderR.width(), sliderR.height(),
985 cg, FALSE, &g.brush( QColorGroup::Button ) );
986 }
987
988 p->setBrushOrigin(bo);
989 }
990}
991
992
993void LightStyle::drawToolBarHandle(QPainter *p, const QRect &rect,
994 Qt::Orientation orientation,
995 bool, const QColorGroup &g, bool)
996{
997 p->save();
998 p->setPen(g.mid());
999 p->setBrush(g.brush(QColorGroup::Mid));
1000
1001 if (orientation == Qt::Horizontal) {
1002 QRect l, r;
1003 l.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 5, rect.height() - 2);
1004 r.setRect(l.right() + 1, l.y(), 3, l.height());
1005
1006 p->drawRect(l);
1007 qDrawShadePanel(p, r, g, FALSE);
1008 } else {
1009 QRect t, b;
1010 t.setRect(rect.x() + 1, rect.y() + 1, rect.width() - 2, rect.height() - 5);
1011 b.setRect(t.x(), t.bottom() + 1, t.width(), 3);
1012
1013 p->drawRect(t);
1014 qDrawShadePanel(p, b, g, FALSE);
1015 }
1016
1017 p->restore();
1018}
1019
1020
1021bool LightStyle::eventFilter(QObject *object, QEvent *event)
1022{
1023 switch(event->type()) {
1024 case QEvent::Enter:
1025 {
1026 if (! object->isWidgetType() ||
1027 ! object->inherits("QPushButton"))
1028 break;
1029
1030 singleton->hoverWidget = (QWidget *) object;
1031 if (! singleton->hoverWidget->isEnabled()) {
1032 singleton->hoverWidget = 0;
1033 break;
1034 }
1035
1036 QPalette pal = singleton->hoverWidget->palette();
1037 if (singleton->hoverWidget->ownPalette())
1038 singleton->savePalette = new QPalette(pal);
1039
1040 singleton->hoverWidget->setPalette(singleton->hoverPalette);
1041
1042 break;
1043 }
1044
1045 case QEvent::Leave:
1046 {
1047 if (object != singleton->hoverWidget)
1048 break;
1049
1050 if (singleton->savePalette) {
1051 singleton->hoverWidget->setPalette(*(singleton->savePalette));
1052 delete singleton->savePalette;
1053 singleton->savePalette = 0;
1054 } else
1055 singleton->hoverWidget->unsetPalette();
1056
1057 singleton->hoverWidget = 0;
1058
1059 break;
1060 }
1061
1062 default:
1063 {
1064 ;
1065 }
1066 }
1067
1068 return QWindowsStyle::eventFilter(object, event);
1069}
1070
1071
1072 static const int motifItemFrame = 1;// menu item frame width
1073 static const int motifSepHeight = 2;// separator item height
1074 static const int motifItemHMargin = 1;// menu item hor text margin
1075 static const int motifItemVMargin = 2;// menu item ver text margin
1076 static const int motifArrowHMargin = 0;// arrow horizontal margin
1077 static const int motifTabSpacing = 12;// space between text and tab
1078 static const int motifCheckMarkHMargin = 1;// horiz. margins of check mark
1079 static const int windowsRightBorder= 8; // right border on windows
1080static const int windowsCheckMarkWidth = 2; // checkmarks width on windows
1081
1082/*! \reimp
1083*/
1084int LightStyle::extraPopupMenuItemWidth( bool checkable, int maxpmw, QMenuItem* mi, const QFontMetrics& /*fm*/ )
1085{
1086#ifndef QT_NO_MENUDATA
1087 int w = 2*motifItemHMargin + 2*motifItemFrame; // a little bit of border can never harm
1088
1089 if ( mi->isSeparator() )
1090 return 10; // arbitrary
1091 else if ( mi->pixmap() )
1092 w += mi->pixmap()->width();// pixmap only
1093
1094 if ( !mi->text().isNull() ) {
1095 if ( mi->text().find('\t') >= 0 )// string contains tab
1096 w += motifTabSpacing;
1097 }
1098
1099 if ( maxpmw ) { // we have iconsets
1100 w += maxpmw;
1101 w += 6; // add a little extra border around the iconset
1102 }
1103
1104 if ( checkable && maxpmw < windowsCheckMarkWidth ) {
1105 w += windowsCheckMarkWidth - maxpmw; // space for the checkmarks
1106 }
1107
1108 if ( maxpmw > 0 || checkable ) // we have a check-column ( iconsets or checkmarks)
1109 w += motifCheckMarkHMargin; // add space to separate the columns
1110
1111 w += windowsRightBorder; // windows has a strange wide border on the right side
1112
1113 return w;
1114#endif
1115}
1116
1117/*! \reimp
1118*/
1119int LightStyle::popupMenuItemHeight( bool /*checkable*/, QMenuItem* mi, const QFontMetrics& fm )
1120{
1121#ifndef QT_NO_MENUDATA
1122 int h = 0;
1123 if ( mi->isSeparator() ) // separator height
1124 h = motifSepHeight;
1125 else if ( mi->pixmap() ) // pixmap height
1126 h = mi->pixmap()->height() + 2*motifItemFrame;
1127 else // text height
1128 h = fm.height() + 2*motifItemVMargin + 2*motifItemFrame;
1129
1130 if ( !mi->isSeparator() && mi->iconSet() != 0 ) {
1131 h = QMAX( h, mi->iconSet()->pixmap( QIconSet::Small, QIconSet::Normal ).height() + 2*motifItemFrame );
1132 }
1133 if ( mi->custom() )
1134 h = QMAX( h, mi->custom()->sizeHint().height() + 2*motifItemVMargin + 2*motifItemFrame ) - 1;
1135 return h;
1136#endif
1137}
1138
1139void LightStyle::drawPopupMenuItem( QPainter* p, bool checkable, int maxpmw, int tab, QMenuItem* mi,
1140 const QPalette& pal,
1141 bool act, bool enabled, int x, int y, int w, int h)
1142{
1143#ifndef QT_NO_MENUDATA
1144 const QColorGroup & g = pal.active();
1145 bool dis = !enabled;
1146 QColorGroup itemg = dis ? pal.disabled() : pal.active();
1147
1148 if ( checkable )
1149 maxpmw = QMAX( maxpmw, 8 ); // space for the checkmarks
1150
1151 int checkcol = maxpmw;
1152
1153 if ( mi && mi->isSeparator() ) { // draw separator
1154 p->setPen( g.dark() );
1155 p->drawLine( x, y, x+w, y );
1156 p->setPen( g.light() );
1157 p->drawLine( x, y+1, x+w, y+1 );
1158 return;
1159 }
1160
1161 QBrush fill = act? g.brush( QColorGroup::Highlight ) :
1162 g.brush( QColorGroup::Button );
1163 p->fillRect( x, y, w, h, fill);
1164
1165 if ( !mi )
1166 return;
1167
1168 if ( mi->isChecked() ) {
1169 if ( act && !dis ) {
1170 qDrawShadePanel( p, x, y, checkcol, h,
1171 g, TRUE, 1, &g.brush( QColorGroup::Button ) );
1172 } else {
1173 qDrawShadePanel( p, x, y, checkcol, h,
1174 g, TRUE, 1, &g.brush( QColorGroup::Midlight ) );
1175 }
1176 } else if ( !act ) {
1177 p->fillRect(x, y, checkcol , h,
1178 g.brush( QColorGroup::Button ));
1179 }
1180
1181 if ( mi->iconSet() ) { // draw iconset
1182 QIconSet::Mode mode = dis ? QIconSet::Disabled : QIconSet::Normal;
1183 if (act && !dis )
1184 mode = QIconSet::Active;
1185 QPixmap pixmap = mi->iconSet()->pixmap( QIconSet::Small, mode );
1186 int pixw = pixmap.width();
1187 int pixh = pixmap.height();
1188 if ( act && !dis ) {
1189 if ( !mi->isChecked() )
1190 qDrawShadePanel( p, x, y, checkcol, h, g, FALSE, 1, &g.brush( QColorGroup::Button ) );
1191 }
1192 QRect cr( x, y, checkcol, h );
1193 QRect pmr( 0, 0, pixw, pixh );
1194 pmr.moveCenter( cr.center() );
1195 p->setPen( itemg.text() );
1196 p->drawPixmap( pmr.topLeft(), pixmap );
1197
1198 QBrush fill = act? g.brush( QColorGroup::Highlight ) :
1199 g.brush( QColorGroup::Button );
1200 p->fillRect( x+checkcol + 1, y, w - checkcol - 1, h, fill);
1201 } else if ( checkable ) {// just "checking"...
1202 int mw = checkcol + motifItemFrame;
1203 int mh = h - 2*motifItemFrame;
1204 if ( mi->isChecked() ) {
1205 drawCheckMark( p, x + motifItemFrame + 2,
1206 y+motifItemFrame, mw, mh, itemg, act, dis );
1207 }
1208 }
1209
1210 p->setPen( act ? g.highlightedText() : g.buttonText() );
1211
1212 QColor discol;
1213 if ( dis ) {
1214 discol = itemg.text();
1215 p->setPen( discol );
1216 }
1217
1218 int xm = motifItemFrame + checkcol + motifItemHMargin;
1219
1220 if ( mi->custom() ) {
1221 int m = motifItemVMargin;
1222 p->save();
1223 if ( dis && !act ) {
1224 p->setPen( g.light() );
1225 mi->custom()->paint( p, itemg, act, enabled,
1226 x+xm+1, y+m+1, w-xm-tab+1, h-2*m );
1227 p->setPen( discol );
1228 }
1229 mi->custom()->paint( p, itemg, act, enabled,
1230 x+xm, y+m, w-xm-tab+1, h-2*m );
1231 p->restore();
1232 }
1233 QString s = mi->text();
1234 if ( !s.isNull() ) { // draw text
1235 int t = s.find( '\t' );
1236 int m = motifItemVMargin;
1237 const int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine;
1238 if ( t >= 0 ) { // draw tab text
1239 if ( dis && !act ) {
1240 p->setPen( g.light() );
1241 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame+1,
1242 y+m+1, tab, h-2*m, text_flags, s.mid( t+1 ));
1243 p->setPen( discol );
1244 }
1245 p->drawText( x+w-tab-windowsRightBorder-motifItemHMargin-motifItemFrame,
1246 y+m, tab, h-2*m, text_flags, s.mid( t+1 ) );
1247 }
1248 if ( dis && !act ) {
1249 p->setPen( g.light() );
1250 p->drawText( x+xm+1, y+m+1, w-xm+1, h-2*m, text_flags, s, t );
1251 p->setPen( discol );
1252 }
1253 p->drawText( x+xm, y+m, w-xm-tab+1, h-2*m, text_flags, s, t );
1254 } else if ( mi->pixmap() ) { // draw pixmap
1255 QPixmap *pixmap = mi->pixmap();
1256 if ( pixmap->depth() == 1 )
1257 p->setBackgroundMode( OpaqueMode );
1258 p->drawPixmap( x+xm, y+motifItemFrame, *pixmap );
1259 if ( pixmap->depth() == 1 )
1260 p->setBackgroundMode( TransparentMode );
1261 }
1262 if ( mi->popup() ) { // draw sub menu arrow
1263 int dim = (h-2*motifItemFrame) / 2;
1264 if ( act ) {
1265 if ( !dis )
1266 discol = white;
1267 QColorGroup g2( discol, g.highlight(),
1268 white, white,
1269 dis ? discol : white,
1270 discol, white );
1271 drawArrow( p, RightArrow, FALSE,
1272 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2,
1273 dim, dim, g2, TRUE );
1274 } else {
1275 drawArrow( p, RightArrow,
1276 FALSE,
1277 x+w - motifArrowHMargin - motifItemFrame - dim, y+h/2-dim/2,
1278 dim, dim, g, mi->isEnabled() );
1279 }
1280 }
1281#endif
1282}
1283
1284#endif