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 | 10 | ||||
-rw-r--r-- | noncore/styles/phase/phasestyle.h | 8 |
2 files changed, 15 insertions, 3 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 ) { if (widget->inherits("QMenuBar") || widget->inherits("QPopupMenu" ) || widget->inherits("QToolButton") || widget->inherits("QHeader" ) ) { 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)); pal.setColor(QPalette::Inactive, QColorGroup::Dark, pal.color(QPalette::Inactive, QColorGroup::Dark).light(contrast)); } } 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; QPixmap pixmap; if (active) {// shift contents x++; y++; 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 @@ #include <qwindowsstyle.h> #include <qcolor.h> 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); void drawPushButton(QPushButton* btn, QPainter* p ); void drawPushButtonLabel(QPushButton* btn, QPainter* p ); void drawPanel(QPainter* p, int , int, int, int, |