author | alwin <alwin> | 2004-11-02 12:35:34 (UTC) |
---|---|---|
committer | alwin <alwin> | 2004-11-02 12:35:34 (UTC) |
commit | e246d0590286f6b9b0d5d40f1a17caa78c015b21 (patch) (side-by-side diff) | |
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 @@ -313,16 +313,21 @@ void PhaseStyle::polish( QWidget* widget ) { widget->setBackgroundMode(QWidget::NoBackground); } // else if (widget->inherits("QFrame") ) { // widget->installEventFilter(this); // } #endif } +void PhaseStyle::unPolish( QWidget *w ) +{ + QWindowsStyle::unPolish( w ); +} + void PhaseStyle::polish( QPalette &pal ) { QWindowsStyle::polish( pal ); // lighten up a bit, so the look is not so "crisp" if (QPixmap::defaultDepth() > 8) { // but not on low color displays pal.setColor(QPalette::Disabled, QColorGroup::Dark, pal.color(QPalette::Disabled, QColorGroup::Dark).light(contrast)); pal.setColor(QPalette::Active, QColorGroup::Dark, pal.color(QPalette::Active, QColorGroup::Dark).light(contrast)); @@ -332,16 +337,21 @@ void PhaseStyle::polish( QPalette &pal ) { } void PhaseStyle::polish( QApplication* app ) { QWindowsStyle::polish( app ); qt_set_draw_menu_bar_impl((QDrawMenuBarItemImpl)&PhaseStyle::drawMenuBarItem); } +void PhaseStyle::unPolish( QApplication* app ) { + QWindowsStyle::unPolish(app); + qt_set_draw_menu_bar_impl ( 0 ); +} + void PhaseStyle::drawPushButtonLabel (QPushButton *button, QPainter *painter) { bool active = button->isOn() || button->isDown(); QRect r = pushButtonContentsRect( button ); QColorGroup group = button->colorGroup(); int x, y, w, h; r.rect( &x, &y, &w, &h ); bool sunken = false; QIconSet::Mode mode; @@ -626,25 +636,25 @@ void PhaseStyle::drawPopupMenuItem ( QPainter * p, bool checkable, if (act && enabled ) p->fillRect(x, y, w, h, g.highlight() ); else p->fillRect(x, y, w, h, g.background() ); // draw seperator if (mi->isSeparator() ) { - p->setPen( g.dark() ); - p->drawLine( x+8, y+1, x+w-8, y+1 ); + p->setPen( g.dark() ); + p->drawLine( x+8, y+1, x+w-8, y+1 ); p->setPen( g.mid() ); p->drawLine( x+8, y, x+w-8, y ); p->drawPoint(x+w,y+1); - p->setPen( g.midlight() ); - p->drawLine( x+8, y-1, x+w-8, y-1 ); + p->setPen( g.midlight() ); + p->drawLine( x+8, y-1, x+w-8, y-1 ); p->drawPoint(x+8, y ); return; } // draw icon QIconSet::Mode mode; if ( mi->iconSet() && !mi->isChecked() ) { if ( act ) @@ -771,19 +781,19 @@ void PhaseStyle::drawTab(QPainter* painter, const QTabBar* bar, QTab* tab, const int y2 = y+h-1; const QColorGroup &group = bar->colorGroup(); painter->save(); // what position is the tab? if ((bar->count() == 1 )) - edge = true; + edge = true; else - edge = false; + edge = false; switch (QTabBar::Shape(bar->shape())) { case QTabBar::RoundedAbove: case QTabBar::TriangularAbove: { if (!selected) { // shorten y += 2; h -= 2; } if (selected) { 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 @@ -35,19 +35,21 @@ class KPixmap; class PhaseStyle : public QWindowsStyle { Q_OBJECT public: PhaseStyle(); virtual ~PhaseStyle(); - void polish( QWidget * ); - void polish( QPalette& ); - void polish( QApplication* ); + virtual void polish( QWidget * ); + virtual void polish( QPalette& ); + virtual void polish( QApplication* a); + virtual void unPolish( QWidget * ); + virtual void unPolish(QApplication *a); void drawCheckMark ( QPainter * p, int x, int y, int w, int h, const QColorGroup & g, bool act, bool dis ); void drawArrow(QPainter *p, Qt::ArrowType type, bool down, int x, int y, int w, int h, const QColorGroup &g, bool enabled=true, const QBrush *fill = 0); |