diff --git a/kstyles/asteroid/asteroid.cpp b/kstyles/asteroid/asteroid.cpp index ca93f0b37..a618ef0e8 100644 --- a/kstyles/asteroid/asteroid.cpp +++ b/kstyles/asteroid/asteroid.cpp @@ -987,17 +987,16 @@ void AsteroidStyle::drawControl(TQ_ControlElement ce, if ( !w || !w->parentWidget() || !o.tab() ) break; - const TQTabBar * tb = (const TQTabBar *) w; const TQTab * t = o.tab(); bool selected = sf & Style_Selected; - bool lastTab = (tb->indexOf( t->identifier() ) == tb->count()-1) ? + bool lastTab = (ceData.tabBarData.identIndexMap[t->identifier()] == ceData.tabBarData.tabCount-1) ? TRUE : FALSE; TQRect r2( r ); - if ( tb->shape() == TQTabBar::RoundedAbove ) { + if ( ceData.tabBarData.shape == TQTabBar::RoundedAbove ) { p->setPen( cg.light() ); p->drawLine( r2.left(), r2.bottom()-1, r2.right(), r2.bottom()-1 ); if ( r2.left() == 0 ) - p->drawPoint( tb->rect().bottomLeft() ); + p->drawPoint( ceData.rect.bottomLeft() ); if ( selected ) { p->fillRect( TQRect( r2.left()+1, r2.bottom()-1, r2.width()-3, 2), @@ -1031,9 +1030,9 @@ void AsteroidStyle::drawControl(TQ_ControlElement ce, x2++; p->drawLine( x2, r2.top() + 2, x2, r2.bottom() - (selected ? (lastTab ? 0:1) :2)); - } else if ( tb->shape() == TQTabBar::RoundedBelow ) { - bool rightAligned = styleHint( SH_TabBar_Alignment, ceData, elementFlags, TQStyleOption::Default, 0, tb ) == TQt::AlignRight; - bool firstTab = tb->indexOf( t->identifier() ) == 0; + } else if ( ceData.tabBarData.shape == TQTabBar::RoundedBelow ) { + bool rightAligned = styleHint( SH_TabBar_Alignment, ceData, elementFlags, TQStyleOption::Default, 0, w ) == TQt::AlignRight; + bool firstTab = ceData.tabBarData.identIndexMap[t->identifier()] == 0; if ( selected ) { p->fillRect( TQRect( r2.left()+1, r2.top(), r2.width()-3, 1), cg.brush( TQColorGroup::Background )); @@ -1086,16 +1085,15 @@ void AsteroidStyle::drawControl(TQ_ControlElement ce, if ( o.isDefault() ) break; - const TQTabBar * tb = (const TQTabBar *) w; TQTab * t = o.tab(); const bool enabled = sf & Style_Enabled; bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags ); TQRect tr = r; - if ( t->identifier() == tb->currentTab() ) + if ( t->identifier() == ceData.tabBarData.currentTabIndex ) tr.setBottom( tr.bottom() - - pixelMetric( TQStyle::PM_DefaultFrameWidth, ceData, elementFlags, tb ) ); + pixelMetric( TQStyle::PM_DefaultFrameWidth, ceData, elementFlags, w ) ); int alignment = TQt::AlignCenter | TQt::ShowPrefix; if ((!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, w)) || ((styleHint(SH_HideUnderlineAcceleratorWhenAltUp, ceData, elementFlags, TQStyleOption::Default, 0, w)) && (!acceleratorsShown()))) @@ -1515,7 +1513,6 @@ void AsteroidStyle::drawControl(TQ_ControlElement ce, return; } - const TQPopupMenu *pum = dynamic_cast(w); static const int itemFrame = 2; static const int itemHMargin = 3; static const int itemVMargin = 3; @@ -1527,15 +1524,15 @@ void AsteroidStyle::drawControl(TQ_ControlElement ce, bool active = sf & Style_Active; bool disabled = !mi->isEnabled(); - bool checkable = pum->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool enabled = mi->isEnabled(); bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags ); int xpos = x; int xm = itemFrame + checkcol + itemHMargin; - if (pum->erasePixmap() && !pum->erasePixmap()->isNull()) { - p->drawPixmap(x, y, *pum->erasePixmap(), x, y, sw, sh); + if (!ceData.bgPixmap.isNull()) { + p->drawPixmap(x, y, ceData.bgPixmap, x, y, sw, sh); } else { p->fillRect(x, y, sw, sh, cg.background()); } @@ -2615,16 +2612,12 @@ void AsteroidStyle::paletteChanged() bool AsteroidStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ) { - if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) { - TQObject* o = reinterpret_cast(source); - /* Win2K has this interesting behaviour where it sets the current - default button to whatever pushbutton the user presses the mouse - on. I _think_ this emulates that properly. -clee */ - if (o->inherits(TQPUSHBUTTON_OBJECT_NAME_STRING)) { - if (e->type() == TQEvent::MouseButtonPress) { - TQPushButton *pb = dynamic_cast(o); - pb->setDefault(TRUE); - } + /* Win2K has this interesting behaviour where it sets the current + default button to whatever pushbutton the user presses the mouse + on. I _think_ this emulates that properly. -clee */ + if (ceData.widgetObjectTypes.contains(TQPUSHBUTTON_OBJECT_NAME_STRING)) { + if (e->type() == TQEvent::MouseButtonPress) { + widgetActionRequest(ceData, elementFlags, source, WAR_SetDefault); } } diff --git a/kstyles/highcolor/highcolor.cpp b/kstyles/highcolor/highcolor.cpp index bd17b3dfc..120f7d6e6 100644 --- a/kstyles/highcolor/highcolor.cpp +++ b/kstyles/highcolor/highcolor.cpp @@ -179,7 +179,6 @@ HighColorStyle::HighColorStyle( StyleType styleType ) type = styleType; highcolor = (type == HighColor && TQPixmap::defaultDepth() > 8); gDict.setAutoDelete(true); - hoverWidget = 0L; selectionBackground = false; } @@ -1121,9 +1120,6 @@ void HighColorStyle::drawControl( TQ_ControlElement element, // PUSHBUTTON // ------------------------------------------------------------------- case CE_PushButton: { - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - if ( type != HighColor ) { TQPushButton *button = (TQPushButton*) widget; TQRect br = r; @@ -1293,8 +1289,6 @@ void HighColorStyle::drawControl( TQ_ControlElement element, // POPUPMENU ITEM // ------------------------------------------------------------------- case CE_PopupMenuItem: { - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; - TQMenuItem *mi = opt.menuItem(); if ( !mi ) { // Don't leave blank holes if we set NoBackground for the TQPopupMenu. @@ -1307,7 +1301,7 @@ void HighColorStyle::drawControl( TQ_ControlElement element, int tab = opt.tabWidth(); int checkcol = opt.maxIconWidth(); bool enabled = mi->isEnabled(); - bool checkable = popupmenu->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool active = flags & Style_Active; bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags ); bool reverse = TQApplication::reverseLayout(); @@ -1971,31 +1965,22 @@ bool HighColorStyle::objectEventHandler( TQStyleControlElementData ceData, Contr if (KStyle::objectEventHandler( ceData, elementFlags, source, event )) return true; - if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) { + TQToolBar* toolbar; + + if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) + { TQObject* object = reinterpret_cast(source); - TQToolBar* toolbar; - - // Handle push button hover effects. - TQPushButton* button = dynamic_cast(object); - if ( button ) - { - if ( (event->type() == TQEvent::Enter) && - (button->isEnabled()) ) { - hoverWidget = button; - button->repaint( false ); - } - else if ( (event->type() == TQEvent::Leave) && - (TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget)) ) { - hoverWidget = 0L; - button->repaint( false ); - } - } else if ( object->parent() && !qstrcmp( object->name(), kdeToolbarWidget ) ) + if ( object->parent() && !qstrcmp( object->name(), kdeToolbarWidget ) ) { // Draw a gradient background for custom widgets in the toolbar // that have specified a "kde toolbar widget" name. + // FIXME + // This currently requires direct widget access + // Is there any way to do this without it? if (event->type() == TQEvent::Paint ) { + // Find the top-level toolbar of this widget, since it may be nested in other // widgets that are on the toolbar. TQWidget *widget = TQT_TQWIDGET(object); @@ -2023,11 +2008,16 @@ bool HighColorStyle::objectEventHandler( TQStyleControlElementData ceData, Contr return false; // Now draw the contents } } else if ( object->parent() && - (toolbar = dynamic_cast(object->parent())) ) + (toolbar = dynamic_cast(object->parent())) ) { // We need to override the paint event to draw a // gradient on a QToolBarExtensionWidget. + // FIXME + // This currently requires direct widget access + // Is there any way to do this without it? + if ( event->type() == TQEvent::Paint ) { + TQWidget *widget = TQT_TQWIDGET(object); TQRect wr = widget->rect(), tr = toolbar->rect(); TQPainter p( widget ); diff --git a/kstyles/highcolor/highcolor.h b/kstyles/highcolor/highcolor.h index 043441f95..461902403 100644 --- a/kstyles/highcolor/highcolor.h +++ b/kstyles/highcolor/highcolor.h @@ -171,7 +171,6 @@ class HighColorStyle : public KStyle int pwidth=-1, int pheight=-1 ) const; - TQWidget *hoverWidget; StyleType type; bool highcolor; mutable bool selectionBackground; diff --git a/kstyles/highcontrast/highcontrast.cpp b/kstyles/highcontrast/highcontrast.cpp index 543b71d0f..9d28dfd05 100644 --- a/kstyles/highcontrast/highcontrast.cpp +++ b/kstyles/highcontrast/highcontrast.cpp @@ -118,7 +118,6 @@ HighContrastStyle::HighContrastStyle() TQSettings settings; settings.beginGroup("/highcontraststyle/Settings/"); bool useWideLines = settings.readBoolEntry("wideLines", false); - hoverWidget = 0L; basicLineWidth = useWideLines ? 4 : 2; } @@ -665,9 +664,6 @@ void HighContrastStyle::drawKStylePrimitive (KStylePrimitive kpe, const TQStyleOption &opt, const TQWidget* widget ) const { - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - switch ( kpe ) { // TOOLBAR HANDLE @@ -760,9 +756,6 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, const TQStyleOption& opt, const TQWidget *widget ) const { - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - switch (element) { // TABS @@ -777,8 +770,7 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, setColorsNormal (p, cg, flags, Style_Selected); drawRoundRect (p, r); - const TQTabBar *tb = static_cast< const TQTabBar * >(widget); - TQTabBar::Shape shape = tb->shape(); + TQTabBar::Shape shape = ceData.tabBarData.shape; if (shape == TQTabBar::TriangularBelow || shape == TQTabBar::RoundedBelow) { p->fillRect (r.left(), r.top(), @@ -1008,14 +1000,13 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, setColorsNormal (p, cg, flags, Style_Active|Style_MouseOver); p->fillRect (r, p->backgroundColor ()); - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; TQMenuItem *mi = opt.menuItem(); if (!mi) break; int tab = opt.tabWidth(); int checkcol = opt.maxIconWidth(); - bool checkable = popupmenu->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool reverse = TQApplication::reverseLayout(); int x, y, w, h; r.rect( &x, &y, &w, &h ); @@ -1213,9 +1204,6 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, const TQStyleOption& opt, const TQWidget *widget ) const { - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - switch(control) { // COMBOBOX @@ -1830,49 +1818,6 @@ TQRect HighContrastStyle::subRect (SubRect subrect, const TQStyleControlElementD bool HighContrastStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *event ) { - if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) { - TQObject* object = reinterpret_cast(source); - - TQWidget* widget = dynamic_cast(object); - if (widget) - { - // Handle hover effects. - if (event->type() == TQEvent::Enter - && (widget->inherits (TQBUTTON_OBJECT_NAME_STRING) - || widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING) - || widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING))) - { - hoverWidget = widget; - widget->repaint (false); - } - else if (event->type() == TQEvent::Leave - && (widget->inherits (TQBUTTON_OBJECT_NAME_STRING) - || widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING) - || widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING))) - { - if (TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget)) - hoverWidget = 0L; - widget->repaint (false); - } - // Make sure the focus rectangle is shown correctly. - else if (event->type() == TQEvent::FocusIn || event->type() == TQEvent::FocusOut) - { - TQWidget* widgetparent = dynamic_cast(widget->parent()); - while (widgetparent - && ! widgetparent->inherits (TQCOMBOBOX_OBJECT_NAME_STRING) - && ! widgetparent->inherits (TQSPINWIDGET_OBJECT_NAME_STRING)) - { - widgetparent = dynamic_cast(widgetparent->parent()); - } - - if (widgetparent) - widgetparent->repaint (false); - else - widget->repaint (false); - } - } - } - return KStyle::objectEventHandler (ceData, elementFlags, source, event); } diff --git a/kstyles/highcontrast/highcontrast.h b/kstyles/highcontrast/highcontrast.h index 509d6552a..56470993a 100644 --- a/kstyles/highcontrast/highcontrast.h +++ b/kstyles/highcontrast/highcontrast.h @@ -152,8 +152,6 @@ class HighContrastStyle : public KStyle protected: virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); - TQWidget *hoverWidget; - private: void setColorsNormal (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const; void setColorsButton (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const; diff --git a/kstyles/keramik/keramik.cpp b/kstyles/keramik/keramik.cpp index af9866c2f..6d46df973 100644 --- a/kstyles/keramik/keramik.cpp +++ b/kstyles/keramik/keramik.cpp @@ -284,7 +284,6 @@ KeramikStyle::KeramikStyle() toolbarBlendWidget(0), titleBarMode(None), flatMode(false), customScrollMode(false), kickerMode(false) { forceSmallMode = false; - hoverWidget = 0; TQSettings settings; @@ -1368,9 +1367,6 @@ void KeramikStyle::drawControl( TQ_ControlElement element, if (isFormWidget(btn)) formMode = true; - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - if ( btn->isFlat( ) ) flatMode = true; @@ -1514,28 +1510,26 @@ void KeramikStyle::drawControl( TQ_ControlElement element, case CE_TabBarTab: { - const TQTabBar* tabBar = static_cast< const TQTabBar* >( widget ); - - bool bottom = tabBar->shape() == TQTabBar::RoundedBelow || - tabBar->shape() == TQTabBar::TriangularBelow; + bool bottom = ceData.tabBarData.shape == TQTabBar::RoundedBelow || + ceData.tabBarData.shape == TQTabBar::TriangularBelow; if ( flags & Style_Selected ) { TQRect tabRect = r; //If not the right-most tab, readjust the painting to be one pixel wider //to avoid a doubled line - int rightMost = TQApplication::reverseLayout() ? 0 : tabBar->count() - 1; + int rightMost = TQApplication::reverseLayout() ? 0 : ceData.tabBarData.tabCount - 1; - if (tabBar->indexOf( opt.tab()->identifier() ) != rightMost) + if (ceData.tabBarData.identIndexMap[opt.tab()->identifier()] != rightMost) tabRect.setWidth( tabRect.width() + 1); - Keramik::ActiveTabPainter( bottom ).draw( p, tabRect, cg.button().light(110), cg.background(), !tabBar->isEnabled(), pmode()); + Keramik::ActiveTabPainter( bottom ).draw( p, tabRect, cg.button().light(110), cg.background(), !(elementFlags & CEF_IsEnabled), pmode()); } else { Keramik::InactiveTabPainter::Mode mode; - int index = tabBar->indexOf( opt.tab()->identifier() ); + int index = ceData.tabBarData.identIndexMap[opt.tab()->identifier()]; if ( index == 0 ) mode = Keramik::InactiveTabPainter::First; - else if ( index == tabBar->count() - 1 ) mode = Keramik::InactiveTabPainter::Last; + else if ( index == ceData.tabBarData.tabCount - 1 ) mode = Keramik::InactiveTabPainter::Last; else mode = Keramik::InactiveTabPainter::Middle; if ( bottom ) @@ -1610,7 +1604,6 @@ void KeramikStyle::drawControl( TQ_ControlElement element, // POPUPMENU ITEM // ------------------------------------------------------------------- case CE_PopupMenuItem: { - const TQPopupMenu *popupmenu = static_cast< const TQPopupMenu * >( widget ); TQRect main = r; TQMenuItem *mi = opt.menuItem(); @@ -1627,7 +1620,7 @@ void KeramikStyle::drawControl( TQ_ControlElement element, int tab = opt.tabWidth(); int checkcol = opt.maxIconWidth(); bool enabled = mi->isEnabled(); - bool checkable = popupmenu->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool active = flags & Style_Active; bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags ); bool reverse = TQApplication::reverseLayout(); @@ -2037,9 +2030,6 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, if (toolbarMode) toolbarBlendWidget = widget; - if ( widget == hoverWidget ) - flags |= Style_MouseOver; - drawPrimitive( PE_ButtonCommand, p2, ceData, elementFlags, br, cg, flags ); toolbarBlendWidget = 0; @@ -2259,10 +2249,6 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, if (active & SC_ToolButtonMenu) mflags |= Style_Down; - if ( widget == hoverWidget ) - bflags |= Style_MouseOver; - - if (onToolbar && static_cast(TQT_TQWIDGET(widget->parent()))->orientation() == Qt::Horizontal) bflags |= Style_Horizontal; @@ -2420,11 +2406,10 @@ int KeramikStyle::pixelMetric(PixelMetric m, TQStyleControlElementData ceData, C case PM_TabBarTabShiftVertical: { - const TQTabBar* tb = ::tqqt_cast(widget); - if (tb) + if (ceData.widgetObjectTypes.contains(TQTABBAR_OBJECT_NAME_STRING)) { - if (tb->shape() == TQTabBar::RoundedBelow || - tb->shape() == TQTabBar::TriangularBelow) + if (ceData.tabBarData.shape == TQTabBar::RoundedBelow || + ceData.tabBarData.shape == TQTabBar::TriangularBelow) return 0; } @@ -2781,26 +2766,6 @@ bool KeramikStyle::objectEventHandler( TQStyleControlElementData ceData, Control if ( !object->isWidgetType() ) return false; - //Clear hover highlight when needed - if ( (event->type() == TQEvent::Leave) && (TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget)) ) - { - TQWidget* button = TQT_TQWIDGET(object); - hoverWidget = 0; - button->repaint( false ); - return false; - } - - //Hover highlight on buttons, toolbuttons and combos - if ( ::tqqt_cast(object) || ::tqqt_cast(object) || ::tqqt_cast(object) ) - { - if (event->type() == TQEvent::Enter && TQT_TQWIDGET(object)->isEnabled() ) - { - hoverWidget = TQT_TQWIDGET(object); - hoverWidget->repaint( false ); - } - return false; - } - //Combo line edits get special frames if ( event->type() == TQEvent::Paint && ::tqqt_cast(object) ) { diff --git a/kstyles/keramik/keramik.h b/kstyles/keramik/keramik.h index dd5ad6b31..d40b21dda 100644 --- a/kstyles/keramik/keramik.h +++ b/kstyles/keramik/keramik.h @@ -204,9 +204,6 @@ private: return maskMode?Keramik::TilePainter::PaintMask : Keramik::TilePainter::PaintFullBlend; } - TQWidget* hoverWidget; - - bool kickerMode; // For progress bar animation diff --git a/kstyles/kthemestyle/kthemestyle.cpp b/kstyles/kthemestyle/kthemestyle.cpp index 50f14b9e3..9a604014e 100644 --- a/kstyles/kthemestyle/kthemestyle.cpp +++ b/kstyles/kthemestyle/kthemestyle.cpp @@ -1261,11 +1261,10 @@ void KThemeStyle::drawControl( ControlElement element, case CE_TabBarTab: { - const TQTabBar* tb = ( const TQTabBar* ) widget; - TQTabBar::Shape tbs = tb->shape(); + TQTabBar::Shape tbs = ceData.tabBarData.shape; bool selected = how & Style_Selected; WidgetType widget = selected ? ActiveTab : InactiveTab; - const TQColorGroup *cg = colorGroup( tb->colorGroup(), widget ); + const TQColorGroup *cg = colorGroup( ceData.colorGroup, widget ); int i; int x2 = x + w - 1, y2 = y + h - 1; int bWidth = borderWidth( widget ); @@ -1276,7 +1275,7 @@ void KThemeStyle::drawControl( ControlElement element, if ( !selected ) { p->fillRect( x, y, x2 - x + 1, 2, - tb->palette().active().brush( TQColorGroup::Background ) ); + ceData.palette.active().brush( TQColorGroup::Background ) ); y += 2; } p->setPen( cg->text() ); @@ -1338,8 +1337,8 @@ void KThemeStyle::drawControl( ControlElement element, else p->fillRect( x, y, x2 - x + 1, y2 - y + 1, cg->background() ); } - else if ( tb->shape() == TQTabBar::RoundedBelow || - tb->shape() == TQTabBar::TriangularBelow ) + else if ( ceData.tabBarData.shape == TQTabBar::RoundedBelow || + ceData.tabBarData.shape == TQTabBar::TriangularBelow ) { if ( widget == ActiveTab ) widget = RotActiveTab; @@ -1349,7 +1348,7 @@ void KThemeStyle::drawControl( ControlElement element, if ( !selected ) { p->fillRect( x, y2 - 2, x2 - x + 1, 2, - tb->palette().active().brush( TQColorGroup::Background ) ); + ceData.palette.active().brush( TQColorGroup::Background ) ); y2 -= 2; } p->setPen( cg->text() ); @@ -1451,7 +1450,6 @@ void KThemeStyle::drawControl( ControlElement element, int x, y, w, h; r.rect( &x, &y, &w, &h ); - const TQPopupMenu *popupmenu = ( const TQPopupMenu * ) widget; TQMenuItem *mi = opt.menuItem(); if ( mi ) { @@ -1461,7 +1459,7 @@ void KThemeStyle::drawControl( ControlElement element, int tab = opt.tabWidth(); int checkcol = opt.maxIconWidth(); bool enabled = (mi? mi->isEnabled():true); - bool checkable = popupmenu->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool active = how & Style_Active; bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags, TQStyleOption::Default, 0, 0 ); bool reverse = TQApplication::reverseLayout(); diff --git a/kstyles/light/lightstyle-v2.cpp b/kstyles/light/lightstyle-v2.cpp index 8df9606ad..a77a5fe03 100644 --- a/kstyles/light/lightstyle-v2.cpp +++ b/kstyles/light/lightstyle-v2.cpp @@ -631,7 +631,6 @@ void LightStyleV2::drawControl( TQ_ControlElement control, switch (control) { case CE_TabBarTab: { - const TQTabBar* tb = static_cast(widget); bool below = false; TQRect tr(r); TQRect fr(r); @@ -639,7 +638,7 @@ void LightStyleV2::drawControl( TQ_ControlElement control, tr.addCoords(0, 0, 0, -1); fr.addCoords(2, 2, -2, -2); - if ( tb->shape() == TQTabBar::RoundedBelow || tb->shape() == TQTabBar::TriangularBelow) { + if ( ceData.tabBarData.shape == TQTabBar::RoundedBelow || ceData.tabBarData.shape == TQTabBar::TriangularBelow) { tr = r; tr.addCoords(0, 1, 0, 0); fr = r; fr.addCoords(2, 2,-2, -4); below = true; @@ -784,7 +783,6 @@ void LightStyleV2::drawControl( TQ_ControlElement control, if (! widget || data.isDefault()) break; - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; TQMenuItem *mi = data.menuItem(); int tab = data.tabWidth(); int maxpmw = data.maxIconWidth(); @@ -847,7 +845,7 @@ void LightStyleV2::drawControl( TQ_ControlElement control, if ((flags & Style_Active) && (flags & Style_Enabled)) mode = TQIconSet::Active; TQPixmap pixmap; - if (popupmenu->isCheckable() && mi->isChecked()) + if ((elementFlags & CEF_IsCheckable) && mi->isChecked()) pixmap = mi->iconSet()->pixmap( TQIconSet::Small, mode, TQIconSet::On ); else @@ -857,7 +855,7 @@ void LightStyleV2::drawControl( TQ_ControlElement control, pmr.moveCenter(cr.center()); p->setPen(cg.text()); p->drawPixmap(pmr.topLeft(), pixmap); - } else if (popupmenu->isCheckable() && mi->isChecked()) + } else if ((elementFlags & CEF_IsCheckable) && mi->isChecked()) drawPrimitive(PE_CheckMark, p, ceData, elementFlags, cr, cg, (flags & Style_Enabled) | Style_On); @@ -1538,7 +1536,6 @@ TQSize LightStyleV2::sizeFromContents( ContentsType contents, break; TQMenuItem *mi = data.menuItem(); - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; int maxpmw = data.maxIconWidth(); int w = contentsSize.width(), h = contentsSize.height(); @@ -1558,7 +1555,7 @@ TQSize LightStyleV2::sizeFromContents( ContentsType contents, if (mi->pixmap()) h = QMAX(h, mi->pixmap()->height()); else if (! mi->text().isNull()) - h = QMAX(h, popupmenu->fontMetrics().height() + 2); + h = QMAX(h, TQFontMetrics(ceData.font).height() + 2); if (mi->iconSet() != 0) h = QMAX(h, mi->iconSet()->pixmap(TQIconSet::Small, TQIconSet::Normal).height()); diff --git a/kstyles/light/lightstyle-v3.cpp b/kstyles/light/lightstyle-v3.cpp index 97c9d2e0b..565b8ac2c 100644 --- a/kstyles/light/lightstyle-v3.cpp +++ b/kstyles/light/lightstyle-v3.cpp @@ -819,10 +819,9 @@ void LightStyleV3::drawControl( TQ_ControlElement control, switch (control) { case CE_TabBarTab: { - const TQTabBar *tb = (const TQTabBar *) widget; TQRect br = r; - if ( tb->shape() == TQTabBar::RoundedAbove ) { + if ( ceData.tabBarData.shape == TQTabBar::RoundedAbove ) { if ( ! ( flags & Style_Selected ) ) { p->setPen( cg.background() ); p->drawLine( br.left(), br.bottom(), @@ -857,7 +856,7 @@ void LightStyleV3::drawControl( TQ_ControlElement control, else br.addCoords( 1, 1, -1, 0 ); p->fillRect( br, cg.background() ); - } else if ( tb->shape() == TQTabBar::RoundedBelow ) { + } else if ( ceData.tabBarData.shape == TQTabBar::RoundedBelow ) { if ( ! ( flags & Style_Selected ) ) { p->setPen( cg.background() ); p->drawLine( br.left(), br.top(), @@ -906,7 +905,6 @@ void LightStyleV3::drawControl( TQ_ControlElement control, if (! widget || data.isDefault()) break; - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; TQMenuItem *mi = data.menuItem(); int tab = data.tabWidth(); int maxpmw = data.maxIconWidth(); @@ -967,7 +965,7 @@ void LightStyleV3::drawControl( TQ_ControlElement control, if ((flags & Style_Active) && (flags & Style_Enabled)) mode = TQIconSet::Active; TQPixmap pixmap; - if (popupmenu->isCheckable() && mi->isChecked()) + if ((elementFlags & CEF_IsCheckable) && mi->isChecked()) pixmap = mi->iconSet()->pixmap( TQIconSet::Small, mode, TQIconSet::On ); else @@ -977,7 +975,7 @@ void LightStyleV3::drawControl( TQ_ControlElement control, pmr.moveCenter(cr.center()); p->setPen(cg.text()); p->drawPixmap(pmr.topLeft(), pixmap); - } else if (popupmenu->isCheckable() && mi->isChecked()) + } else if ((elementFlags & CEF_IsCheckable) && mi->isChecked()) drawPrimitive(PE_CheckMark, p, ceData, elementFlags, cr, cg, (flags & Style_Enabled) | Style_On); @@ -1765,7 +1763,6 @@ TQSize LightStyleV3::sizeFromContents( ContentsType contents, break; TQMenuItem *mi = data.menuItem(); - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; int maxpmw = data.maxIconWidth(); int w = contentsSize.width(), h = contentsSize.height(); @@ -1785,7 +1782,7 @@ TQSize LightStyleV3::sizeFromContents( ContentsType contents, if (mi->pixmap()) h = QMAX(h, mi->pixmap()->height()); else if (! mi->text().isNull()) - h = QMAX(h, popupmenu->fontMetrics().height() + 2); + h = QMAX(h, TQFontMetrics(ceData.font).height() + 2); if (mi->iconSet() != 0) h = QMAX(h, mi->iconSet()->pixmap(TQIconSet::Small, TQIconSet::Normal).height()); diff --git a/kstyles/plastik/plastik.cpp b/kstyles/plastik/plastik.cpp index 7dfc180ae..f8e775cc5 100644 --- a/kstyles/plastik/plastik.cpp +++ b/kstyles/plastik/plastik.cpp @@ -156,10 +156,6 @@ PlastikStyle::PlastikStyle() : KStyle( AllowMenuTransparency, ThreeButtonScrollB kornMode(false), flatMode(false) { - hoverWidget = 0; - hoverTab = 0; - - horizontalLine = 0; verticalLine = 0; @@ -1472,7 +1468,7 @@ void PlastikStyle::drawPrimitive(TQ_PrimitiveElement pe, bool horiz = flags & Style_Horizontal; const bool enabled = flags & Style_Enabled; const bool mouseOver = flags & Style_MouseOver; - + bool hasFocus = flags & Style_HasFocus; int x = r.x(); @@ -1835,7 +1831,7 @@ void PlastikStyle::drawPrimitive(TQ_PrimitiveElement pe, // -------------- case PE_Splitter: { // highlight on mouse over - TQColor color = (static_cast(static_cast(hoverWidget)) == static_cast(p->device()))?TQColor(cg.background().light(100+_contrast)):cg.background(); + TQColor color = (mouseOver)?TQColor(cg.background().light(100+_contrast)):cg.background(); p->fillRect(r, color); if (w > h) { if (h > 4) { @@ -2310,31 +2306,26 @@ void PlastikStyle::drawControl(TQ_ControlElement element, // TABS // ---- case CE_TabBarTab: { - const TQTabBar * tb = (const TQTabBar *) widget; bool cornerWidget = false; - if( ::tqqt_cast(tb->parent()) ) { - const TQTabWidget *tw = (const TQTabWidget*)tb->parent(); - // is there a corner widget in the (top) left edge? - TQWidget *cw = tw->cornerWidget(TQt::TopLeft); - if(cw) - cornerWidget = true; - } - TQTabBar::Shape tbs = tb->shape(); + if (!ceData.tabBarData.cornerWidgets[TQStyleControlElementTabBarData::CWL_TopLeft].widgetObjectTypes.isEmpty()) { + cornerWidget = true; + } + TQTabBar::Shape tbs = ceData.tabBarData.shape; bool selected = false; if (flags & Style_Selected) selected = true; TabPosition pos; - if (tb->count() == 1) { + if (ceData.tabBarData.tabCount == 1) { pos = Single; - } else if ((tb->indexOf(opt.tab()->identifier()) == 0)) { + } else if (ceData.tabBarData.identIndexMap[opt.tab()->identifier()] == 0) { pos = First; - } else if (tb->indexOf(opt.tab()->identifier()) == tb->count() - 1) { + } else if (ceData.tabBarData.identIndexMap[opt.tab()->identifier()] == (ceData.tabBarData.tabCount - 1)) { pos = Last; } else { pos = Middle; } bool mouseOver = false; - if (opt.tab() == hoverTab) { + if (opt.tab() == opt.hoverTab()) { mouseOver = true; flags |= Style_MouseOver; } @@ -2369,9 +2360,6 @@ void PlastikStyle::drawControl(TQ_ControlElement element, if (button->isFlat() ) flatMode = true; - if (widget == hoverWidget) - flags |= Style_MouseOver; - TQColorGroup g2 = cg; if (isDefault) g2.setColor(TQColorGroup::Background, cg.background().dark(120) ); @@ -2491,7 +2479,6 @@ void PlastikStyle::drawControl(TQ_ControlElement element, // POPUPMENU ITEM (highlighted on mouseover) // ------------------------------------------ case CE_PopupMenuItem: { - const TQPopupMenu *popupmenu = static_cast< const TQPopupMenu * >( widget ); TQMenuItem *mi = opt.menuItem(); if ( !mi ) @@ -2506,7 +2493,7 @@ void PlastikStyle::drawControl(TQ_ControlElement element, int tab = opt.tabWidth(); int checkcol = opt.maxIconWidth(); bool enabled = mi->isEnabled(); - bool checkable = popupmenu->isCheckable(); + bool checkable = (elementFlags & CEF_IsCheckable); bool active = flags & Style_Active; bool etchtext = styleHint( SH_EtchDisabledText, ceData, elementFlags ); bool reverse = TQApplication::reverseLayout(); @@ -2872,7 +2859,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, surfaceFlags |= Round_UpperRight|Round_BottomRight; } - if ((widget == hoverWidget) || (flags & Style_MouseOver)) { + if (flags & Style_MouseOver) { surfaceFlags |= Is_Highlight; if(editable) surfaceFlags |= Highlight_Left|Highlight_Right; surfaceFlags |= Highlight_Top|Highlight_Bottom; @@ -2889,7 +2876,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, surfaceFlags |= Round_UpperLeft|Round_BottomLeft; } - if ((widget == hoverWidget) || (flags & Style_MouseOver)) { + if (flags & Style_MouseOver) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Top|Highlight_Bottom; } @@ -2974,7 +2961,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, if (controls & SC_ToolButton) { // If we're pressed, on, or raised... - if (bflags & (Style_Down | Style_On | Style_Raised) || widget==hoverWidget ) { + if (bflags & (Style_Down | Style_On | Style_Raised) || (flags & Style_MouseOver) ) { drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt); } else if (tb->parentWidget() && tb->parentWidget()->backgroundPixmap() && @@ -3084,7 +3071,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, } else { surfaceFlags |= Round_UpperRight; } - if ((widget == hoverWidget) || (sflags & Style_MouseOver)) { + if (sflags & Style_MouseOver) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Top|Highlight_Left|Highlight_Right; } @@ -3098,7 +3085,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, } else { surfaceFlags |= Round_BottomRight; } - if ((widget == hoverWidget) || (sflags & Style_MouseOver)) { + if (sflags & Style_MouseOver) { surfaceFlags |= Is_Highlight; surfaceFlags |= Highlight_Bottom|Highlight_Left|Highlight_Right; } @@ -3278,9 +3265,8 @@ int PlastikStyle::pixelMetric(PixelMetric m, TQStyleControlElementData ceData, C // TABS // ---- case PM_TabBarTabVSpace: { - const TQTabBar * tb = (const TQTabBar *) widget; - if (tb->shape() == TQTabBar::RoundedAbove || - tb->shape() == TQTabBar::RoundedBelow) + if (ceData.tabBarData.shape == TQTabBar::RoundedAbove || + ceData.tabBarData.shape == TQTabBar::RoundedBelow) return 12; else return 4; @@ -3487,84 +3473,7 @@ bool PlastikStyle::objectEventHandler( TQStyleControlElementData ceData, Control TQObject* obj = reinterpret_cast(source); 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 tqqt_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) || 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) ) { diff --git a/kstyles/plastik/plastik.h b/kstyles/plastik/plastik.h index 995bb7c85..fb8c0a2de 100644 --- a/kstyles/plastik/plastik.h +++ b/kstyles/plastik/plastik.h @@ -268,7 +268,6 @@ protected: virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); - TQWidget* hoverWidget; protected slots: void khtmlWidgetDestroyed(TQObject* w); @@ -301,8 +300,6 @@ private: TQColor _focusHighlightColor; TQColor _checkMarkColor; - TQTab *hoverTab; - // track khtml widgets. TQMap khtmlWidgets; diff --git a/tdefx/kstyle.cpp b/tdefx/kstyle.cpp index e9e5d2105..8720d368d 100644 --- a/tdefx/kstyle.cpp +++ b/tdefx/kstyle.cpp @@ -701,8 +701,7 @@ void KStyle::drawControl( TQ_ControlElement element, // TABS // ------------------------------------------------------------------------ case CE_TabBarTab: { - const TQTabBar* tb = (const TQTabBar*) widget; - TQTabBar::Shape tbs = tb->shape(); + TQTabBar::Shape tbs = ceData.tabBarData.shape; bool selected = flags & Style_Selected; int x = r.x(), y=r.y(), bottom=r.bottom(), right=r.right(); @@ -1043,17 +1042,15 @@ int KStyle::pixelMetric(PixelMetric m, TQStyleControlElementData ceData, Control return 24; case PM_TabBarTabVSpace: { - const TQTabBar * tb = (const TQTabBar *) widget; - if ( tb->shape() == TQTabBar::RoundedAbove || - tb->shape() == TQTabBar::RoundedBelow ) + if ( ceData.tabBarData.shape == TQTabBar::RoundedAbove || + ceData.tabBarData.shape == TQTabBar::RoundedBelow ) return 10; else return 4; } case PM_TabBarTabOverlap: { - const TQTabBar* tb = (const TQTabBar*)widget; - TQTabBar::Shape tbs = tb->shape(); + TQTabBar::Shape tbs = ceData.tabBarData.shape; if ( (tbs == TQTabBar::RoundedAbove) || (tbs == TQTabBar::RoundedBelow) )