diff --git a/style/lipstik.cpp b/style/lipstik.cpp index 150226e..7b4c1a3 100644 --- a/style/lipstik.cpp +++ b/style/lipstik.cpp @@ -278,101 +278,112 @@ LipstikStyle::~LipstikStyle() delete verticalLine; } -void LipstikStyle::polish(TQApplication* app) +void LipstikStyle::applicationPolish(TQStyleControlElementData ceData, ControlElementFlags, void *ptr) { - if (!qstrcmp(app->argv()[0], "kicker")) - kickerMode = true; - else if (!qstrcmp(app->argv()[0], "korn")) - kornMode = true; + if (ceData.widgetObjectTypes.contains(TQAPPLICATION_OBJECT_NAME_STRING)) { + TQApplication *app = reinterpret_cast(ptr); + if (!qstrcmp(app->argv()[0], "kicker")) + kickerMode = true; + else if (!qstrcmp(app->argv()[0], "korn")) + kornMode = true; + } } -void LipstikStyle::polish(TQWidget* widget) +void LipstikStyle::polish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr) { - if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? - khtmlWidgets[widget] = true; - connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(khtmlWidgetDestroyed(TQObject*))); - } - - // use tqt_cast where possible to check if the widget inheits one of the classes. might improve - // performance compared to TQObject::inherits() - if ( ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) - ) - { - widget->installEventFilter(this); - } else if (::tqqt_cast(widget)) { - widget->setMouseTracking(true); - widget->installEventFilter(this); - } else if (::tqqt_cast(widget)) { - widget->setBackgroundMode( NoBackground ); - } else if(::tqqt_cast(widget)) { - widget->setMouseTracking(true); - widget->installEventFilter(this); - } else if (widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) || widget->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) ) { - widget->installEventFilter(this); - } else if (::tqqt_cast(widget)) { - widget->installEventFilter(this); - } else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) { - widget->installEventFilter(this); - } + if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) { + TQWidget *widget = reinterpret_cast(ptr); - if( _animateProgressBar && ::tqqt_cast(widget) ) { - widget->installEventFilter(this); - progAnimWidgets[widget] = 0; - connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(progressBarDestroyed(TQObject*))); - if (!animationTimer->isActive()) - animationTimer->start( 50, false ); - } else if( !qstrcmp(widget->className(), "KonqFrameStatusBar") ) { - // This disables the white background of the KonquerorFrameStatusBar. - // When the green led is shown the background is set to - // applications cg.midlight() so we override it to standard background. - // Thanks Comix! (because this was ugly from day one!) - // NOTE: Check if we can set it earlier (before painting), cause - // on slow machines we can see the repainting of the bar (from white to background...) - TQPalette kPalette = TQApplication::palette(); - kPalette.setColor( TQColorGroup::Midlight,kPalette.active().background() ); - TQApplication::setPalette( kPalette ); + if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? + khtmlWidgets[widget] = true; + connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(khtmlWidgetDestroyed(TQObject*))); + } + + // use tqt_cast where possible to check if the widget inheits one of the classes. might improve + // performance compared to TQObject::inherits() + if ( ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) + ) + { + installObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (::tqqt_cast(widget)) { + widget->setMouseTracking(true); + installObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (::tqqt_cast(widget)) { + widget->setBackgroundMode( NoBackground ); + } else if(::tqqt_cast(widget)) { + widget->setMouseTracking(true); + installObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) || widget->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) ) { + installObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (::tqqt_cast(widget)) { + installObjectEventHandler(ceData, elementFlags, ptr, this); + } else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) { + installObjectEventHandler(ceData, elementFlags, ptr, this); + } + + if( _animateProgressBar && ::tqqt_cast(widget) ) { + installObjectEventHandler(ceData, elementFlags, ptr, this); + progAnimWidgets[widget] = 0; + connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(progressBarDestroyed(TQObject*))); + if (!animationTimer->isActive()) + animationTimer->start( 50, false ); + } else if( !qstrcmp(widget->className(), "KonqFrameStatusBar") ) { + // This disables the white background of the KonquerorFrameStatusBar. + // When the green led is shown the background is set to + // applications cg.midlight() so we override it to standard background. + // Thanks Comix! (because this was ugly from day one!) + // NOTE: Check if we can set it earlier (before painting), cause + // on slow machines we can see the repainting of the bar (from white to background...) + TQPalette kPalette = TQApplication::palette(); + kPalette.setColor( TQColorGroup::Midlight,kPalette.active().background() ); + TQApplication::setPalette( kPalette ); + } } - KStyle::polish(widget); + KStyle::polish(ceData, elementFlags, ptr); } -void LipstikStyle::unPolish(TQWidget* widget) +void LipstikStyle::unPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr) { - if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? - khtmlWidgets.remove(widget); - } + if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) { + TQWidget *widget = reinterpret_cast(ptr); - // use tqt_cast to check if the widget inheits one of the classes. - if ( ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) || ::tqqt_cast(widget) || - ::tqqt_cast(widget) || ::tqqt_cast(widget) || - widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) ) - { - widget->removeEventFilter(this); - } - else if (::tqqt_cast(widget)) { - widget->setMouseTracking(false); - widget->removeEventFilter(this); - } else if (::tqqt_cast(widget)) { - widget->setMouseTracking(false); - widget->removeEventFilter(this); - } else if (::tqqt_cast(widget)) { - widget->setBackgroundMode( PaletteBackground ); - } else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) { - widget->removeEventFilter(this); - } - - if ( ::tqqt_cast(widget) ) { - progAnimWidgets.remove(widget); - } else if( widget->inherits("KonqFrameStatusBar") ) { - widget->removeEventFilter(this); + if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? + khtmlWidgets.remove(widget); + } + + // use tqt_cast to check if the widget inheits one of the classes. + if ( ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) || ::tqqt_cast(widget) || + ::tqqt_cast(widget) || ::tqqt_cast(widget) || + widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) ) + { + removeObjectEventHandler(ceData, elementFlags, ptr, this); + } + else if (::tqqt_cast(widget)) { + widget->setMouseTracking(false); + removeObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (::tqqt_cast(widget)) { + widget->setMouseTracking(false); + removeObjectEventHandler(ceData, elementFlags, ptr, this); + } else if (::tqqt_cast(widget)) { + widget->setBackgroundMode( PaletteBackground ); + } else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) { + removeObjectEventHandler(ceData, elementFlags, ptr, this); + } + + if ( ::tqqt_cast(widget) ) { + progAnimWidgets.remove(widget); + } else if( widget->inherits("KonqFrameStatusBar") ) { + removeObjectEventHandler(ceData, elementFlags, ptr, this); + } } - KStyle::unPolish(widget); + KStyle::unPolish(ceData, elementFlags, ptr); } void LipstikStyle::khtmlWidgetDestroyed(TQObject* obj) @@ -3958,106 +3969,110 @@ int LipstikStyle::styleHint( StyleHint stylehint, } } -bool LipstikStyle::eventFilter(TQObject *obj, TQEvent *ev) +bool LipstikStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *ev ) { - if (KStyle::eventFilter(obj, ev) ) + if (KStyle::objectEventHandler(ceData, elementFlags, source, ev) ) return true; - if (!obj->isWidgetType() ) return false; - - // focus highlight - if ( ::tqqt_cast(obj) ) { - TQWidget* widget = TQT_TQWIDGET(obj); - - if ( ::tqqt_cast(widget->parentWidget()) ) - { - TQWidget* spinbox = widget->parentWidget(); - if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut)) - { - spinbox->repaint(false); - } - return false; - } - - if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut)) - { - widget->repaint(false); - } - return false; - } - - //Hover highlight... use tqt_cast to check if the widget inheits one of the classes. - if ( ::tqqt_cast(obj) || ::tqqt_cast(obj) || - ::tqqt_cast(obj) || ::tqqt_cast(obj) || - ::tqqt_cast(obj) || ::tqqt_cast(obj) || - ::tqqt_cast(obj) || ::tqqt_cast(obj) || - obj->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) || obj->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) ) - { - if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled()) - { - TQWidget* button = TQT_TQWIDGET(obj); - hoverWidget = button; - button->repaint(false); - } - else if ((ev->type() == TQEvent::Leave) && (TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(hoverWidget)) ) - { - TQWidget* button = TQT_TQWIDGET(obj); - hoverWidget = 0; - button->repaint(false); - } - return false; - } - if ( ::tqqt_cast(obj) ) { - if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled()) - { - TQWidget* tabbar = TQT_TQWIDGET(obj); - hoverWidget = tabbar; - hoverTab = 0; - tabbar->repaint(false); - } - else if (ev->type() == TQEvent::MouseMove) - { - TQTabBar *tabbar = dynamic_cast(obj); - TQMouseEvent *me = dynamic_cast(ev); - - if (tabbar && me) { - // avoid unnecessary repaints (which otherwise would occour on every - // MouseMove event causing high cpu load). + if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) { + TQObject* obj = reinterpret_cast(source); - bool repaint = true; - - TQTab *tab = tabbar->selectTab(me->pos() ); - if (hoverTab == tab) - repaint = false; - hoverTab = tab; - - if (repaint) - tabbar->repaint(false); - } - } - else if (ev->type() == TQEvent::Leave) - { - TQWidget* tabbar = TQT_TQWIDGET(obj); - hoverWidget = 0; - hoverTab = 0; - tabbar->repaint(false); - } - return false; - } - // Track show events for progress bars - if ( _animateProgressBar && ::tqqt_cast(obj) ) - { - if ((ev->type() == TQEvent::Show) && !animationTimer->isActive()) - { - animationTimer->start( 50, false ); - } - } - if ( !qstrcmp(obj->name(), "kde toolbar widget") ) - { - TQWidget* lb = TQT_TQWIDGET(obj); - if (lb->backgroundMode() == TQt::PaletteButton) - lb->setBackgroundMode(TQt::PaletteBackground); - lb->removeEventFilter(this); + if (!obj->isWidgetType() ) return false; + + // focus highlight + if ( ::tqqt_cast(obj) ) { + TQWidget* widget = TQT_TQWIDGET(obj); + + if ( ::tqqt_cast(widget->parentWidget()) ) + { + TQWidget* spinbox = widget->parentWidget(); + if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut)) + { + spinbox->repaint(false); + } + return false; + } + + if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut)) + { + widget->repaint(false); + } + return false; + } + + //Hover highlight... use tqt_cast to check if the widget inheits one of the classes. + if ( ::tqqt_cast(obj) || ::tqqt_cast(obj) || + ::tqqt_cast(obj) || ::tqqt_cast(obj) || + ::tqqt_cast(obj) || ::tqqt_cast(obj) || + ::tqqt_cast(obj) || ::tqqt_cast(obj) || + obj->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) || obj->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) ) + { + if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled()) + { + TQWidget* button = TQT_TQWIDGET(obj); + hoverWidget = button; + button->repaint(false); + } + else if ((ev->type() == TQEvent::Leave) && (TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(hoverWidget)) ) + { + TQWidget* button = TQT_TQWIDGET(obj); + hoverWidget = 0; + button->repaint(false); + } + return false; + } + if ( ::tqqt_cast(obj) ) { + if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled()) + { + TQWidget* tabbar = TQT_TQWIDGET(obj); + hoverWidget = tabbar; + hoverTab = 0; + tabbar->repaint(false); + } + else if (ev->type() == TQEvent::MouseMove) + { + TQTabBar *tabbar = dynamic_cast(obj); + TQMouseEvent *me = dynamic_cast(ev); + + if (tabbar && me) { + // avoid unnecessary repaints (which otherwise would occour on every + // MouseMove event causing high cpu load). + + bool repaint = true; + + TQTab *tab = tabbar->selectTab(me->pos() ); + if (hoverTab == tab) + repaint = false; + hoverTab = tab; + + if (repaint) + tabbar->repaint(false); + } + } + else if (ev->type() == TQEvent::Leave) + { + TQWidget* tabbar = TQT_TQWIDGET(obj); + hoverWidget = 0; + hoverTab = 0; + tabbar->repaint(false); + } + return false; + } + // Track show events for progress bars + if ( _animateProgressBar && ::tqqt_cast(obj) ) + { + if ((ev->type() == TQEvent::Show) && !animationTimer->isActive()) + { + animationTimer->start( 50, false ); + } + } + if ( !qstrcmp(obj->name(), "kde toolbar widget") ) + { + TQWidget* lb = TQT_TQWIDGET(obj); + if (lb->backgroundMode() == TQt::PaletteButton) + lb->setBackgroundMode(TQt::PaletteBackground); + removeObjectEventHandler(ceData, elementFlags, source, this); + } } return false; diff --git a/style/lipstik.h b/style/lipstik.h index ca2721d..98edac9 100644 --- a/style/lipstik.h +++ b/style/lipstik.h @@ -69,9 +69,9 @@ public: LipstikStyle(); virtual ~LipstikStyle(); - void polish(TQApplication* app ); - void polish(TQWidget* widget ); - void unPolish(TQWidget* widget ); + void applicationPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *); + void polish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *); + void unPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *); void drawKStylePrimitive(KStylePrimitive kpe, TQPainter* p, @@ -276,7 +276,7 @@ protected: virtual void renderMenuBlendPixmap( KPixmap& pix, const TQColorGroup& cg, const TQPopupMenu* popup ) const; - bool eventFilter(TQObject *, TQEvent *); + virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); TQWidget* hoverWidget; protected slots: