summaryrefslogtreecommitdiffstats
path: root/src/styles/qmotifstyle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/styles/qmotifstyle.cpp')
-rw-r--r--src/styles/qmotifstyle.cpp394
1 files changed, 196 insertions, 198 deletions
diff --git a/src/styles/qmotifstyle.cpp b/src/styles/qmotifstyle.cpp
index ce25794f9..1dfa385da 100644
--- a/src/styles/qmotifstyle.cpp
+++ b/src/styles/qmotifstyle.cpp
@@ -204,6 +204,8 @@ static void rot(TQPointArray& a, int n)
*/
void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
TQPainter *p,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags,
@@ -251,7 +253,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
case PE_ButtonTool:
case PE_HeaderSection:
qDrawShadePanel( p, r, cg, bool(flags & (Style_Down | Style_On )),
- pixelMetric(PM_DefaultFrameWidth),
+ pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags),
&cg.brush(TQColorGroup::Button) );
break;
@@ -268,7 +270,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
r.x(), r.y() + r.height() - 1);
} else
qDrawShadePanel( p, r, cg, !showUp,
- pixelMetric(PM_DefaultFrameWidth), &fill );
+ pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags), &fill );
#endif
break;
}
@@ -509,7 +511,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
case PE_SpinWidgetMinus:
{
p->save();
- int fw = pixelMetric( PM_DefaultFrameWidth );
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags );
TQRect br;
br.setRect( r.x() + fw, r.y() + fw, r.width() - fw*2,
r.height() - fw*2 );
@@ -547,7 +549,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
case PE_SpinWidgetDown:
{
p->save();
- int fw = pixelMetric( PM_DefaultFrameWidth );
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags );
TQRect br;
br.setRect( r.x() + fw, r.y() + fw, r.width() - fw*2,
r.height() - fw*2 );
@@ -576,8 +578,8 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
int bsx = 0;
int bsy = 0;
if ( flags & Style_Sunken ) {
- bsx = pixelMetric(PM_ButtonShiftHorizontal);
- bsy = pixelMetric(PM_ButtonShiftVertical);
+ bsx = pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags);
+ bsy = pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags);
}
p->translate( sx + bsx, sy + bsy );
p->setPen( cg.buttonText() );
@@ -665,7 +667,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
case PE_DockWindowResizeHandle:
{
const int motifOffset = 10;
- int sw = pixelMetric( PM_SplitterWidth );
+ int sw = pixelMetric( PM_SplitterWidth, ceData, elementFlags );
if ( flags & Style_Horizontal ) {
TQCOORD yPos = r.y() + r.height() / 2;
TQCOORD kPos = r.width() - motifOffset - sw;
@@ -694,7 +696,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
const int markH = 6;
int posX = r.x() + ( r.width() - markW ) / 2 - 1;
int posY = r.y() + ( r.height() - markH ) / 2;
- int dfw = pixelMetric(PM_DefaultFrameWidth);
+ int dfw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags);
if (dfw < 2) {
// Could do with some optimizing/caching...
@@ -736,12 +738,12 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
case PE_ScrollBarSubLine:
drawPrimitive(((flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp),
- p, r, cg, Style_Enabled | flags);
+ p, ceData, elementFlags, r, cg, Style_Enabled | flags);
break;
case PE_ScrollBarAddLine:
drawPrimitive(((flags & Style_Horizontal) ? PE_ArrowRight : PE_ArrowDown),
- p, r, cg, Style_Enabled | flags);
+ p, ceData, elementFlags, r, cg, Style_Enabled | flags);
break;
case PE_ScrollBarSubPage:
@@ -750,7 +752,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
break;
case PE_ScrollBarSlider:
- drawPrimitive(PE_ButtonBevel, p, r, cg,
+ drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg,
(flags | Style_Raised) & ~Style_Down);
break;
@@ -760,7 +762,7 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
break;
default:
- TQCommonStyle::drawPrimitive( pe, p, r, cg, flags, opt );
+ TQCommonStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt );
break;
}
}
@@ -770,40 +772,40 @@ void TQMotifStyle::drawPrimitive( PrimitiveElement pe,
*/
void TQMotifStyle::drawControl( ControlElement element,
TQPainter *p,
- const TQWidget *widget,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags,
- const TQStyleOption& opt ) const
+ const TQStyleOption& opt,
+ const TQWidget *widget ) const
{
switch( element ) {
case CE_PushButton:
{
#ifndef QT_NO_PUSHBUTTON
int diw, x1, y1, x2, y2;
- const TQPushButton *btn;
TQColorGroup newCg = cg;
- btn = ( const TQPushButton * )widget;
p->setPen( cg.foreground() );
p->setBrush( TQBrush( cg.button(), NoBrush ) );
- diw = pixelMetric( PM_ButtonDefaultIndicator );
+ diw = pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags );
r.coords( &x1, &y1, &x2, &y2 );
- if ( btn->isDefault() || btn->autoDefault() ) {
+ if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) {
x1 += diw;
y1 += diw;
x2 -= diw;
y2 -= diw;
}
TQBrush fill;
- if ( btn->isDown() )
+ if ( elementFlags & CEF_IsDown )
fill = newCg.brush( TQColorGroup::Mid );
- else if ( btn->isOn() )
+ else if ( elementFlags & CEF_IsOn )
fill = TQBrush( newCg.mid(), Dense4Pattern );
else
fill = newCg.brush( TQColorGroup::Button );
newCg.setBrush( TQColorGroup::Button, fill );
- if ( btn->isDefault() ) {
+ if ( elementFlags & CEF_IsDefault ) {
if ( diw == 0 ) {
TQPointArray a;
a.setPoints( 9,
@@ -819,17 +821,17 @@ void TQMotifStyle::drawControl( ControlElement element,
qDrawShadePanel( p, r, newCg, TRUE );
}
}
- if ( !btn->isFlat() || btn->isOn() || btn->isDown() ) {
+ if ( !( elementFlags & CEF_IsFlat ) || ( elementFlags & CEF_IsOn ) || ( elementFlags & CEF_IsDown ) ) {
TQRect tmp( x1, y1, x2 - x1 + 1, y2 - y1 + 1 );
SFlags flags = Style_Default;
- if ( btn->isOn())
+ if ( elementFlags & CEF_IsOn )
flags |= Style_On;
- if (btn->isDown())
+ if ( elementFlags & CEF_IsDown )
flags |= Style_Down;
p->save();
- p->setBrushOrigin( -widget->backgroundOffset().x(),
- -widget->backgroundOffset().y() );
- drawPrimitive( PE_ButtonCommand, p,
+ p->setBrushOrigin( -ceData.bgOffset.x(),
+ -ceData.bgOffset.y() );
+ drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags,
tmp, newCg,
flags );
p->restore();
@@ -843,47 +845,46 @@ void TQMotifStyle::drawControl( ControlElement element,
case CE_TabBarTab:
{
#ifndef QT_NO_TABBAR
- if ( !widget || !widget->parentWidget() || !opt.tab() )
+ if ( (elementFlags & CEF_UseGenericParameters) || !(elementFlags & CEF_HasParentWidget) || !opt.tab() )
break;
- const TQTabBar * tb = (const TQTabBar *) widget;
const TQTab * t = opt.tab();
- int dfw = pixelMetric( PM_DefaultFrameWidth, tb );
+ int dfw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget );
bool selected = flags & Style_Selected;
int o = dfw > 1 ? 1 : 0;
bool lastTab = FALSE;
TQRect r2( r );
- if ( tb->shape() == TQTabBar::RoundedAbove ) {
- if ( styleHint( SH_TabBar_Alignment, tb ) == AlignRight &&
- tb->indexOf( t->identifier() ) == tb->count()-1 )
+ if ( ceData.tabBarData.shape == TQTabBar::RoundedAbove ) {
+ if ( styleHint( SH_TabBar_Alignment, ceData, elementFlags, TQStyleOption::Default, 0, widget ) == AlignRight &&
+ ceData.tabBarData.identIndexMap[t->identifier()] == ceData.tabBarData.tabCount-1 )
lastTab = TRUE;
if ( o ) {
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.light() );
p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.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() );
}
else {
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.light() );
p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() );
}
if ( selected ) {
p->fillRect( TQRect( r2.left()+1, r2.bottom()-o, r2.width()-3, 2),
- tb->palette().active().brush( TQColorGroup::Background ));
- p->setPen( tb->colorGroup().background() );
+ ceData.palette.active().brush( TQColorGroup::Background ));
+ p->setPen( ceData.colorGroup.background() );
// p->drawLine( r2.left()+1, r2.bottom(), r2.right()-2, r2.bottom() );
// if (o)
// p->drawLine( r2.left()+1, r2.bottom()-1, r2.right()-2, r2.bottom()-1 );
p->drawLine( r2.left()+1, r2.bottom(), r2.left()+1, r2.top()+2 );
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.light() );
} else {
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.light() );
r2.setRect( r2.left() + 2, r2.top() + 2,
r2.width() - 4, r2.height() - 2 );
}
@@ -900,7 +901,7 @@ void TQMotifStyle::drawControl( ControlElement element,
r2.right() - 2, r2.top()+1 );
}
- p->setPen( tb->colorGroup().dark() );
+ p->setPen( ceData.colorGroup.dark() );
p->drawLine( r2.right() - 1, r2.top() + 2,
r2.right() - 1, r2.bottom() - 1 + (selected ? o : -o));
if ( o ) {
@@ -910,19 +911,19 @@ void TQMotifStyle::drawControl( ControlElement element,
(selected ? (lastTab ? 0:1):1+o));
p->drawPoint( r2.right() - 1, r2.top() + 1 );
}
- } else if ( tb->shape() == TQTabBar::RoundedBelow ) {
- if ( styleHint( SH_TabBar_Alignment, tb ) == AlignLeft &&
- tb->indexOf( t->identifier() ) == tb->count()-1 )
+ } else if ( ceData.tabBarData.shape == TQTabBar::RoundedBelow ) {
+ if ( styleHint( SH_TabBar_Alignment, ceData, elementFlags, TQStyleOption::Default, 0, widget ) == AlignLeft &&
+ ceData.tabBarData.identIndexMap[t->identifier()] == ceData.tabBarData.tabCount-1 )
lastTab = TRUE;
if ( selected ) {
p->fillRect( TQRect( r2.left()+1, r2.top(), r2.width()-3, 1),
- tb->palette().active().brush( TQColorGroup::Background ));
- p->setPen( tb->colorGroup().background() );
+ ceData.palette.active().brush( TQColorGroup::Background ));
+ p->setPen( ceData.colorGroup.background() );
// p->drawLine( r2.left()+1, r2.top(), r2.right()-2, r2.top() );
p->drawLine( r2.left()+1, r2.top(), r2.left()+1, r2.bottom()-2 );
- p->setPen( tb->colorGroup().dark() );
+ p->setPen( ceData.colorGroup.dark() );
} else {
- p->setPen( tb->colorGroup().dark() );
+ p->setPen( ceData.colorGroup.dark() );
p->drawLine( r2.left(), r2.top(), r2.right(), r2.top() );
p->drawLine( r2.left() + 1, r2.top() + 1,
r2.right() - (lastTab ? 0 : 2),
@@ -946,14 +947,14 @@ void TQMotifStyle::drawControl( ControlElement element,
r2.left() + 2, r2.bottom() );
}
- p->setPen( tb->colorGroup().light() );
+ p->setPen( ceData.colorGroup.light() );
p->drawLine( r2.left(), r2.top() + (selected ? 0 : 2),
r2.left(), r2.bottom() - 2 );
p->drawLine( r2.left() + 1, r2.top() + (selected ? 0 : 2),
r2.left() + 1, r2.bottom() - 3 );
} else {
- TQCommonStyle::drawControl( element, p, widget, r, cg, flags, opt );
+ TQCommonStyle::drawControl( element, p, ceData, elementFlags, r, cg, flags, opt, widget );
}
#endif
break;
@@ -966,32 +967,31 @@ void TQMotifStyle::drawControl( ControlElement element,
case CE_ProgressBarLabel:
{
#ifndef QT_NO_PROGRESSBAR
- const TQProgressBar * pb = (const TQProgressBar *) widget;
- const int unit_width = pixelMetric( PM_ProgressBarChunkWidth, pb );
+ const int unit_width = pixelMetric( PM_ProgressBarChunkWidth, ceData, elementFlags, widget );
int u = r.width() / unit_width;
- int p_v = pb->progress();
- int t_s = pb->totalSteps();
- if ( u > 0 && pb->progress() >= INT_MAX / u && t_s >= u ) {
+ int p_v = ceData.currentStep;
+ int t_s = ceData.totalSteps;
+ if ( u > 0 && ceData.currentStep >= INT_MAX / u && t_s >= u ) {
// scale down to something usable.
p_v /= u;
t_s /= u;
}
- if ( pb->percentageVisible() && pb->totalSteps() ) {
+ if ( ceData.percentageVisible && ceData.totalSteps ) {
int nu = ( u * p_v + t_s/2 ) / t_s;
int x = unit_width * nu;
- if (pb->indicatorFollowsStyle() || pb->centerIndicator()) {
+ if ((elementFlags & CEF_IndicatorFollowsStyle) || (elementFlags & CEF_CenterIndicator)) {
p->setPen( cg.highlightedText() );
p->setClipRect( r.x(), r.y(), x, r.height() );
- p->drawText( r, AlignCenter | SingleLine, pb->progressString() );
+ p->drawText( r, AlignCenter | SingleLine, ceData.progressText );
- if ( pb->progress() != pb->totalSteps() ) {
+ if ( ceData.currentStep != ceData.totalSteps ) {
p->setClipRect( r.x() + x, r.y(), r.width() - x, r.height() );
p->setPen( cg.highlight() );
- p->drawText( r, AlignCenter | SingleLine, pb->progressString() );
+ p->drawText( r, AlignCenter | SingleLine, ceData.progressText );
}
} else {
p->setPen( cg.text() );
- p->drawText( r, AlignCenter | SingleLine, pb->progressString() );
+ p->drawText( r, AlignCenter | SingleLine, ceData.progressText );
}
}
#endif
@@ -1001,10 +1001,9 @@ void TQMotifStyle::drawControl( ControlElement element,
#ifndef QT_NO_POPUPMENU
case CE_PopupMenuItem:
{
- if (! widget || opt.isDefault())
+ if ((elementFlags & CEF_UseGenericParameters) || opt.isDefault())
break;
- const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget;
TQMenuItem *mi = opt.menuItem();
if ( !mi )
break;
@@ -1012,7 +1011,7 @@ void TQMotifStyle::drawControl( ControlElement element,
int tab = opt.tabWidth();
int maxpmw = opt.maxIconWidth();
bool dis = ! (flags & Style_Enabled);
- bool checkable = popupmenu->isCheckable();
+ bool checkable = (elementFlags & CEF_IsCheckable);
bool act = flags & Style_Active;
int x, y, w, h;
@@ -1034,7 +1033,7 @@ void TQMotifStyle::drawControl( ControlElement element,
int pw = motifItemFrame;
if ( act && !dis ) { // active item frame
- if (pixelMetric( PM_DefaultFrameWidth ) > 1)
+ if (pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags ) > 1)
qDrawShadePanel( p, x, y, w, h, cg, FALSE, pw,
&cg.brush( TQColorGroup::Button ) );
else
@@ -1086,7 +1085,7 @@ void TQMotifStyle::drawControl( ControlElement element,
if (act)
cflags |= Style_On;
- drawPrimitive(PE_CheckMark, p,
+ drawPrimitive(PE_CheckMark, p, ceData, elementFlags,
TQRect(xvis, y+motifItemFrame, mw, mh),
cg, cflags);
}
@@ -1140,11 +1139,11 @@ void TQMotifStyle::drawControl( ControlElement element,
TQRect vr = visualRect( TQRect(x+w - motifArrowHMargin - motifItemFrame - dim,
y+h/2-dim/2, dim, dim), r );
if ( act )
- drawPrimitive(arrow, p, vr, cg,
+ drawPrimitive(arrow, p, ceData, elementFlags, vr, cg,
(Style_Down |
(dis ? Style_Default : Style_Enabled)) );
else
- drawPrimitive(arrow, p, vr, cg,
+ drawPrimitive(arrow, p, ceData, elementFlags, vr, cg,
(dis ? Style_Default : Style_Enabled));
}
@@ -1159,12 +1158,12 @@ void TQMotifStyle::drawControl( ControlElement element,
&cg.brush(TQColorGroup::Button) );
else // other item
p->fillRect( r, cg.brush(TQColorGroup::Button) );
- TQCommonStyle::drawControl( element, p, widget, r, cg, flags, opt );
+ TQCommonStyle::drawControl( element, p, ceData, elementFlags, r, cg, flags, opt, widget );
break;
}
default:
- TQCommonStyle::drawControl( element, p, widget, r, cg, flags, opt );
+ TQCommonStyle::drawControl( element, p, ceData, elementFlags, r, cg, flags, opt, widget );
break;
}
}
@@ -1220,20 +1219,22 @@ static void get_combo_parameters( const TQRect &r,
*/
void TQMotifStyle::drawComplexControl( ComplexControl control,
TQPainter *p,
- const TQWidget *widget,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
const TQRect &r,
const TQColorGroup &cg,
SFlags flags,
SCFlags sub,
SCFlags subActive,
- const TQStyleOption& opt ) const
+ const TQStyleOption& opt,
+ const TQWidget *widget ) const
{
switch ( control ) {
case CC_SpinWidget: {
SCFlags drawSub = SC_None;
if ( sub & SC_SpinWidgetFrame )
qDrawShadePanel( p, r, cg, TRUE,
- pixelMetric( PM_DefaultFrameWidth) );
+ pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags ) );
if ( sub & SC_SpinWidgetUp || sub & SC_SpinWidgetDown ) {
if ( sub & SC_SpinWidgetUp )
@@ -1241,20 +1242,18 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
if ( sub & SC_SpinWidgetDown )
drawSub |= SC_SpinWidgetDown;
- TQCommonStyle::drawComplexControl( control, p, widget, r, cg, flags,
- drawSub, subActive, opt );
+ TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags,
+ drawSub, subActive, opt, widget );
}
break; }
case CC_Slider:
{
#ifndef QT_NO_SLIDER
- const TQSlider * slider = (const TQSlider *) widget;
-
- TQRect groove = querySubControlMetrics(CC_Slider, widget, SC_SliderGroove,
- opt),
- handle = querySubControlMetrics(CC_Slider, widget, SC_SliderHandle,
- opt);
+ TQRect groove = querySubControlMetrics(CC_Slider, ceData, elementFlags, SC_SliderGroove,
+ opt, widget),
+ handle = querySubControlMetrics(CC_Slider, ceData, elementFlags, SC_SliderHandle,
+ opt, widget);
if ((sub & SC_SliderGroove) && groove.isValid()) {
qDrawShadePanel( p, groove, cg, TRUE, 2,
@@ -1262,15 +1261,15 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
if ( flags & Style_HasFocus ) {
- TQRect fr = subRect( SR_SliderFocusRect, widget );
- drawPrimitive( PE_FocusRect, p, fr, cg );
+ TQRect fr = subRect( SR_SliderFocusRect, ceData, elementFlags, widget );
+ drawPrimitive( PE_FocusRect, p, ceData, elementFlags, fr, cg );
}
}
if (( sub & SC_SliderHandle ) && handle.isValid()) {
- drawPrimitive( PE_ButtonBevel, p, handle, cg );
+ drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, handle, cg );
- if ( slider->orientation() == Horizontal ) {
+ if ( ceData.orientation == Horizontal ) {
TQCOORD mid = handle.x() + handle.width() / 2;
qDrawShadeLine( p, mid, handle.y(), mid,
handle.y() + handle.height() - 2,
@@ -1284,9 +1283,9 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
}
if ( sub & SC_SliderTickmarks )
- TQCommonStyle::drawComplexControl( control, p, widget, r, cg, flags,
+ TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags,
SC_SliderTickmarks, subActive,
- opt );
+ opt, widget );
#endif
break;
}
@@ -1296,12 +1295,12 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
if ( sub & SC_ComboBoxArrow ) {
const TQComboBox * cb = (const TQComboBox *) widget;
int awh, ax, ay, sh, sy, dh, ew;
- int fw = pixelMetric( PM_DefaultFrameWidth, cb);
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, cb);
- drawPrimitive( PE_ButtonCommand, p, r, cg, flags );
- TQRect ar = TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, cb, SC_ComboBoxArrow,
- opt ), cb );
- drawPrimitive( PE_ArrowDown, p, ar, cg, flags | Style_Enabled );
+ drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, r, cg, flags );
+ TQRect ar = TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, SC_ComboBoxArrow,
+ opt, cb ), ceData, elementFlags );
+ drawPrimitive( PE_ArrowDown, p, ceData, elementFlags, ar, cg, flags | Style_Enabled );
TQRect tr = r;
tr.addCoords( fw, fw, -fw, -fw );
@@ -1316,16 +1315,16 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
p->drawLine( ar.x()+awh-1, sy+1, ar.x()+awh-1, sy+sh-1 );
if ( cb->hasFocus() ) {
- TQRect re = TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), cb );
- drawPrimitive( PE_FocusRect, p, re, cg );
+ TQRect re = TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, ceData, elementFlags, cb ), ceData, elementFlags );
+ drawPrimitive( PE_FocusRect, p, ceData, elementFlags, re, cg );
}
}
if ( sub & SC_ComboBoxEditField ) {
TQComboBox * cb = (TQComboBox *) widget;
if ( cb->editable() ) {
- TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, cb,
- SC_ComboBoxEditField ), cb );
+ TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags,
+ SC_ComboBoxEditField, cb ), ceData, elementFlags );
er.addCoords( -1, -1, 1, 1);
qDrawShadePanel( p, er, cg, TRUE, 1,
&cg.brush( TQColorGroup::Button ));
@@ -1340,11 +1339,11 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
if (sub == (SC_ScrollBarAddLine | SC_ScrollBarSubLine | SC_ScrollBarAddPage |
SC_ScrollBarSubPage | SC_ScrollBarFirst | SC_ScrollBarLast |
SC_ScrollBarSlider))
- qDrawShadePanel(p, widget->rect(), cg, TRUE,
- pixelMetric(PM_DefaultFrameWidth, widget),
+ qDrawShadePanel(p, ceData.rect, cg, TRUE,
+ pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget),
&cg.brush(TQColorGroup::Mid));
- TQCommonStyle::drawComplexControl(control, p, widget, r, cg, flags, sub,
- subActive, opt);
+ TQCommonStyle::drawComplexControl(control, p, ceData, elementFlags, r, cg, flags, sub,
+ subActive, opt, widget);
break;
}
@@ -1352,7 +1351,7 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
case CC_ListView:
{
if ( sub & SC_ListView ) {
- TQCommonStyle::drawComplexControl( control, p, widget, r, cg, flags, sub, subActive, opt );
+ TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags, sub, subActive, opt, widget );
}
if ( sub & ( SC_ListViewBranch | SC_ListViewExpand ) ) {
if (opt.isDefault())
@@ -1455,14 +1454,14 @@ void TQMotifStyle::drawComplexControl( ComplexControl control,
#endif // QT_NO_LISTVIEW
default:
- TQCommonStyle::drawComplexControl( control, p, widget, r, cg, flags,
- sub, subActive, opt );
+ TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags,
+ sub, subActive, opt, widget );
}
}
/*! \reimp */
-int TQMotifStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const
+int TQMotifStyle::pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const
{
int ret;
@@ -1519,9 +1518,9 @@ int TQMotifStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) cons
#ifndef QT_NO_SLIDER
const TQSlider * sl = (const TQSlider *) widget;
if ( sl->orientation() == Horizontal )
- ret = sl->width() - pixelMetric( PM_SliderLength, sl ) - 6;
+ ret = sl->width() - pixelMetric( PM_SliderLength, ceData, elementFlags, sl ) - 6;
else
- ret = sl->height() - pixelMetric( PM_SliderLength, sl ) - 6;
+ ret = sl->height() - pixelMetric( PM_SliderLength, ceData, elementFlags, sl ) - 6;
#endif
break;
}
@@ -1540,7 +1539,7 @@ int TQMotifStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) cons
break;
default:
- ret = TQCommonStyle::pixelMetric( metric, widget );
+ ret = TQCommonStyle::pixelMetric( metric, ceData, elementFlags, widget );
break;
}
return ret;
@@ -1550,24 +1549,26 @@ int TQMotifStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) cons
/*!\reimp
*/
TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
- const TQWidget *widget,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
SubControl sc,
- const TQStyleOption& opt ) const
+ const TQStyleOption& opt,
+ const TQWidget *widget ) const
{
switch ( control ) {
case CC_SpinWidget: {
- if ( !widget )
+ if ( elementFlags & CEF_UseGenericParameters )
return TQRect();
- int fw = pixelMetric( PM_SpinBoxFrameWidth, 0 );
+ int fw = pixelMetric( PM_SpinBoxFrameWidth, ceData, elementFlags, 0 );
TQSize bs;
- bs.setHeight( widget->height()/2 );
+ bs.setHeight( ceData.rect.height()/2 );
if ( bs.height() < 8 )
bs.setHeight( 8 );
- bs.setWidth( TQMIN( bs.height() * 8 / 5, widget->width() / 4 ) ); // 1.6 -approximate golden mean
+ bs.setWidth( TQMIN( bs.height() * 8 / 5, ceData.rect.width() / 4 ) ); // 1.6 -approximate golden mean
bs = bs.expandedTo( TQApplication::globalStrut() );
int y = 0;
int x, lx, rx;
- x = widget->width() - y - bs.width();
+ x = ceData.rect.width() - y - bs.width();
lx = fw;
rx = x - fw * 2;
switch ( sc ) {
@@ -1576,12 +1577,12 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
case SC_SpinWidgetDown:
return TQRect(x, y + bs.height(), bs.width(), bs.height());
case SC_SpinWidgetButtonField:
- return TQRect(x, y, bs.width(), widget->height() - 2*fw);
+ return TQRect(x, y, bs.width(), ceData.rect.height() - 2*fw);
case SC_SpinWidgetEditField:
- return TQRect(lx, fw, rx, widget->height() - 2*fw);
+ return TQRect(lx, fw, rx, ceData.rect.height() - 2*fw);
case SC_SpinWidgetFrame:
return TQRect( 0, 0,
- widget->width() - bs.width(), widget->height() );
+ ceData.rect.width() - bs.width(), ceData.rect.height() );
default:
break;
}
@@ -1590,14 +1591,13 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
#ifndef QT_NO_SLIDER
case CC_Slider: {
if (sc == SC_SliderHandle) {
- const TQSlider * sl = (const TQSlider *) widget;
- int tickOffset = pixelMetric( PM_SliderTickmarkOffset, sl );
- int thickness = pixelMetric( PM_SliderControlThickness, sl );
- int sliderPos = sl->sliderStart();
- int len = pixelMetric( PM_SliderLength, sl );
+ int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget );
+ int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget );
+ int sliderPos = ceData.startStep;
+ int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget );
int motifBorder = 3;
- if ( sl->orientation() == Horizontal )
+ if ( ceData.orientation == Horizontal )
return TQRect( sliderPos + motifBorder, tickOffset + motifBorder, len,
thickness - 2*motifBorder );
return TQRect( tickOffset + motifBorder, sliderPos + motifBorder,
@@ -1608,25 +1608,24 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
#ifndef QT_NO_SCROLLBAR
case CC_ScrollBar: {
- if (! widget)
+ if (elementFlags & CEF_UseGenericParameters)
return TQRect();
- const TQScrollBar *scrollbar = (const TQScrollBar *) widget;
- int sliderstart = scrollbar->sliderStart();
- int sbextent = pixelMetric(PM_ScrollBarExtent, widget);
- int fw = pixelMetric(PM_DefaultFrameWidth, widget);
+ int sliderstart = ceData.startStep;
+ int sbextent = pixelMetric(PM_ScrollBarExtent, ceData, elementFlags, widget);
+ int fw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget);
int buttonw = sbextent - (fw * 2);
int buttonh = sbextent - (fw * 2);
- int maxlen = ((scrollbar->orientation() == TQt::Horizontal) ?
- scrollbar->width() : scrollbar->height()) -
+ int maxlen = ((ceData.orientation == TQt::Horizontal) ?
+ ceData.rect.width() : ceData.rect.height()) -
(buttonw * 2) - (fw * 2);
int sliderlen;
// calculate slider length
- if (scrollbar->maxValue() != scrollbar->minValue()) {
- uint range = scrollbar->maxValue() - scrollbar->minValue();
- sliderlen = (scrollbar->pageStep() * maxlen) /
- (range + scrollbar->pageStep());
+ if (ceData.maxSteps != ceData.minSteps) {
+ uint range = ceData.maxSteps - ceData.minSteps;
+ sliderlen = (ceData.pageStep * maxlen) /
+ (range + ceData.pageStep);
if ( sliderlen < 9 || range > INT_MAX/2 )
sliderlen = 9;
@@ -1638,47 +1637,47 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
switch (sc) {
case SC_ScrollBarSubLine:
// top/left button
- if (scrollbar->orientation() == TQt::Horizontal) {
- if ( scrollbar->width()/2 < sbextent )
- buttonw = scrollbar->width()/2 - (fw*2);
+ if (ceData.orientation == TQt::Horizontal) {
+ if ( ceData.rect.width()/2 < sbextent )
+ buttonw = ceData.rect.width()/2 - (fw*2);
return TQRect(fw, fw, buttonw, buttonh);
} else {
- if ( scrollbar->height()/2 < sbextent )
- buttonh = scrollbar->height()/2 - (fw*2);
+ if ( ceData.rect.height()/2 < sbextent )
+ buttonh = ceData.rect.height()/2 - (fw*2);
return TQRect(fw, fw, buttonw, buttonh);
}
case SC_ScrollBarAddLine:
// bottom/right button
- if (scrollbar->orientation() == TQt::Horizontal) {
- if ( scrollbar->width()/2 < sbextent )
- buttonw = scrollbar->width()/2 - (fw*2);
- return TQRect(scrollbar->width() - buttonw - fw, fw,
+ if (ceData.orientation == TQt::Horizontal) {
+ if ( ceData.rect.width()/2 < sbextent )
+ buttonw = ceData.rect.width()/2 - (fw*2);
+ return TQRect(ceData.rect.width() - buttonw - fw, fw,
buttonw, buttonh);
} else {
- if ( scrollbar->height()/2 < sbextent )
- buttonh = scrollbar->height()/2 - (fw*2);
- return TQRect(fw, scrollbar->height() - buttonh - fw,
+ if ( ceData.rect.height()/2 < sbextent )
+ buttonh = ceData.rect.height()/2 - (fw*2);
+ return TQRect(fw, ceData.rect.height() - buttonh - fw,
buttonw, buttonh);
}
case SC_ScrollBarSubPage:
- if (scrollbar->orientation() == TQt::Horizontal)
+ if (ceData.orientation == TQt::Horizontal)
return TQRect(buttonw + fw, fw, sliderstart - buttonw - fw, buttonw);
return TQRect(fw, buttonw + fw, buttonw, sliderstart - buttonw - fw);
case SC_ScrollBarAddPage:
- if (scrollbar->orientation() == TQt::Horizontal)
+ if (ceData.orientation == TQt::Horizontal)
return TQRect(sliderstart + sliderlen, fw,
maxlen - sliderstart - sliderlen + buttonw + fw, buttonw);
return TQRect(fw, sliderstart + sliderlen, buttonw,
maxlen - sliderstart - sliderlen + buttonw + fw);
case SC_ScrollBarGroove:
- if (scrollbar->orientation() == TQt::Horizontal)
+ if (ceData.orientation == TQt::Horizontal)
return TQRect(buttonw + fw, fw, maxlen, buttonw);
return TQRect(fw, buttonw + fw, buttonw, maxlen);
case SC_ScrollBarSlider:
- if (scrollbar->orientation() == TQt::Horizontal)
+ if (ceData.orientation == TQt::Horizontal)
return TQRect(sliderstart, fw, sliderlen, buttonw);
return TQRect(fw, sliderstart, buttonw, sliderlen);
@@ -1693,18 +1692,16 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
switch ( sc ) {
case SC_ComboBoxArrow: {
- const TQComboBox * cb = (const TQComboBox *) widget;
int ew, awh, sh, dh, ax, ay, sy;
- int fw = pixelMetric( PM_DefaultFrameWidth, cb );
- TQRect cr = cb->rect();
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget );
+ TQRect cr = ceData.rect;
cr.addCoords( fw, fw, -fw, -fw );
get_combo_parameters( cr, ew, awh, ax, ay, sh, dh, sy );
return TQRect( ax, ay, awh, awh ); }
case SC_ComboBoxEditField: {
- const TQComboBox * cb = (const TQComboBox *) widget;
- int fw = pixelMetric( PM_DefaultFrameWidth, cb );
- TQRect rect = cb->rect();
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget );
+ TQRect rect = ceData.rect;
rect.addCoords( fw, fw, -fw, -fw );
int ew = get_combo_extra_width( rect.height(), rect.width() );
rect.addCoords( 1, 1, -1-ew, -1 );
@@ -1717,15 +1714,17 @@ TQRect TQMotifStyle::querySubControlMetrics( ComplexControl control,
#endif
default: break;
}
- return TQCommonStyle::querySubControlMetrics( control, widget, sc, opt );
+ return TQCommonStyle::querySubControlMetrics( control, ceData, elementFlags, sc, opt, widget );
}
/*!\reimp
*/
TQSize TQMotifStyle::sizeFromContents( ContentsType contents,
- const TQWidget *widget,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
const TQSize &contentsSize,
- const TQStyleOption& opt ) const
+ const TQStyleOption& opt,
+ const TQWidget *widget ) const
{
TQSize sz(contentsSize);
@@ -1733,10 +1732,9 @@ TQSize TQMotifStyle::sizeFromContents( ContentsType contents,
case CT_PushButton:
{
#ifndef QT_NO_PUSHBUTTON
- const TQPushButton *button = (const TQPushButton *) widget;
- sz = TQCommonStyle::sizeFromContents(contents, widget, contentsSize, opt);
- if ((button->isDefault() || button->autoDefault()) &&
- sz.width() < 80 && ! button->pixmap())
+ sz = TQCommonStyle::sizeFromContents(contents, ceData, elementFlags, contentsSize, opt, widget);
+ if (((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) &&
+ sz.width() < 80 && ceData.fgPixmap.isNull())
sz.setWidth(80);
#endif
break;
@@ -1745,11 +1743,10 @@ TQSize TQMotifStyle::sizeFromContents( ContentsType contents,
case CT_PopupMenuItem:
{
#ifndef QT_NO_POPUPMENU
- if (! widget || opt.isDefault())
+ if ((elementFlags & CEF_UseGenericParameters) || opt.isDefault())
break;
- const TQPopupMenu *popup = (TQPopupMenu *) widget;
- bool checkable = popup->isCheckable();
+ bool checkable = (elementFlags & CEF_IsCheckable);
TQMenuItem *mi = opt.menuItem();
int maxpmw = opt.maxIconWidth();
int w = sz.width(), h = sz.height();
@@ -1794,7 +1791,7 @@ TQSize TQMotifStyle::sizeFromContents( ContentsType contents,
}
default:
- sz = TQCommonStyle::sizeFromContents( contents, widget, contentsSize, opt );
+ sz = TQCommonStyle::sizeFromContents( contents, ceData, elementFlags, contentsSize, opt, widget );
break;
}
@@ -1803,21 +1800,21 @@ TQSize TQMotifStyle::sizeFromContents( ContentsType contents,
/*!\reimp
*/
-TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
+TQRect TQMotifStyle::subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const
{
TQRect rect;
- TQRect wrect = widget->rect();
+ TQRect wrect = ceData.rect;
switch ( r ) {
case SR_SliderFocusRect:
- rect = TQCommonStyle::subRect( r, widget );
+ rect = TQCommonStyle::subRect( r, ceData, elementFlags, widget );
rect.addCoords( 2, 2, -2, -2 );
break;
case SR_ComboBoxFocusRect:
{
int awh, ax, ay, sh, sy, dh, ew;
- int fw = pixelMetric( PM_DefaultFrameWidth, widget );
+ int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget );
TQRect tr = wrect;
tr.addCoords( fw, fw, -fw, -fw );
@@ -1829,17 +1826,16 @@ TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
case SR_DockWindowHandleRect:
{
#ifndef QT_NO_MAINWINDOW
- if ( !widget || !widget->parent() )
+ if ( (elementFlags & CEF_UseGenericParameters) || !(elementFlags & CEF_HasParentWidget) )
break;
- const TQDockWindow * dw = (const TQDockWindow *) widget->parent();
- if ( !dw->area() || !dw->isCloseEnabled() )
- rect.setRect( 0, 0, widget->width(), widget->height() );
+ if ( !ceData.dwData.hasDockArea || !ceData.dwData.closeEnabled )
+ rect.setRect( 0, 0, ceData.rect.width(), ceData.rect.height() );
else {
- if ( dw->area()->orientation() == Horizontal )
- rect.setRect(2, 15, widget->width()-2, widget->height() - 15);
+ if ( ceData.dwData.areaOrientation == Horizontal )
+ rect.setRect(2, 15, ceData.rect.width()-2, ceData.rect.height() - 15);
else
- rect.setRect(0, 2, widget->width() - 15, widget->height() - 2);
+ rect.setRect(0, 2, ceData.rect.width() - 15, ceData.rect.height() - 2);
}
#endif
break;
@@ -1849,15 +1845,14 @@ TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
case SR_ProgressBarContents:
{
#ifndef QT_NO_PROGRESSBAR
- TQFontMetrics fm( ( widget ? widget->fontMetrics() :
+ TQFontMetrics fm( ( (!(elementFlags & CEF_UseGenericParameters)) ? TQFontMetrics(ceData.font) :
TQApplication::fontMetrics() ) );
- const TQProgressBar *progressbar = (const TQProgressBar *) widget;
int textw = 0;
- if (progressbar->percentageVisible())
+ if (ceData.percentageVisible)
textw = fm.width("100%") + 6;
- if (progressbar->indicatorFollowsStyle() ||
- progressbar->centerIndicator())
+ if ((elementFlags & CEF_IndicatorFollowsStyle) ||
+ (elementFlags & CEF_CenterIndicator))
rect = wrect;
else
rect.setCoords(wrect.left(), wrect.top(),
@@ -1869,15 +1864,14 @@ TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
case SR_ProgressBarLabel:
{
#ifndef QT_NO_PROGRESSBAR
- TQFontMetrics fm( ( widget ? widget->fontMetrics() :
+ TQFontMetrics fm( ( (!(elementFlags & CEF_UseGenericParameters)) ? TQFontMetrics(ceData.font) :
TQApplication::fontMetrics() ) );
- const TQProgressBar *progressbar = (const TQProgressBar *) widget;
int textw = 0;
- if (progressbar->percentageVisible())
+ if (ceData.percentageVisible)
textw = fm.width("100%") + 6;
- if (progressbar->indicatorFollowsStyle() ||
- progressbar->centerIndicator())
+ if ((elementFlags & CEF_IndicatorFollowsStyle) ||
+ (elementFlags & CEF_CenterIndicator))
rect = wrect;
else
rect.setCoords(wrect.right() - textw, wrect.top(),
@@ -1889,7 +1883,7 @@ TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
case SR_CheckBoxContents:
{
#ifndef QT_NO_CHECKBOX
- TQRect ir = subRect(SR_CheckBoxIndicator, widget);
+ TQRect ir = subRect(SR_CheckBoxIndicator, ceData, elementFlags, widget);
rect.setRect(ir.right() + 10, wrect.y(),
wrect.width() - ir.width() - 10, wrect.height());
#endif
@@ -1898,14 +1892,14 @@ TQRect TQMotifStyle::subRect( SubRect r, const TQWidget *widget ) const
case SR_RadioButtonContents:
{
- TQRect ir = subRect(SR_RadioButtonIndicator, widget);
+ TQRect ir = subRect(SR_RadioButtonIndicator, ceData, elementFlags, widget);
rect.setRect(ir.right() + 10, wrect.y(),
wrect.width() - ir.width() - 10, wrect.height());
break;
}
default:
- rect = TQCommonStyle::subRect( r, widget );
+ rect = TQCommonStyle::subRect( r, ceData, elementFlags, widget );
}
return rect;
@@ -2228,8 +2222,10 @@ static const char *const question_xpm[] = {
\reimp
*/
TQPixmap TQMotifStyle::stylePixmap(StylePixmap sp,
- const TQWidget *widget,
- const TQStyleOption& opt) const
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
+ const TQStyleOption& opt,
+ const TQWidget *widget) const
{
#ifndef QT_NO_IMAGEIO_XPM
switch (sp) {
@@ -2306,15 +2302,17 @@ TQPixmap TQMotifStyle::stylePixmap(StylePixmap sp,
}
#endif
- return TQCommonStyle::stylePixmap(sp, widget, opt);
+ return TQCommonStyle::stylePixmap(sp, ceData, elementFlags, opt, widget);
}
/*! \reimp */
int TQMotifStyle::styleHint(StyleHint hint,
- const TQWidget *widget,
+ TQStyleControlElementData ceData,
+ ControlElementFlags elementFlags,
const TQStyleOption &opt,
- TQStyleHintReturn *returnData) const
+ TQStyleHintReturn *returnData,
+ const TQWidget *widget) const
{
int ret;
@@ -2348,7 +2346,7 @@ int TQMotifStyle::styleHint(StyleHint hint,
break;
default:
- ret = TQCommonStyle::styleHint(hint, widget, opt, returnData);
+ ret = TQCommonStyle::styleHint(hint, ceData, elementFlags, opt, returnData, widget);
break;
}