From 189c12d0b1d3362f490f26cc0fcd3005af8b426c Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 11 Nov 2012 18:02:30 -0600 Subject: [PATCH] Fix style crashes when used with third party toolkits --- kstyles/highcontrast/highcontrast.cpp | 85 ++++++++++++--------------- kstyles/keramik/keramik.cpp | 13 ++-- kstyles/plastik/plastik.cpp | 15 ++--- tdefx/kstyle.cpp | 2 +- 4 files changed, 50 insertions(+), 65 deletions(-) diff --git a/kstyles/highcontrast/highcontrast.cpp b/kstyles/highcontrast/highcontrast.cpp index c4b4187cf..971c6549a 100644 --- a/kstyles/highcontrast/highcontrast.cpp +++ b/kstyles/highcontrast/highcontrast.cpp @@ -588,7 +588,7 @@ void HighContrastStyle::drawPrimitive (TQ_PrimitiveElement pe, setColorsText (p, cg, flags, 0); drawRoundRect (p, r); if (flags & (Style_HasFocus | Style_Active)) - tqdrawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); + drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); break; } case PE_PanelTabWidget: @@ -687,7 +687,7 @@ void HighContrastStyle::drawPrimitive (TQ_PrimitiveElement pe, } default: { - KStyle::tqdrawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); + KStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); } } } @@ -847,9 +847,9 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, } if ( btnDefault && (elementFlags & CEF_IsEnabled)) - tqdrawPrimitive( PE_ButtonDefault, p, ceData, elementFlags, r, cg, flags ); + drawPrimitive( PE_ButtonDefault, p, ceData, elementFlags, r, cg, flags ); - tqdrawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags ); + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags ); break; } @@ -931,7 +931,7 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, // Draw a focus rect if the button has focus if (flags & Style_HasFocus) - tqdrawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); + drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); // Draw the label itself TQColor color = p->pen().color(); @@ -976,14 +976,14 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, // CHECKBOX // ------------------------------------------------------------------- case CE_CheckBox: { - tqdrawPrimitive (PE_Indicator, p, ceData, elementFlags, r, cg, flags); + drawPrimitive (PE_Indicator, p, ceData, elementFlags, r, cg, flags); break; } // RADIOBUTTON // ------------------------------------------------------------------- case CE_RadioButton: { - tqdrawPrimitive (PE_ExclusiveIndicator, p, ceData, elementFlags, r, cg, flags); + drawPrimitive (PE_ExclusiveIndicator, p, ceData, elementFlags, r, cg, flags); break; } @@ -991,40 +991,33 @@ void HighContrastStyle::drawControl (TQ_ControlElement element, // ------------------------------------------------------------------- case CE_ProgressBarGroove: { setColorsText (p, cg, flags); - const TQProgressBar *progressbar = dynamic_cast(widget); - if (progressbar) { - TQRect r2 (r); - r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, progressbar->progressString()).right() - + 4*basicLineWidth); - drawRoundRect (p, r2); - } + TQRect r2 (r); + r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, ceData.progressText).right() + + 4*basicLineWidth); + drawRoundRect (p, r2); break; } case CE_ProgressBarContents: { - const TQProgressBar *progressbar = dynamic_cast(widget); - if (progressbar) + TQRect r2 (r); + r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, ceData.progressText).right() + + 4*basicLineWidth); + long progress = r2.width() * ceData.currentStep; + if (ceData.totalSteps > 0) { - TQRect r2 (r); - r2.setLeft (p->boundingRect (r, AlignVCenter|AlignLeft|ShowPrefix, progressbar->progressString()).right() - + 4*basicLineWidth); - long progress = r2.width() * progressbar->progress(); - if (progressbar->totalSteps() > 0) - { - r2.setWidth (progress / progressbar->totalSteps()); - } - else - { - int width = r2.width() / 5; - int left = progressbar->progress() % (2*(r2.width() - width)); - if (left > r2.width() - width) - left = 2*(r2.width() - width) - left; - r2.setLeft (r2.left() + left); - r2.setWidth (width); - } - setColorsHighlight (p, cg, flags); - if (r2.width() > 0) - drawRoundRect (p, r2); + r2.setWidth (progress / ceData.totalSteps); } + else + { + int width = r2.width() / 5; + int left = ceData.currentStep % (2*(r2.width() - width)); + if (left > r2.width() - width) + left = 2*(r2.width() - width) - left; + r2.setLeft (r2.left() + left); + r2.setWidth (width); + } + setColorsHighlight (p, cg, flags); + if (r2.width() > 0) + drawRoundRect (p, r2); break; } @@ -1242,7 +1235,7 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, else r3.setLeft (r2.right()-basicLineWidth+1); - tqdrawPrimitive (PE_FocusRect, p, ceData, elementFlags, r3, cg, flags, TQStyleOption (p->backgroundColor())); + drawPrimitive (PE_FocusRect, p, ceData, elementFlags, r3, cg, flags, TQStyleOption (p->backgroundColor())); } setColorsButton (p, cg, flags); @@ -1263,7 +1256,7 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, setColorsText (p, cg, flags); drawRoundRect (p, r); if (flags & Style_HasFocus) - tqdrawPrimitive(PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, r, cg, flags, TQStyleOption (p->backgroundColor())); } setColorsButton (p, cg, flags); @@ -1286,8 +1279,6 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, // TOOLBUTTON // ------------------------------------------------------------------- case CC_ToolButton: { - const TQToolButton *toolbutton = (const TQToolButton *) widget; - setColorsButton (p, cg, flags); p->fillRect (r, p->backgroundColor ()); @@ -1307,15 +1298,13 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, { // If we're pressed, on, or raised... if (bflags & (Style_Down | Style_On | Style_Raised)) - tqdrawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt); // Check whether to draw a background pixmap - else if ( toolbutton->parentWidget() && - toolbutton->parentWidget()->backgroundPixmap() && - !toolbutton->parentWidget()->backgroundPixmap()->isNull() ) + else if ( !ceData.parentWidgetData.bgPixmap.isNull() ) { - TQPixmap pixmap = *(toolbutton->parentWidget()->backgroundPixmap()); - p->drawTiledPixmap( r, pixmap, toolbutton->pos() ); + TQPixmap pixmap = ceData.parentWidgetData.bgPixmap; + p->drawTiledPixmap( r, pixmap, ceData.pos ); } } @@ -1323,14 +1312,14 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control, if (controls & SC_ToolButtonMenu) { if (mflags & (Style_Down | Style_On | Style_Raised)) - tqdrawPrimitive(PE_ButtonDropDown, p, ceData, elementFlags, menuarea, cg, mflags, opt); + drawPrimitive(PE_ButtonDropDown, p, ceData, elementFlags, menuarea, cg, mflags, opt); drawArrow (p, menuarea, PE_ArrowDown); } 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())); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags, TQStyleOption (p->backgroundColor())); } break; diff --git a/kstyles/keramik/keramik.cpp b/kstyles/keramik/keramik.cpp index b3c29d34f..2c558b5b1 100644 --- a/kstyles/keramik/keramik.cpp +++ b/kstyles/keramik/keramik.cpp @@ -2184,15 +2184,14 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, } case CC_ScrollBar: { - const TQScrollBar* sb = static_cast< const TQScrollBar* >( widget ); - if (highlightScrollBar && sb->parentWidget()) //Don't do the check if not highlighting anyway + if (highlightScrollBar && (elementFlags & CEF_HasParentWidget)) //Don't do the check if not highlighting anyway { - if (sb->parentWidget()->colorGroup().button() != sb->colorGroup().button()) + if (ceData.parentWidgetData.colorGroup.button() != ceData.colorGroup.button()) customScrollMode = true; } - bool horizontal = sb->orientation() == Qt::Horizontal; + bool horizontal = ceData.orientation == TQt::Horizontal; TQRect slider, subpage, addpage, subline, addline; - if ( sb->minValue() == sb->maxValue() ) flags &= ~Style_Enabled; + if ( ceData.minSteps == ceData.maxSteps ) flags &= ~Style_Enabled; slider = querySubControlMetrics( control, ceData, elementFlags, SC_ScrollBarSlider, opt, widget ); subpage = querySubControlMetrics( control, ceData, elementFlags, SC_ScrollBarSubPage, opt, widget ); @@ -2208,9 +2207,9 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control, if ( controls & SC_ScrollBarSubPage ) clip |= subpage; if ( controls & SC_ScrollBarAddPage ) clip |= addpage; if ( horizontal ) - clip |= TQRect( slider.x(), 0, slider.width(), sb->height() ); + clip |= TQRect( slider.x(), 0, slider.width(), ceData.rect.height() ); else - clip |= TQRect( 0, slider.y(), sb->width(), slider.height() ); + clip |= TQRect( 0, slider.y(), ceData.rect.width(), slider.height() ); clip ^= slider; p->setClipRegion( clip ); diff --git a/kstyles/plastik/plastik.cpp b/kstyles/plastik/plastik.cpp index 8c811f044..9910db013 100644 --- a/kstyles/plastik/plastik.cpp +++ b/kstyles/plastik/plastik.cpp @@ -2958,8 +2958,6 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, // TOOLBUTTON // ---------- case CC_ToolButton: { - const TQToolButton *tb = (const TQToolButton *) widget; - TQRect button, menuarea; button = querySubControlMetrics(control, ceData, elementFlags, SC_ToolButton, opt, widget); menuarea = querySubControlMetrics(control, ceData, elementFlags, SC_ToolButtonMenu, opt, widget); @@ -2986,11 +2984,10 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, // If we're pressed, on, or raised... 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() && - !tb->parentWidget()->backgroundPixmap()->isNull()) { - TQPixmap pixmap = *(tb->parentWidget()->backgroundPixmap()); - p->drawTiledPixmap( r, pixmap, tb->pos() ); + } else if ((elementFlags & CEF_HasParentWidget) && + !ceData.parentWidgetData.bgPixmap.isNull()) { + TQPixmap pixmap = ceData.parentWidgetData.bgPixmap; + p->drawTiledPixmap( r, pixmap, ceData.pos ); } } @@ -3002,8 +2999,8 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control, drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, menuarea, cg, mflags, opt); } - if (tb->hasFocus() && !tb->focusProxy()) { - TQRect fr = tb->rect(); + if ((elementFlags & CEF_HasFocus) && !(elementFlags & CEF_HasFocusProxy)) { + TQRect fr = ceData.rect; fr.addCoords(2, 2, -2, -2); drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg); } diff --git a/tdefx/kstyle.cpp b/tdefx/kstyle.cpp index b56705146..9f4b4a921 100644 --- a/tdefx/kstyle.cpp +++ b/tdefx/kstyle.cpp @@ -1471,7 +1471,7 @@ TQRect KStyle::querySubControlMetrics( TQ_ComplexControl control, bool platinumScrollBar = d->scrollbarType & PlatinumStyleScrollBar; bool nextScrollBar = d->scrollbarType & NextStyleScrollBar; - bool horizontal = ceData.orientation == Qt::Horizontal; + bool horizontal = ceData.orientation == TQt::Horizontal; int sliderstart = ceData.startStep; int sbextent = pixelMetric(PM_ScrollBarExtent, ceData, elementFlags, widget); int maxlen = (horizontal ? ceData.rect.width() : ceData.rect.height())