diff options
author | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-11-08 13:39:51 -0600 |
---|---|---|
committer | Timothy Pearson <kb9vqf@pearsoncomputing.net> | 2012-11-08 13:39:51 -0600 |
commit | 03733ab120b5c50be66c7d03fc3926d7815a8cfb (patch) | |
tree | d59b7d50a248fefacbbcc80ea470a5fa681f5bc0 /kstyles | |
parent | 9f835b0b506b54e14e2e45301f2d3fc84dc51432 (diff) | |
download | tdelibs-03733ab120b5c50be66c7d03fc3926d7815a8cfb.tar.gz tdelibs-03733ab120b5c50be66c7d03fc3926d7815a8cfb.zip |
Fix crashes in some styles when used with third party toolkits
Diffstat (limited to 'kstyles')
-rw-r--r-- | kstyles/asteroid/asteroid.cpp | 16 | ||||
-rw-r--r-- | kstyles/highcontrast/highcontrast.cpp | 40 | ||||
-rw-r--r-- | kstyles/keramik/keramik.cpp | 132 | ||||
-rw-r--r-- | kstyles/plastik/plastik.cpp | 30 |
4 files changed, 105 insertions, 113 deletions
diff --git a/kstyles/asteroid/asteroid.cpp b/kstyles/asteroid/asteroid.cpp index a5e8f88cd..a14574bb0 100644 --- a/kstyles/asteroid/asteroid.cpp +++ b/kstyles/asteroid/asteroid.cpp @@ -2113,7 +2113,12 @@ void AsteroidStyle::drawComplexControl(TQ_ComplexControl cc, } p2.end(); - bitBlt((TQWidget*)w, r.x(), r.y(), &pix); + if (w) { + bitBlt((TQWidget*)w, r.x(), r.y(), &pix); + } + else { + p->drawPixmap(r.topLeft(), pix); + } break; } @@ -2429,10 +2434,6 @@ TQRect AsteroidStyle::querySubControlMetrics(TQ_ComplexControl cc, SC_ListViewExpand */ case CC_ComboBox: { - if (!w) { - return TQRect(); - } - TQRect r(ceData.rect); switch (sc) { @@ -2552,12 +2553,11 @@ TQSize AsteroidStyle::sizeFromContents(ContentsType ct, } case CT_PopupMenuItem: { - if (!w || o.isDefault()) { + if (o.isDefault()) { return TQSize(0, 0); } int sw = s.width(), sh = s.height(); - const TQPopupMenu *popup = dynamic_cast<const TQPopupMenu *>(w); TQMenuItem *mi = o.menuItem(); if (mi->custom()) { @@ -2588,7 +2588,7 @@ TQSize AsteroidStyle::sizeFromContents(ContentsType ct, int miw = o.maxIconWidth(); if (miw) { sw += miw; - if (popup->isCheckable()) { + if (elementFlags & CEF_IsCheckable) { sw += 20 - miw; } } diff --git a/kstyles/highcontrast/highcontrast.cpp b/kstyles/highcontrast/highcontrast.cpp index 5822452a5..c4b4187cf 100644 --- a/kstyles/highcontrast/highcontrast.cpp +++ b/kstyles/highcontrast/highcontrast.cpp @@ -838,15 +838,15 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, case CE_PushButton: { TQPushButton *button = (TQPushButton*) widget; TQRect br = r; - bool btnDefault = button->isDefault(); + bool btnDefault = (elementFlags & CEF_IsDefault); - if (( btnDefault || button->autoDefault() ) && (button->isEnabled())) { + if (( btnDefault || (elementFlags & CEF_AutoDefault) ) && (elementFlags & CEF_IsEnabled)) { // Compensate for default indicator static int di = pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags ); addOffset (&br, di); } - if ( btnDefault && (button->isEnabled())) + if ( btnDefault && (elementFlags & CEF_IsEnabled)) tqdrawPrimitive( PE_ButtonDefault, p, ceData, elementFlags, r, cg, flags ); tqdrawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags ); @@ -875,8 +875,7 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, r.rect( &x, &y, &w, &h ); if (element == CE_ProgressBarLabel) { - TQProgressBar* progressbar = (TQProgressBar*) widget; - text = progressbar->progressString(); + text = ceData.progressText; setColorsNormal (p, cg, flags); } else if (element == CE_TabBarLabel) { @@ -887,27 +886,24 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, setColorsNormal (p, cg, flags, Style_Selected); } else if (element == CE_ToolButtonLabel) { - TQToolButton* toolbutton = (TQToolButton*) widget; - text = toolbutton->text(); - pixmap = toolbutton->pixmap(); - if (!toolbutton->iconSet().isNull()) - icon = toolbutton->iconSet().pixmap (TQIconSet::Small, mode, state); - popup = toolbutton->popup(); + text = ceData.text; + pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; + if (!ceData.iconSet.isNull()) + icon = ceData.iconSet.pixmap (TQIconSet::Small, mode, state); + popup = (elementFlags & CEF_HasPopupMenu); setColorsButton (p, cg, flags); } else if (element == CE_PushButtonLabel) { - TQPushButton* pushbutton = (TQPushButton*) widget; - text = pushbutton->text(); - pixmap = pushbutton->pixmap(); - if (pushbutton->iconSet() && !pushbutton->iconSet()->isNull()) - icon = pushbutton->iconSet()->pixmap (TQIconSet::Small, mode, state); - popup = pushbutton->popup(); + text = ceData.text; + pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; + if (!ceData.iconSet.isNull()) + icon = ceData.iconSet.pixmap (TQIconSet::Small, mode, state); + popup = (elementFlags & CEF_HasPopupMenu); setColorsButton (p, cg, flags); } else { - const TQButton* button = (const TQButton*)widget; - pixmap = button->pixmap(); - text = button->text(); + pixmap = (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap; + text = ceData.text; setColorsNormal (p, cg); } @@ -1331,8 +1327,8 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, drawArrow (p, menuarea, PE_ArrowDown); } - if (toolbutton->hasFocus() && !toolbutton->focusProxy()) { - TQRect fr = toolbutton->rect(); + if ((elementFlags & CEF_HasFocus) && !(elementFlags & CEF_HasFocusProxy)) { + TQRect fr = ceData.rect; addOffset (&fr, 3); tqdrawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags, TQStyleOption (p->backgroundColor())); } diff --git a/kstyles/keramik/keramik.cpp b/kstyles/keramik/keramik.cpp index f619e0bfd..b3c29d34f 100644 --- a/kstyles/keramik/keramik.cpp +++ b/kstyles/keramik/keramik.cpp @@ -479,7 +479,7 @@ static void renderToolbarEntryBackground(TQPainter* paint, toolWidth, toolHeight); } -static void renderToolbarWidgetBackground(TQPainter* painter, const TQWidget* widget) +static void renderToolbarWidgetBackground(TQPainter* painter, const TQStyleControlElementData ceData, const TQStyle::ControlElementFlags elementFlags, const TQWidget* widget) { // Draw a gradient background for custom widgets in the toolbar // that have specified a "kde toolbar widget" name, or @@ -487,8 +487,8 @@ static void renderToolbarWidgetBackground(TQPainter* painter, const TQWidget* wi // Find the top-level toolbar of this widget, since it may be nested in other // widgets that are on the toolbar. - TQWidget *parent = TQT_TQWIDGET(widget->parentWidget()); - int x_offset = widget->x(), y_offset = widget->y(); + TQWidget *parent = (widget)?TQT_TQWIDGET(widget->parentWidget()):(TQWidget*)NULL; + int x_offset = ceData.rect.x(), y_offset = ceData.rect.y(); while (parent && parent->parent() && !qstrcmp( parent->name(), kdeToolbarWidget ) ) { x_offset += parent->x(); @@ -496,18 +496,18 @@ static void renderToolbarWidgetBackground(TQPainter* painter, const TQWidget* wi parent = TQT_TQWIDGET(parent->parent()); } - TQRect pr = parent->rect(); + TQRect pr = ceData.parentWidgetData.rect; bool horiz_grad = pr.width() > pr.height(); - int toolHeight = parent->height(); - int toolWidth = parent->width (); + int toolHeight = ceData.parentWidgetData.rect.height(); + int toolWidth = ceData.parentWidgetData.rect.width (); // Check if the parent is a QToolbar, and use its orientation, else guess. //Also, get the height to use in the gradient from it. TQToolBar* tb = dynamic_cast<TQToolBar*>(parent); if (tb) { - horiz_grad = tb->orientation() == Qt::Horizontal; + horiz_grad = ceData.orientation == TQt::Horizontal; //If floating, we need to skip the titlebar. if (tb->place() == TQDockWindow::OutsideDock) @@ -518,26 +518,26 @@ static void renderToolbarWidgetBackground(TQPainter* painter, const TQWidget* wi //the bottom edge, minus the frame (except we use the current y_offset // to map to parent coordinates) int needToTouchBottom = tb->height() - tb->frameWidth() - - (widget->rect().bottom() + y_offset); + (ceData.rect.bottom() + y_offset); //Now, with that, we can see which portion to skip in the full-height //gradient -- which is the stuff other than the extended //widget - y_offset = toolHeight - (widget->height() + needToTouchBottom) - 1; + y_offset = toolHeight - (ceData.rect.height() + needToTouchBottom) - 1; } } if (painter) { - Keramik::GradientPainter::renderGradient( painter, widget->rect(), - widget->colorGroup().button(), horiz_grad, false, + Keramik::GradientPainter::renderGradient( painter, ceData.rect, + ceData.colorGroup.button(), horiz_grad, false, x_offset, y_offset, toolWidth, toolHeight); } else { TQPainter p( widget ); - Keramik::GradientPainter::renderGradient( &p, widget->rect(), - widget->colorGroup().button(), horiz_grad, false, + Keramik::GradientPainter::renderGradient( &p, ceData.rect, + ceData.colorGroup.button(), horiz_grad, false, x_offset, y_offset, toolWidth, toolHeight); } } @@ -679,7 +679,7 @@ void KeramikStyle::drawPrimitive( TQ_PrimitiveElement pe, if (toolbarBlendWidget && !flatMode ) { //Render the toolbar gradient. - renderToolbarWidgetBackground(p, toolbarBlendWidget); + renderToolbarWidgetBackground(p, ceData, elementFlags, toolbarBlendWidget); //Draw and blend the actual bevel.. Keramik::RectTilePainter( name, false ).draw(p, r, cg.button(), cg.background(), @@ -1399,21 +1399,21 @@ void KeramikStyle::drawControl( TQ_ControlElement element, // ------------------------------------------------------------------- case CE_PushButton: { - const TQPushButton* btn = static_cast< const TQPushButton* >( widget ); + const TQPushButton* btn = dynamic_cast< const TQPushButton* >( widget ); if (isFormWidget(ceData, elementFlags, btn)) formMode = true; - if ( btn->isFlat( ) ) + if ( elementFlags & CEF_IsFlat ) flatMode = true; - if ( btn->isDefault( ) && !flatMode ) + if ( (elementFlags & CEF_IsDefault) && !flatMode ) { drawPrimitive( PE_ButtonDefault, p, ceData, elementFlags, r, cg, flags ); } else { - if (widget->parent() && widget->parent()->inherits(TQTOOLBAR_OBJECT_NAME_STRING)) + if (ceData.parentWidgetData.widgetObjectTypes.contains(TQTOOLBAR_OBJECT_NAME_STRING)) toolbarBlendWidget = widget; drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, r, cg, flags ); @@ -1429,8 +1429,8 @@ void KeramikStyle::drawControl( TQ_ControlElement element, // ------------------------------------------------------------------- case CE_PushButtonLabel: { - const TQPushButton* button = static_cast<const TQPushButton *>( widget ); - bool active = button->isOn() || button->isDown(); + const TQPushButton* button = dynamic_cast<const TQPushButton *>( widget ); + bool active = ((elementFlags & CEF_IsOn) || (elementFlags & CEF_IsDown)); bool cornArrow = false; // Shift button contents if pushed. @@ -1442,11 +1442,11 @@ void KeramikStyle::drawControl( TQ_ControlElement element, } // Does the button have a popup menu? - if ( button->isMenuButton() ) + if (elementFlags & CEF_IsMenuWidget) { int dx = pixelMetric( PM_MenuButtonIndicator, ceData, elementFlags, widget ); - if ( button->iconSet() && !button->iconSet()->isNull() && - (dx + button->iconSet()->pixmap (TQIconSet::Small, TQIconSet::Normal, TQIconSet::Off ).width()) >= w ) + if ( !ceData.iconSet.isNull() && + (dx + ceData.iconSet.pixmap (TQIconSet::Small, TQIconSet::Normal, TQIconSet::Off ).width()) >= w ) { cornArrow = true; //To little room. Draw the arrow in the corner, don't adjust the widget } @@ -1459,26 +1459,26 @@ void KeramikStyle::drawControl( TQ_ControlElement element, } // Draw the icon if there is one - if ( button->iconSet() && !button->iconSet()->isNull() ) + if ( !ceData.iconSet.isNull() ) { TQIconSet::Mode mode = TQIconSet::Disabled; TQIconSet::State state = TQIconSet::Off; - if (button->isEnabled()) - mode = button->hasFocus() ? TQIconSet::Active : TQIconSet::Normal; - if (button->isToggleButton() && button->isOn()) + if (elementFlags & CEF_IsEnabled) + mode = (elementFlags & CEF_HasFocus) ? TQIconSet::Active : TQIconSet::Normal; + if ((elementFlags & CEF_BiState) && (elementFlags & CEF_IsOn)) state = TQIconSet::On; - TQPixmap icon = button->iconSet()->pixmap( TQIconSet::Small, mode, state ); + TQPixmap icon = ceData.iconSet.pixmap( TQIconSet::Small, mode, state ); - if (!button->text().isEmpty()) + if (!ceData.text.isEmpty()) { const int TextToIconMargin = 6; //Center text + icon w/margin in between.. //Calculate length of both. int length = icon.width() + TextToIconMargin - + p->fontMetrics().size(ShowPrefix, button->text()).width(); + + p->fontMetrics().size(ShowPrefix, ceData.text).width(); //Calculate offset. int offset = (w - length)/2; @@ -1493,11 +1493,11 @@ void KeramikStyle::drawControl( TQ_ControlElement element, else { //Icon only. Center it. - if (!button->pixmap()) + if (ceData.fgPixmap.isNull()) p->drawPixmap( x + w/2 - icon.width()/2, y + h / 2 - icon.height() / 2, icon ); else //icon + pixmap. Ugh. - p->drawPixmap( x + button->isDefault() ? 8 : 4 , y + h / 2 - icon.height() / 2, icon ); + p->drawPixmap( x + (elementFlags & CEF_IsDefault) ? 8 : 4 , y + h / 2 - icon.height() / 2, icon ); } if (cornArrow) //Draw over the icon @@ -1506,9 +1506,9 @@ void KeramikStyle::drawControl( TQ_ControlElement element, } // Make the label indicate if the button is a default button or not - drawItem( p, TQRect(x, y, w, h), AlignCenter | ShowPrefix, button->colorGroup(), - button->isEnabled(), button->pixmap(), button->text(), -1, - &button->colorGroup().buttonText() ); + drawItem( p, TQRect(x, y, w, h), AlignCenter | ShowPrefix, ceData.colorGroup, + (elementFlags & CEF_IsEnabled), (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text, -1, + &ceData.colorGroup.buttonText() ); if ( flags & Style_HasFocus ) drawPrimitive( PE_FocusRect, p, ceData, elementFlags, @@ -1519,17 +1519,15 @@ void KeramikStyle::drawControl( TQ_ControlElement element, case CE_ToolButtonLabel: { - //const TQToolButton *toolbutton = static_cast<const TQToolButton * >(widget); - bool onToolbar = widget->parentWidget() && widget->parentWidget()->inherits( TQTOOLBAR_OBJECT_NAME_STRING ); + bool onToolbar = ceData.parentWidgetData.widgetObjectTypes.contains( TQTOOLBAR_OBJECT_NAME_STRING ); TQRect nr = r; if (!onToolbar) { - if (widget->parentWidget() && - !qstrcmp(widget->parentWidget()->name(),"qt_maxcontrols" ) ) + if (!qstrcmp(ceData.parentWidgetData.name.ascii(),"qt_maxcontrols" ) ) { //Make sure we don't cut into the endline - if (!qstrcmp(widget->name(), "close")) + if (!qstrcmp(ceData.name.ascii(), "close")) { nr.addCoords(0,0,-1,0); p->setPen(cg.dark()); @@ -1589,7 +1587,7 @@ void KeramikStyle::drawControl( TQ_ControlElement element, case CE_DockWindowEmptyArea: { TQRect pr = r; - if (widget && widget->inherits(TQTOOLBAR_OBJECT_NAME_STRING)) + if (ceData.widgetObjectTypes.contains(TQTOOLBAR_OBJECT_NAME_STRING)) { const TQToolBar* tb = static_cast<const TQToolBar*>(widget); if (tb->place() == TQDockWindow::OutsideDock) @@ -2030,8 +2028,7 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, if (controls == SC_All) { //Double-buffer only when we are in the slower full-blend mode - if (widget->parent() && - ( widget->parent()->inherits(TQTOOLBAR_OBJECT_NAME_STRING)|| !qstrcmp(widget->parent()->name(), kdeToolbarWidget) ) ) + if ( ceData.parentWidgetData.widgetObjectTypes.contains(TQTOOLBAR_OBJECT_NAME_STRING) || !qstrcmp(ceData.parentWidgetData.name.ascii(), kdeToolbarWidget) ) { buf = new TQPixmap( r.width(), r.height() ); br.setX(0); @@ -2260,15 +2257,14 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, // TOOLBUTTON // ------------------------------------------------------------------- case CC_ToolButton: { - const TQToolButton *toolbutton = (const TQToolButton *) widget; - bool onToolbar = widget->parentWidget() && widget->parentWidget()->inherits( TQTOOLBAR_OBJECT_NAME_STRING ); + bool onToolbar = ceData.parentWidgetData.widgetObjectTypes.contains(TQTOOLBAR_OBJECT_NAME_STRING); bool onExtender = !onToolbar && - widget->parentWidget() && widget->parentWidget()->inherits( "QToolBarExtensionWidget") && - widget->parentWidget()->parentWidget()->inherits( TQTOOLBAR_OBJECT_NAME_STRING ); + ceData.parentWidgetData.widgetObjectTypes.contains( "QToolBarExtensionWidget") && + widget && widget->parentWidget()->parentWidget()->inherits( TQTOOLBAR_OBJECT_NAME_STRING ); bool onControlButtons = false; - if (!onToolbar && !onExtender && widget->parentWidget() && - !qstrcmp(widget->parentWidget()->name(),"qt_maxcontrols" ) ) + if (!onToolbar && !onExtender && !ceData.parentWidgetData.widgetObjectTypes.isEmpty() && + !qstrcmp(ceData.parentWidgetData.name.ascii(),"qt_maxcontrols" ) ) { onControlButtons = true; titleBarMode = Maximized; @@ -2306,11 +2302,11 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, else if ( !ceData.parentWidgetData.bgPixmap.isNull() ) { TQPixmap pixmap = ceData.parentWidgetData.bgPixmap; - p->drawTiledPixmap( r, pixmap, toolbutton->pos() ); + p->drawTiledPixmap( r, pixmap, ceData.pos ); } else if (onToolbar) { - renderToolbarWidgetBackground(p, widget); + renderToolbarWidgetBackground(p, ceData, elementFlags, widget); } else if (onExtender) { @@ -2325,9 +2321,9 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, //which are relative to the parent, to be relative to the toolbar. int xoff = 0, yoff = 0; if (horiz) - yoff = parent->mapToParent(widget->pos()).y(); + yoff = parent->mapToParent(ceData.pos).y(); else - xoff = parent->mapToParent(widget->pos()).x(); + xoff = parent->mapToParent(ceData.pos).x(); Keramik::GradientPainter::renderGradient( p, r, cg.button(), horiz, false, /*Not a menubar*/ @@ -2344,8 +2340,8 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, menuarea, cg, mflags, opt); } - if (toolbutton->hasFocus() && !toolbutton->focusProxy()) { - TQRect fr = toolbutton->rect(); + if ((elementFlags & CEF_HasFocus) && !(elementFlags & CEF_HasFocusProxy)) { + TQRect fr = ceData.rect; fr.addCoords(3, 3, -3, -3); drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg); } @@ -2480,15 +2476,15 @@ TQSize KeramikStyle::sizeFromContents( ContentsType contents, // ------------------------------------------------------------------ case CT_PushButton: { - const TQPushButton* btn = static_cast< const TQPushButton* >( widget ); + const TQPushButton* btn = dynamic_cast< const TQPushButton* >( widget ); int w = contentSize.width() + 2 * pixelMetric( PM_ButtonMargin, ceData, elementFlags, widget ); int h = contentSize.height() + 2 * pixelMetric( PM_ButtonMargin, ceData, elementFlags, widget ); - if ( btn->text().isEmpty() && contentSize.width() < 32 ) return TQSize( w, h ); + if ( ceData.text.isEmpty() && contentSize.width() < 32 ) return TQSize( w, h ); //For some reason kcontrol no longer does this... - //if ( btn->isDefault() || btn->autoDefault() ) + //if ( (elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault) ) // w = QMAX( w, 40 ); return TQSize( w + 30, h + 5 ); //MX: No longer blank space -- can make a bit smaller @@ -2623,20 +2619,20 @@ TQRect KeramikStyle::querySubControlMetrics( TQ_ComplexControl control, { case SC_ComboBoxArrow: if ( compact ) - return TQRect( widget->width() - arrow - 7, 0, arrow + 6, widget->height() ); + return TQRect( ceData.rect.width() - arrow - 7, 0, arrow + 6, ceData.rect.height() ); else - return TQRect( widget->width() - arrow - 14, 0, arrow + 13, widget->height() ); + return TQRect( ceData.rect.width() - arrow - 14, 0, arrow + 13, ceData.rect.height() ); case SC_ComboBoxEditField: { if ( compact ) - return TQRect( 2, 4, widget->width() - arrow - 2 - 7, widget->height() - 8 ); - else if ( widget->width() < 36 || widget->height() < 22 ) - return TQRect( 4, 3, widget->width() - arrow - 20, widget->height() - 6 ); - else if ( static_cast< const TQComboBox* >( widget )->editable() ) - return TQRect( 8, 4, widget->width() - arrow - 26, widget->height() - 11 ); + return TQRect( 2, 4, ceData.rect.width() - arrow - 2 - 7, ceData.rect.height() - 8 ); + else if ( ceData.rect.width() < 36 || ceData.rect.height() < 22 ) + return TQRect( 4, 3, ceData.rect.width() - arrow - 20, ceData.rect.height() - 6 ); + else if ( elementFlags & CEF_IsEditable ) + return TQRect( 8, 4, ceData.rect.width() - arrow - 26, ceData.rect.height() - 11 ); else - return TQRect( 6, 4, widget->width() - arrow - 22, widget->height() - 9 ); + return TQRect( 6, 4, ceData.rect.width() - arrow - 22, ceData.rect.height() - 9 ); } case SC_ComboBoxListBoxPopup: @@ -2815,7 +2811,7 @@ bool KeramikStyle::objectEventHandler( TQStyleControlElementData ceData, Control object->event( TQT_TQPAINTEVENT( event ) ); TQWidget* widget = TQT_TQWIDGET( object ); TQPainter p( widget ); - Keramik::RectTilePainter( keramik_frame_shadow, false, false, 2, 2 ).draw( &p, widget->rect(), + Keramik::RectTilePainter( keramik_frame_shadow, false, false, 2, 2 ).draw( &p, ceData.rect, widget->palette().color( TQPalette::Normal, TQColorGroup::Button ), Qt::black, false, Keramik::TilePainter::PaintFullBlend); recursion = false; @@ -2923,7 +2919,7 @@ bool KeramikStyle::objectEventHandler( TQStyleControlElementData ceData, Control { // Draw a gradient background for custom widgets in the toolbar // that have specified a "kde toolbar widget" name. - renderToolbarWidgetBackground(0, TQT_TQWIDGET(object)); + renderToolbarWidgetBackground(0, ceData, elementFlags, TQT_TQWIDGET(object)); return false; // Now draw the contents } diff --git a/kstyles/plastik/plastik.cpp b/kstyles/plastik/plastik.cpp index 2af00f723..8c811f044 100644 --- a/kstyles/plastik/plastik.cpp +++ b/kstyles/plastik/plastik.cpp @@ -2384,9 +2384,9 @@ void PlastikStyle::drawControl(TQ_ControlElement element, case CE_PushButton: { TQPushButton *button = (TQPushButton *)widget; - const bool isDefault = enabled && button->isDefault(); + const bool isDefault = enabled && (elementFlags & CEF_IsDefault); - if (button->isFlat() ) + if ( elementFlags & CEF_IsFlat ) flatMode = true; TQColorGroup g2 = cg; @@ -2409,7 +2409,7 @@ void PlastikStyle::drawControl(TQ_ControlElement element, r.rect( &x, &y, &w, &h ); const TQPushButton* button = static_cast<const TQPushButton *>( widget ); - bool active = button->isOn() || button->isDown(); + bool active = (elementFlags & CEF_IsOn) || (elementFlags & CEF_IsDown); bool cornArrow = false; // Shift button contents if pushed. @@ -2421,11 +2421,11 @@ void PlastikStyle::drawControl(TQ_ControlElement element, } // Does the button have a popup menu? - if ( button->isMenuButton() ) + if ( elementFlags & CEF_IsMenuWidget ) { int dx = pixelMetric( PM_MenuButtonIndicator, ceData, elementFlags, widget ); - if ( button->iconSet() && !button->iconSet()->isNull() && - (dx + button->iconSet()->pixmap (TQIconSet::Small, TQIconSet::Normal, TQIconSet::Off ).width()) >= w ) + if ( !ceData.iconSet.isNull() && + (dx + ceData.iconSet.pixmap (TQIconSet::Small, TQIconSet::Normal, TQIconSet::Off ).width()) >= w ) { cornArrow = true; //To little room. Draw the arrow in the corner, don't adjust the widget } @@ -2439,19 +2439,19 @@ void PlastikStyle::drawControl(TQ_ControlElement element, } // Draw the icon if there is one - if ( button->iconSet() && !button->iconSet()->isNull() ) + if ( !ceData.iconSet.isNull() ) { TQIconSet::Mode mode = TQIconSet::Disabled; TQIconSet::State state = TQIconSet::Off; - if (button->isEnabled()) - mode = button->hasFocus() ? TQIconSet::Active : TQIconSet::Normal; - if (button->isToggleButton() && button->isOn()) + if (elementFlags & CEF_IsEnabled) + mode = (elementFlags & CEF_HasFocus) ? TQIconSet::Active : TQIconSet::Normal; + if ((elementFlags & CEF_BiState) && (elementFlags & CEF_IsOn)) state = TQIconSet::On; - TQPixmap pixmap = button->iconSet()->pixmap( TQIconSet::Small, mode, state ); + TQPixmap pixmap = ceData.iconSet.pixmap( TQIconSet::Small, mode, state ); - if (button->text().isEmpty() && !button->pixmap()) + if (ceData.text.isEmpty() && ceData.fgPixmap.isNull()) p->drawPixmap( x + w/2 - pixmap.width()/2, y + h / 2 - pixmap.height() / 2, pixmap ); else @@ -2468,9 +2468,9 @@ void PlastikStyle::drawControl(TQ_ControlElement element, } // Make the label indicate if the button is a default button or not - drawItem( p, TQRect(x, y, w, h), AlignCenter|ShowPrefix, button->colorGroup(), - button->isEnabled(), button->pixmap(), button->text(), -1, - &button->colorGroup().buttonText() ); + drawItem( p, TQRect(x, y, w, h), AlignCenter|ShowPrefix, ceData.colorGroup, + (elementFlags & CEF_IsEnabled), (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text, -1, + &ceData.colorGroup.buttonText() ); if ( flags & Style_HasFocus ) |