author | alwin <alwin> | 2004-11-02 12:35:34 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-11-02 12:35:34 (UTC) |
commit | e246d0590286f6b9b0d5d40f1a17caa78c015b21 (patch) (unidiff) | |
tree | 96195461536b3821482df56d4f7a0b6683092aed | |
parent | e83e5bd3f26270d61a83b8b91e07b35d2657d060 (diff) | |
download | opie-e246d0590286f6b9b0d5d40f1a17caa78c015b21.zip opie-e246d0590286f6b9b0d5d40f1a17caa78c015b21.tar.gz opie-e246d0590286f6b9b0d5d40f1a17caa78c015b21.tar.bz2 |
uiuiui - fixed a bug which let running applications crash if switched style
from phase to any other. Reason was that in phase-style a special menubaritem-
drawroutine was set but not RESET to qte default if this style was removed
I'd implemented the unPolish routine and just set this callback to 0 (qt-default)
and now it works nice.
-rw-r--r-- | noncore/styles/phase/phasestyle.cpp | 22 | ||||
-rw-r--r-- | noncore/styles/phase/phasestyle.h | 8 |
2 files changed, 21 insertions, 9 deletions
diff --git a/noncore/styles/phase/phasestyle.cpp b/noncore/styles/phase/phasestyle.cpp index ba8c460..906ccee 100644 --- a/noncore/styles/phase/phasestyle.cpp +++ b/noncore/styles/phase/phasestyle.cpp | |||
@@ -305,51 +305,61 @@ void PhaseStyle::drawPhaseGradient(QPainter* painter, | |||
305 | void PhaseStyle::polish( QWidget* widget ) { | 305 | void PhaseStyle::polish( QWidget* widget ) { |
306 | QWindowsStyle::polish(widget ); | 306 | QWindowsStyle::polish(widget ); |
307 | 307 | ||
308 | #if 0 | 308 | #if 0 |
309 | if (widget->inherits("QMenuBar") || | 309 | if (widget->inherits("QMenuBar") || |
310 | widget->inherits("QPopupMenu" ) || | 310 | widget->inherits("QPopupMenu" ) || |
311 | widget->inherits("QToolButton") || | 311 | widget->inherits("QToolButton") || |
312 | widget->inherits("QHeader" ) ) { | 312 | widget->inherits("QHeader" ) ) { |
313 | widget->setBackgroundMode(QWidget::NoBackground); | 313 | widget->setBackgroundMode(QWidget::NoBackground); |
314 | } | 314 | } |
315 | // else if (widget->inherits("QFrame") ) { | 315 | // else if (widget->inherits("QFrame") ) { |
316 | // widget->installEventFilter(this); | 316 | // widget->installEventFilter(this); |
317 | // } | 317 | // } |
318 | #endif | 318 | #endif |
319 | } | 319 | } |
320 | 320 | ||
321 | void PhaseStyle::unPolish( QWidget *w ) | ||
322 | { | ||
323 | QWindowsStyle::unPolish( w ); | ||
324 | } | ||
325 | |||
321 | void PhaseStyle::polish( QPalette &pal ) { | 326 | void PhaseStyle::polish( QPalette &pal ) { |
322 | QWindowsStyle::polish( pal ); | 327 | QWindowsStyle::polish( pal ); |
323 | // lighten up a bit, so the look is not so "crisp" | 328 | // lighten up a bit, so the look is not so "crisp" |
324 | if (QPixmap::defaultDepth() > 8) { // but not on low color displays | 329 | if (QPixmap::defaultDepth() > 8) { // but not on low color displays |
325 | pal.setColor(QPalette::Disabled, QColorGroup::Dark, | 330 | pal.setColor(QPalette::Disabled, QColorGroup::Dark, |
326 | pal.color(QPalette::Disabled, QColorGroup::Dark).light(contrast)); | 331 | pal.color(QPalette::Disabled, QColorGroup::Dark).light(contrast)); |
327 | pal.setColor(QPalette::Active, QColorGroup::Dark, | 332 | pal.setColor(QPalette::Active, QColorGroup::Dark, |
328 | pal.color(QPalette::Active, QColorGroup::Dark).light(contrast)); | 333 | pal.color(QPalette::Active, QColorGroup::Dark).light(contrast)); |
329 | pal.setColor(QPalette::Inactive, QColorGroup::Dark, | 334 | pal.setColor(QPalette::Inactive, QColorGroup::Dark, |
330 | pal.color(QPalette::Inactive, QColorGroup::Dark).light(contrast)); | 335 | pal.color(QPalette::Inactive, QColorGroup::Dark).light(contrast)); |
331 | } | 336 | } |
332 | } | 337 | } |
333 | 338 | ||
334 | void PhaseStyle::polish( QApplication* app ) { | 339 | void PhaseStyle::polish( QApplication* app ) { |
335 | QWindowsStyle::polish( app ); | 340 | QWindowsStyle::polish( app ); |
336 | 341 | ||
337 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl)&PhaseStyle::drawMenuBarItem); | 342 | qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl)&PhaseStyle::drawMenuBarItem); |
338 | } | 343 | } |
339 | 344 | ||
345 | void PhaseStyle::unPolish( QApplication* app ) { | ||
346 | QWindowsStyle::unPolish(app); | ||
347 | qt_set_draw_menu_bar_impl ( 0 ); | ||
348 | } | ||
349 | |||
340 | void PhaseStyle::drawPushButtonLabel (QPushButton *button, QPainter *painter) { | 350 | void PhaseStyle::drawPushButtonLabel (QPushButton *button, QPainter *painter) { |
341 | bool active = button->isOn() || button->isDown(); | 351 | bool active = button->isOn() || button->isDown(); |
342 | QRect r = pushButtonContentsRect( button ); | 352 | QRect r = pushButtonContentsRect( button ); |
343 | QColorGroup group = button->colorGroup(); | 353 | QColorGroup group = button->colorGroup(); |
344 | int x, y, w, h; | 354 | int x, y, w, h; |
345 | r.rect( &x, &y, &w, &h ); | 355 | r.rect( &x, &y, &w, &h ); |
346 | bool sunken = false; | 356 | bool sunken = false; |
347 | QIconSet::Mode mode; | 357 | QIconSet::Mode mode; |
348 | QPixmap pixmap; | 358 | QPixmap pixmap; |
349 | 359 | ||
350 | if (active) {// shift contents | 360 | if (active) {// shift contents |
351 | x++; y++; | 361 | x++; y++; |
352 | sunken = true; | 362 | sunken = true; |
353 | } | 363 | } |
354 | 364 | ||
355 | 365 | ||
@@ -618,41 +628,41 @@ void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, | |||
618 | QRect rect(x, y, w, h ); | 628 | QRect rect(x, y, w, h ); |
619 | int x2, y2; | 629 | int x2, y2; |
620 | x2 = rect.right(); | 630 | x2 = rect.right(); |
621 | y2 = rect.bottom(); | 631 | y2 = rect.bottom(); |
622 | const QColorGroup& g = pal.active(); | 632 | const QColorGroup& g = pal.active(); |
623 | QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); | 633 | QColorGroup itemg = !enabled ? pal.disabled() : pal.active(); |
624 | 634 | ||
625 | if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); | 635 | if ( checkable || maxpmw ) maxpmw = QMAX(maxpmw, 20); |
626 | 636 | ||
627 | if (act && enabled ) | 637 | if (act && enabled ) |
628 | p->fillRect(x, y, w, h, g.highlight() ); | 638 | p->fillRect(x, y, w, h, g.highlight() ); |
629 | else | 639 | else |
630 | p->fillRect(x, y, w, h, g.background() ); | 640 | p->fillRect(x, y, w, h, g.background() ); |
631 | 641 | ||
632 | // draw seperator | 642 | // draw seperator |
633 | if (mi->isSeparator() ) { | 643 | if (mi->isSeparator() ) { |
634 | p->setPen( g.dark() ); | 644 | p->setPen( g.dark() ); |
635 | p->drawLine( x+8, y+1, x+w-8, y+1 ); | 645 | p->drawLine( x+8, y+1, x+w-8, y+1 ); |
636 | 646 | ||
637 | p->setPen( g.mid() ); | 647 | p->setPen( g.mid() ); |
638 | p->drawLine( x+8, y, x+w-8, y ); | 648 | p->drawLine( x+8, y, x+w-8, y ); |
639 | p->drawPoint(x+w,y+1); | 649 | p->drawPoint(x+w,y+1); |
640 | 650 | ||
641 | p->setPen( g.midlight() ); | 651 | p->setPen( g.midlight() ); |
642 | p->drawLine( x+8, y-1, x+w-8, y-1 ); | 652 | p->drawLine( x+8, y-1, x+w-8, y-1 ); |
643 | p->drawPoint(x+8, y ); | 653 | p->drawPoint(x+8, y ); |
644 | return; | 654 | return; |
645 | } | 655 | } |
646 | 656 | ||
647 | // draw icon | 657 | // draw icon |
648 | QIconSet::Mode mode; | 658 | QIconSet::Mode mode; |
649 | if ( mi->iconSet() && !mi->isChecked() ) { | 659 | if ( mi->iconSet() && !mi->isChecked() ) { |
650 | if ( act ) | 660 | if ( act ) |
651 | mode = enabled ? QIconSet::Active : QIconSet::Disabled; | 661 | mode = enabled ? QIconSet::Active : QIconSet::Disabled; |
652 | else | 662 | else |
653 | mode = enabled ? QIconSet::Normal : QIconSet::Disabled; | 663 | mode = enabled ? QIconSet::Normal : QIconSet::Disabled; |
654 | QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode ); | 664 | QPixmap pixmap = mi->iconSet()->pixmap(QIconSet::Small, mode ); |
655 | QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); | 665 | QRect pmrect(0, 0, pixmap.width(), pixmap.height() ); |
656 | QRect cr(x, y, maxpmw, h ); | 666 | QRect cr(x, y, maxpmw, h ); |
657 | pmrect.moveCenter( cr.center() ); | 667 | pmrect.moveCenter( cr.center() ); |
658 | p->drawPixmap(pmrect.topLeft(), pixmap); | 668 | p->drawPixmap(pmrect.topLeft(), pixmap); |
@@ -763,35 +773,35 @@ void PhaseStyle::tabbarMetrics( const QTabBar* t, int &hframe, int &vframe, int | |||
763 | 773 | ||
764 | void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, | 774 | void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, |
765 | bool selected ) { | 775 | bool selected ) { |
766 | bool edge = false; | 776 | bool edge = false; |
767 | int x, y, w, h; | 777 | int x, y, w, h; |
768 | QRect r = tab->rect(); | 778 | QRect r = tab->rect(); |
769 | r.rect(&x,&y,&w,&h); | 779 | r.rect(&x,&y,&w,&h); |
770 | const int x2 = x+w-1; | 780 | const int x2 = x+w-1; |
771 | const int y2 = y+h-1; | 781 | const int y2 = y+h-1; |
772 | const QColorGroup &group = bar->colorGroup(); | 782 | const QColorGroup &group = bar->colorGroup(); |
773 | 783 | ||
774 | 784 | ||
775 | painter->save(); | 785 | painter->save(); |
776 | 786 | ||
777 | // what position is the tab? | 787 | // what position is the tab? |
778 | if ((bar->count() == 1 )) | 788 | if ((bar->count() == 1 )) |
779 | edge = true; | 789 | edge = true; |
780 | else | 790 | else |
781 | edge = false; | 791 | edge = false; |
782 | 792 | ||
783 | switch (QTabBar::Shape(bar->shape())) { | 793 | switch (QTabBar::Shape(bar->shape())) { |
784 | case QTabBar::RoundedAbove: | 794 | case QTabBar::RoundedAbove: |
785 | case QTabBar::TriangularAbove: { | 795 | case QTabBar::TriangularAbove: { |
786 | if (!selected) { // shorten | 796 | if (!selected) { // shorten |
787 | y += 2; h -= 2; | 797 | y += 2; h -= 2; |
788 | } | 798 | } |
789 | if (selected) { | 799 | if (selected) { |
790 | painter->setPen(Qt::NoPen); | 800 | painter->setPen(Qt::NoPen); |
791 | painter->fillRect(x+1, y+1, w-1, h-1, | 801 | painter->fillRect(x+1, y+1, w-1, h-1, |
792 | group.brush(QColorGroup::Background)); | 802 | group.brush(QColorGroup::Background)); |
793 | } else | 803 | } else |
794 | drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2), | 804 | drawPhaseGradient(painter, QRect(x+1, y+1, w-1, h-2), |
795 | group.background().dark(contrast) ); | 805 | group.background().dark(contrast) ); |
796 | 806 | ||
797 | 807 | ||
diff --git a/noncore/styles/phase/phasestyle.h b/noncore/styles/phase/phasestyle.h index cbaa534..ae53efe 100644 --- a/noncore/styles/phase/phasestyle.h +++ b/noncore/styles/phase/phasestyle.h | |||
@@ -27,35 +27,37 @@ | |||
27 | #ifndef PHASESTYLE_H | 27 | #ifndef PHASESTYLE_H |
28 | #define PHASESTYLE_H | 28 | #define PHASESTYLE_H |
29 | 29 | ||
30 | #include <qstyle.h> | 30 | #include <qstyle.h> |
31 | #include <qwindowsstyle.h> | 31 | #include <qwindowsstyle.h> |
32 | #include <qcolor.h> | 32 | #include <qcolor.h> |
33 | 33 | ||
34 | class KPixmap; | 34 | class KPixmap; |
35 | 35 | ||
36 | class PhaseStyle : public QWindowsStyle | 36 | class PhaseStyle : public QWindowsStyle |
37 | { | 37 | { |
38 | Q_OBJECT | 38 | Q_OBJECT |
39 | public: | 39 | public: |
40 | PhaseStyle(); | 40 | PhaseStyle(); |
41 | virtual ~PhaseStyle(); | 41 | virtual ~PhaseStyle(); |
42 | 42 | ||
43 | void polish( QWidget * ); | 43 | virtual void polish( QWidget * ); |
44 | void polish( QPalette& ); | 44 | virtual void polish( QPalette& ); |
45 | void polish( QApplication* ); | 45 | virtual void polish( QApplication* a); |
46 | virtual void unPolish( QWidget * ); | ||
47 | virtual void unPolish(QApplication *a); | ||
46 | 48 | ||
47 | 49 | ||
48 | void drawCheckMark ( QPainter * p, int x, int y, int w, | 50 | void drawCheckMark ( QPainter * p, int x, int y, int w, |
49 | int h, const QColorGroup & g, | 51 | int h, const QColorGroup & g, |
50 | bool act, bool dis ); | 52 | bool act, bool dis ); |
51 | void drawArrow(QPainter *p, Qt::ArrowType type, bool down, | 53 | void drawArrow(QPainter *p, Qt::ArrowType type, bool down, |
52 | int x, int y, int w, int h, const QColorGroup &g, | 54 | int x, int y, int w, int h, const QColorGroup &g, |
53 | bool enabled=true, const QBrush *fill = 0); | 55 | bool enabled=true, const QBrush *fill = 0); |
54 | 56 | ||
55 | void drawPushButton(QPushButton* btn, QPainter* p ); | 57 | void drawPushButton(QPushButton* btn, QPainter* p ); |
56 | void drawPushButtonLabel(QPushButton* btn, QPainter* p ); | 58 | void drawPushButtonLabel(QPushButton* btn, QPainter* p ); |
57 | void drawPanel(QPainter* p, int , int, int, int, | 59 | void drawPanel(QPainter* p, int , int, int, int, |
58 | const QColorGroup&, bool sunken = false, | 60 | const QColorGroup&, bool sunken = false, |
59 | int lineWidth = 1, const QBrush *b = 0l ); | 61 | int lineWidth = 1, const QBrush *b = 0l ); |
60 | void drawButton( QPainter*, int x, int y, int w, int h, | 62 | void drawButton( QPainter*, int x, int y, int w, int h, |
61 | const QColorGroup&, bool sunken = false, | 63 | const QColorGroup&, bool sunken = false, |