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 /noncore | |
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 | |||
@@ -309,43 +309,53 @@ void PhaseStyle::polish( QWidget* widget ) { | |||
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++; |
@@ -622,33 +632,33 @@ void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, | |||
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 ); |
@@ -767,27 +777,27 @@ void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, | |||
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 |
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 | |||
@@ -31,27 +31,29 @@ | |||
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, |