diff options
Diffstat (limited to 'src/styles')
-rw-r--r-- | src/styles/ntqcdestyle.h | 10 | ||||
-rw-r--r-- | src/styles/ntqcommonstyle.h | 161 | ||||
-rw-r--r-- | src/styles/ntqcompactstyle.h | 6 | ||||
-rw-r--r-- | src/styles/ntqmotifplusstyle.h | 28 | ||||
-rw-r--r-- | src/styles/ntqmotifstyle.h | 36 | ||||
-rw-r--r-- | src/styles/ntqplatinumstyle.h | 24 | ||||
-rw-r--r-- | src/styles/ntqsgistyle.h | 30 | ||||
-rw-r--r-- | src/styles/ntqwindowsstyle.h | 34 | ||||
-rw-r--r-- | src/styles/qcdestyle.cpp | 20 | ||||
-rw-r--r-- | src/styles/qcommonstyle.cpp | 1420 | ||||
-rw-r--r-- | src/styles/qcompactstyle.cpp | 15 | ||||
-rw-r--r-- | src/styles/qmotifplusstyle.cpp | 311 | ||||
-rw-r--r-- | src/styles/qmotifstyle.cpp | 394 | ||||
-rw-r--r-- | src/styles/qplatinumstyle.cpp | 265 | ||||
-rw-r--r-- | src/styles/qsgistyle.cpp | 220 | ||||
-rw-r--r-- | src/styles/qwindowsstyle.cpp | 322 |
16 files changed, 1922 insertions, 1374 deletions
diff --git a/src/styles/ntqcdestyle.h b/src/styles/ntqcdestyle.h index 5266130bd..13b2c024e 100644 --- a/src/styles/ntqcdestyle.h +++ b/src/styles/ntqcdestyle.h @@ -62,18 +62,22 @@ public: TQCDEStyle( bool useHighlightCols = FALSE ); virtual ~TQCDEStyle(); - int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ) const; + int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, diff --git a/src/styles/ntqcommonstyle.h b/src/styles/ntqcommonstyle.h index 6fd636fd6..fd1e0f459 100644 --- a/src/styles/ntqcommonstyle.h +++ b/src/styles/ntqcommonstyle.h @@ -55,30 +55,73 @@ public: TQCommonStyle(); ~TQCommonStyle(); + // Old API + // DEPRECATED + __attribute__ ((deprecated)) void drawPrimitive( PrimitiveElement pe, + TQPainter *p, + const TQRect &r, + const TQColorGroup &cg, + SFlags flags = Style_Default, + const TQStyleOption& = TQStyleOption::Default ) const; + + // New API void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, const TQStyleOption& = TQStyleOption::Default ) const; + // Old API + // DEPRECATED + __attribute__ ((deprecated)) void drawControl( ControlElement element, + TQPainter *p, + const TQWidget *widget, + const TQRect &r, + const TQColorGroup &cg, + SFlags how = Style_Default, + const TQStyleOption& = TQStyleOption::Default ) const; + + // New API void drawControl( ControlElement element, - TQPainter *p, - const TQWidget *widget, - const TQRect &r, - const TQColorGroup &cg, - SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQColorGroup &cg, + SFlags how = Style_Default, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + // Old API + // DEPRECATED + __attribute__ ((deprecated)) void drawControlMask( ControlElement element, + TQPainter *p, + const TQWidget *widget, + const TQRect &r, + const TQStyleOption& = TQStyleOption::Default ) const; + + // New API void drawControlMask( ControlElement element, - TQPainter *p, - const TQWidget *widget, - const TQRect &r, - const TQStyleOption& = TQStyleOption::Default ) const; + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQRect subRect( SubRect r, const TQWidget *widget ) const; + // Old API + // DEPRECATED + __attribute__ ((deprecated)) TQRect subRect( SubRect r, const TQWidget *widget ) const; - void drawComplexControl( ComplexControl control, + // New API + TQRect subRect( SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQWidget *widget ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) void drawComplexControl( ComplexControl control, TQPainter *p, const TQWidget *widget, const TQRect &r, @@ -92,35 +135,112 @@ public: SCFlags subActive = SC_None, const TQStyleOption& = TQStyleOption::Default ) const; - void drawComplexControlMask( ComplexControl control, + // New API + void drawComplexControl( ComplexControl control, + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQColorGroup &cg, + SFlags how = Style_Default, +#ifdef Q_QDOC + SCFlags sub = SC_All, +#else + SCFlags sub = (uint)SC_All, +#endif + SCFlags subActive = SC_None, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) void drawComplexControlMask( ComplexControl control, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQStyleOption& = TQStyleOption::Default ) const; - TQRect querySubControlMetrics( ComplexControl control, + // New API + void drawComplexControlMask( ComplexControl control, + TQPainter *p, + const TQStyleControlElementData ceData, + const ControlElementFlags elementFlags, + const TQRect &r, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) TQRect querySubControlMetrics( ComplexControl control, const TQWidget *widget, SubControl sc, const TQStyleOption& = TQStyleOption::Default ) const; - SubControl querySubControl( ComplexControl control, + // New API + TQRect querySubControlMetrics( ComplexControl control, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + SubControl sc, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) SubControl querySubControl( ComplexControl control, const TQWidget *widget, const TQPoint &pos, const TQStyleOption& = TQStyleOption::Default ) const; - int pixelMetric( PixelMetric m, const TQWidget *widget = 0 ) const; + // New API + SubControl querySubControl( ComplexControl control, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQPoint &pos, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQSize sizeFromContents( ContentsType s, + // Old API + // DEPRECATED + __attribute__ ((deprecated)) int pixelMetric( PixelMetric m, const TQWidget *widget = 0 ) const; + + // New API + int pixelMetric( PixelMetric m, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) TQSize sizeFromContents( ContentsType s, const TQWidget *widget, const TQSize &contentsSize, const TQStyleOption& = TQStyleOption::Default ) const; - int styleHint(StyleHint sh, const TQWidget *, const TQStyleOption &, TQStyleHintReturn *) const; + // New API + TQSize sizeFromContents( ContentsType s, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQSize &contentsSize, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) int styleHint(StyleHint sh, const TQWidget *, const TQStyleOption &, TQStyleHintReturn *) const; - TQPixmap stylePixmap( StylePixmap sp, + // New API + int styleHint(StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption &, TQStyleHintReturn *, const TQWidget * w) const; + + // Old API + // DEPRECATED + __attribute__ ((deprecated)) TQPixmap stylePixmap( StylePixmap sp, const TQWidget *widget = 0, const TQStyleOption& = TQStyleOption::Default ) const; + // New API + TQPixmap stylePixmap( StylePixmap sp, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; + private: // Disabled copy constructor and operator= @@ -130,7 +250,8 @@ private: #endif }; - +Q_EXPORT TQStyleControlElementData populateControlElementDataFromWidget(const TQWidget* widget, const TQStyleOption& opt, bool populateReliantFields=true); +Q_EXPORT TQStyle::ControlElementFlags getControlElementFlagsForObject(const TQObject* object, TQStringList objectTypeList, const TQStyleOption& opt); #endif // QT_NO_STYLE diff --git a/src/styles/ntqcompactstyle.h b/src/styles/ntqcompactstyle.h index 2ce205815..a9d343726 100644 --- a/src/styles/ntqcompactstyle.h +++ b/src/styles/ntqcompactstyle.h @@ -58,10 +58,10 @@ class Q_EXPORT_STYLE_COMPACT TQCompactStyle : public TQWindowsStyle public: TQCompactStyle(); - int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ); + int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ); - void drawControl( ControlElement element, TQPainter *p, const TQWidget *w, const TQRect &r, - const TQColorGroup &cg, SFlags how = Style_Default, const TQStyleOption& = TQStyleOption::Default ); + void drawControl( ControlElement element, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, + const TQColorGroup &cg, SFlags how = Style_Default, const TQStyleOption& = TQStyleOption::Default, const TQWidget *w = 0 ); private: // Disabled copy constructor and operator= #if defined(TQ_DISABLE_COPY) diff --git a/src/styles/ntqmotifplusstyle.h b/src/styles/ntqmotifplusstyle.h index 2766320a2..10703a0cf 100644 --- a/src/styles/ntqmotifplusstyle.h +++ b/src/styles/ntqmotifplusstyle.h @@ -71,6 +71,8 @@ public: void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, @@ -78,17 +80,20 @@ public: void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQRect subRect(SubRect r, const TQWidget *widget) const; + TQRect subRect(SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget) const; void drawComplexControl(ComplexControl control, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, @@ -98,17 +103,20 @@ public: SCFlags controls = (uint)SC_All, #endif SCFlags active = SC_None, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; TQRect querySubControlMetrics(ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl subcontrol, - const TQStyleOption& = TQStyleOption::Default) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0) const; - int pixelMetric(PixelMetric metric, const TQWidget *widget = 0) const; + int pixelMetric(PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0) const; - int styleHint(StyleHint sh, const TQWidget *, const TQStyleOption & = TQStyleOption::Default, - TQStyleHintReturn* = 0) const; + int styleHint(StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption & = TQStyleOption::Default, + TQStyleHintReturn* = 0, const TQWidget * = 0) const; protected: bool eventFilter(TQObject *, TQEvent *); diff --git a/src/styles/ntqmotifstyle.h b/src/styles/ntqmotifstyle.h index fbfbf2508..882705c3d 100644 --- a/src/styles/ntqmotifstyle.h +++ b/src/styles/ntqmotifstyle.h @@ -75,6 +75,8 @@ public: // new style API void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, @@ -82,15 +84,18 @@ public: void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; void drawComplexControl( ComplexControl control, TQPainter *p, - const TQWidget* widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect& r, const TQColorGroup& cg, SFlags how = Style_Default, @@ -100,26 +105,31 @@ public: SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget* widget = 0 ) const; TQRect querySubControlMetrics( ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl sc, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ) const; + int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; TQSize sizeFromContents( ContentsType contents, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQSize &contentsSize, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQRect subRect( SubRect r, const TQWidget *widget ) const; + TQRect subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const; - TQPixmap stylePixmap(StylePixmap, const TQWidget * = 0, const TQStyleOption& = TQStyleOption::Default) const; + TQPixmap stylePixmap(StylePixmap, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption& = TQStyleOption::Default, const TQWidget * = 0) const; - int styleHint(StyleHint sh, const TQWidget *, const TQStyleOption & = TQStyleOption::Default, - TQStyleHintReturn* = 0) const; + int styleHint(StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption & = TQStyleOption::Default, + TQStyleHintReturn* = 0, const TQWidget * = 0) const; private: bool highlightCols; diff --git a/src/styles/ntqplatinumstyle.h b/src/styles/ntqplatinumstyle.h index 3b4657e3e..f0b0ec7ec 100644 --- a/src/styles/ntqplatinumstyle.h +++ b/src/styles/ntqplatinumstyle.h @@ -65,6 +65,8 @@ public: // new Style Stuff void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, @@ -72,15 +74,18 @@ public: void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; void drawComplexControl( ComplexControl control, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, @@ -90,16 +95,19 @@ public: SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; TQRect querySubControlMetrics( ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl sc, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ) const; + int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; - TQRect subRect( SubRect r, const TQWidget *widget ) const; + TQRect subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const; protected: TQColor mixedColor(const TQColor &, const TQColor &) const; diff --git a/src/styles/ntqsgistyle.h b/src/styles/ntqsgistyle.h index b724a5b84..38294e44c 100644 --- a/src/styles/ntqsgistyle.h +++ b/src/styles/ntqsgistyle.h @@ -74,6 +74,8 @@ public: void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, @@ -81,15 +83,18 @@ public: void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; void drawComplexControl( ComplexControl control, TQPainter *p, - const TQWidget* widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect& r, const TQColorGroup& cg, SFlags how = Style_Default, @@ -99,20 +104,25 @@ public: SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget* widget = 0 ) const; - int pixelMetric( PixelMetric metric, const TQWidget *widget = 0 ) const; + int pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; TQSize sizeFromContents( ContentsType contents, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQSize &contentsSize, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQRect subRect( SubRect r, const TQWidget *widget ) const; + TQRect subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const; TQRect querySubControlMetrics( ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl sc, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; protected: bool eventFilter( TQObject*, TQEvent*); diff --git a/src/styles/ntqwindowsstyle.h b/src/styles/ntqwindowsstyle.h index 5f7d4d7af..79934934d 100644 --- a/src/styles/ntqwindowsstyle.h +++ b/src/styles/ntqwindowsstyle.h @@ -74,6 +74,8 @@ public: // new stuff void drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, @@ -81,15 +83,18 @@ public: void drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags = Style_Default, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; void drawComplexControl( ComplexControl control, TQPainter* p, - const TQWidget* widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect& r, const TQColorGroup& cg, SFlags flags = Style_Default, @@ -99,24 +104,31 @@ public: SCFlags sub = (uint)SC_All, #endif SCFlags subActive = SC_None, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget* widget = 0 ) const; int pixelMetric( PixelMetric metric, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQWidget *widget = 0 ) const; TQSize sizeFromContents( ContentsType contents, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQSize &contentsSize, - const TQStyleOption& = TQStyleOption::Default ) const; + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - int styleHint(StyleHint sh, const TQWidget *, const TQStyleOption & = TQStyleOption::Default, - TQStyleHintReturn* = 0) const; + int styleHint(StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption & = TQStyleOption::Default, + TQStyleHintReturn* = 0, const TQWidget* = 0) const; TQPixmap stylePixmap( StylePixmap stylepixmap, - const TQWidget *widget = 0, - const TQStyleOption& = TQStyleOption::Default ) const; + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQStyleOption& = TQStyleOption::Default, + const TQWidget *widget = 0 ) const; - TQRect subRect( SubRect r, const TQWidget *widget ) const; + TQRect subRect( SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQWidget *widget ) const; private: diff --git a/src/styles/qcdestyle.cpp b/src/styles/qcdestyle.cpp index 7a4f2693d..1b01c81d1 100644 --- a/src/styles/qcdestyle.cpp +++ b/src/styles/qcdestyle.cpp @@ -87,7 +87,7 @@ TQCDEStyle::~TQCDEStyle() /*!\reimp */ -int TQCDEStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const +int TQCDEStyle::pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const { int ret; @@ -102,7 +102,7 @@ int TQCDEStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const ret = 13; break; default: - ret = TQMotifStyle::pixelMetric( metric, widget ); + ret = TQMotifStyle::pixelMetric( metric, ceData, elementFlags, widget ); break; } return ret; @@ -112,11 +112,13 @@ int TQCDEStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const */ void TQCDEStyle::drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how, - const TQStyleOption& opt ) const + const TQStyleOption& opt, + const TQWidget *widget ) const { switch( element ) { @@ -127,11 +129,11 @@ void TQCDEStyle::drawControl( ControlElement element, &cg.brush( TQColorGroup::Button ) ); else // other item p->fillRect( r, cg.brush( TQColorGroup::Button ) ); - TQCommonStyle::drawControl( element, p, widget, r, cg, how, opt ); + TQCommonStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget ); break; } default: - TQMotifStyle::drawControl( element, p, widget, r, cg, how, opt ); + TQMotifStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget ); break; } @@ -142,6 +144,8 @@ void TQCDEStyle::drawControl( ControlElement element, */ void TQCDEStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -154,7 +158,7 @@ void TQCDEStyle::drawPrimitive( PrimitiveElement pe, bool on = flags & Style_On; bool showUp = !( down ^ on ); TQBrush fill = showUp || flags & Style_NoChange ? cg.brush( TQColorGroup::Button ) : cg.brush( TQColorGroup::Mid ); - qDrawShadePanel( p, r, cg, !showUp, pixelMetric( PM_DefaultFrameWidth ), &cg.brush( TQColorGroup::Button ) ); + qDrawShadePanel( p, r, cg, !showUp, pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags ), &cg.brush( TQColorGroup::Button ) ); if ( !( flags & Style_Off ) ) { TQPointArray a( 7 * 2 ); @@ -360,7 +364,7 @@ void TQCDEStyle::drawPrimitive( PrimitiveElement pe, } break; default: - TQMotifStyle::drawPrimitive( pe, p, r, cg, flags, opt ); + TQMotifStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); } } diff --git a/src/styles/qcommonstyle.cpp b/src/styles/qcommonstyle.cpp index 4b51be9f1..45b1ba857 100644 --- a/src/styles/qcommonstyle.cpp +++ b/src/styles/qcommonstyle.cpp @@ -49,9 +49,11 @@ #include "ntqpixmap.h" #include "ntqpushbutton.h" #include "ntqtabbar.h" +#include "ntqlineedit.h" #include "ntqscrollbar.h" #include "ntqtoolbutton.h" #include "ntqtoolbar.h" +#include "ntqcombobox.h" #include "ntqdockarea.h" #include "ntqheader.h" #include "ntqspinbox.h" @@ -135,9 +137,414 @@ static const char * const check_list_controller_xpm[] = { " ", " "}; +#include <ntqmetaobject.h> + +TQStringList getObjectTypeListForObject(const TQObject* object) { + TQStringList objectTypes; + + if (object) { + TQMetaObject* objectMetaObject = object->metaObject(); + const char* name; + + while (objectMetaObject) { + name = objectMetaObject->className(); + objectTypes.append(TQString(name)); + objectMetaObject = objectMetaObject->superClass(); + } + } + + return objectTypes; +} + +TQStyle::ControlElementFlags getControlElementFlagsForObject(const TQObject* object, TQStringList objectTypeList, const TQStyleOption& opt) { + TQStyle::ControlElementFlags cef = (TQStyle::ControlElementFlags)0; + + if (object) { + if (objectTypeList.contains("TQPushButton")) { + const TQPushButton *button = dynamic_cast<const TQPushButton*>(object); + if (button) { + if (button->isDefault()) cef = cef | TQStyle::CEF_IsDefault; + if (button->autoDefault()) cef = cef | TQStyle::CEF_AutoDefault; + if (button->isMenuButton()) cef = cef | TQStyle::CEF_IsMenuWidget; + if (button->isToggleButton()) cef = cef | TQStyle::CEF_BiState; + if (button->isFlat()) cef = cef | TQStyle::CEF_IsFlat; + } + } + if (objectTypeList.contains("TQToolButton")) { + const TQToolButton *button = dynamic_cast<const TQToolButton*>(object); + if (button) { + if (button->isToggleButton()) cef = cef | TQStyle::CEF_BiState; + if (button->usesTextLabel()) cef = cef | TQStyle::CEF_UsesTextLabel; + if (button->usesBigPixmap()) cef = cef | TQStyle::CEF_UsesBigPixmap; + if (button->popup()) cef = cef | TQStyle::CEF_HasPopupMenu; + } + } + if (objectTypeList.contains("TQButton")) { + const TQButton *button = dynamic_cast<const TQButton*>(object); + if (button) { + if (button->isDown()) cef = cef | TQStyle::CEF_IsDown; + if (button->isOn()) cef = cef | TQStyle::CEF_IsOn; + if (button->isEnabled()) cef = cef | TQStyle::CEF_IsEnabled; + if (button->isToggleButton()) cef = cef | TQStyle::CEF_BiState; + } + } + if (objectTypeList.contains("TQTabBar")) { + const TQTabBar *tb = dynamic_cast<const TQTabBar*>(object); + TQTab * t = opt.tab(); + if ((t) && (tb)) { + if (t->identifier() == tb->currentTab()) cef = cef | TQStyle::CEF_IsActive; + } + } + if (objectTypeList.contains("TQToolBox")) { + const TQToolBox *tb = dynamic_cast<const TQToolBox*>(object); + if (tb) { + if (!tb->currentItem()) cef = cef | TQStyle::CEF_IsContainerEmpty; + } + } + if (objectTypeList.contains("TQProgressBar")) { + const TQProgressBar *pb = dynamic_cast<const TQProgressBar*>(object); + if (pb) { + if (pb->centerIndicator()) cef = cef | TQStyle::CEF_CenterIndicator; + if (pb->indicatorFollowsStyle()) cef = cef | TQStyle::CEF_IndicatorFollowsStyle; + } + } + if (objectTypeList.contains("TQPopupMenu")) { + const TQPopupMenu *pm = dynamic_cast<const TQPopupMenu*>(object); + if (pm) { + if (pm->isCheckable()) cef = cef | TQStyle::CEF_IsCheckable; + } + } + if (objectTypeList.contains("TQComboBox")) { + const TQComboBox *cb = dynamic_cast<const TQComboBox*>(object); + if (cb) { + if (cb->editable()) cef = cef | TQStyle::CEF_IsEditable; + } + } + // Generic flags + const TQWidget* widget = dynamic_cast<const TQWidget*>(object); + if (widget) { + if (widget->parentWidget()) cef = cef | TQStyle::CEF_HasParentWidget; + if (widget->focusProxy()) cef = cef | TQStyle::CEF_HasFocusProxy; + if (widget->hasFocus()) cef = cef | TQStyle::CEF_HasFocus; + } + } + else { + cef = cef | TQStyle::CEF_UseGenericParameters; + } + + return cef; +} + +TQStyleControlElementData populateControlElementDataFromWidget(const TQWidget* widget, const TQStyleOption& opt, bool populateReliantFields) { + TQStyleControlElementData ceData; + + if (widget) { + ceData.widgetObjectTypes = getObjectTypeListForObject(widget); + const TQPixmap* erasePixmap = widget->backgroundPixmap(); + if (erasePixmap) { + ceData.bgPixmap = *erasePixmap; + } + if (populateReliantFields) { + ceData.bgBrush = widget->backgroundBrush(); + } + ceData.wflags = widget->getWFlags(); + ceData.bgColor = widget->eraseColor(); + ceData.bgOffset = widget->backgroundOffset(); + ceData.backgroundMode = widget->backgroundMode(); + if (populateReliantFields) { + ceData.fgColor = widget->foregroundColor(); + ceData.colorGroup = widget->colorGroup(); + } + ceData.geometry = widget->geometry(); + ceData.rect = widget->rect(); + ceData.pos = widget->pos(); + const TQPixmap* icon = widget->icon(); + if (icon) { + ceData.icon = *icon; + } + ceData.palette = widget->palette(); + ceData.font = widget->font(); + if (ceData.widgetObjectTypes.contains("TQPushButton")) { + const TQPushButton *button = dynamic_cast<const TQPushButton*>(widget); + if (button) { + TQIconSet* iconSet = 0; + const TQPixmap* fgPixmap = 0; + iconSet = button->iconSet(); + fgPixmap = button->pixmap(); + if (iconSet) { + ceData.iconSet = *iconSet; + } + if (fgPixmap) { + ceData.fgPixmap = *fgPixmap; + } + } + } + if (ceData.widgetObjectTypes.contains("TQToolButton")) { + const TQToolButton *button = dynamic_cast<const TQToolButton*>(widget); + if (button) { + const TQPixmap* fgPixmap = 0; + ceData.iconSet = button->iconSet(); + fgPixmap = button->pixmap(); + if (fgPixmap) { + ceData.fgPixmap = *fgPixmap; + } + ceData.textLabel = button->textLabel(); + ceData.toolButtonTextPosition = button->textPosition(); + ceData.popupDelay = button->popupDelay(); + } + } + if (ceData.widgetObjectTypes.contains("TQCheckBox")) { + const TQCheckBox *button = dynamic_cast<const TQCheckBox*>(widget); + if (button) { + const TQPixmap* fgPixmap = 0; + fgPixmap = button->pixmap(); + if (fgPixmap) { + ceData.fgPixmap = *fgPixmap; + } + } + } + if (ceData.widgetObjectTypes.contains("TQRadioButton")) { + const TQRadioButton *button = dynamic_cast<const TQRadioButton*>(widget); + if (button) { + const TQPixmap* fgPixmap = 0; + fgPixmap = button->pixmap(); + if (fgPixmap) { + ceData.fgPixmap = *fgPixmap; + } + } + } + if (ceData.widgetObjectTypes.contains("TQButton")) { + const TQButton *button = dynamic_cast<const TQButton*>(widget); + if (button) { + ceData.text = button->text(); + } + } + if (ceData.widgetObjectTypes.contains("TQTabBar")) { + const TQTabBar *tb = dynamic_cast<const TQTabBar*>(widget); + if (tb) { + ceData.tabBarData.tabCount = tb->count(); + ceData.tabBarData.shape = tb->shape(); + ceData.tabBarData.identIndexMap.clear(); + const TQTab* currentTab; + for (int i=0; i<tb->count(); ++i) { + currentTab = tb->tabAt(i); + if (currentTab) { + ceData.tabBarData.identIndexMap[currentTab->identifier()] = tb->indexOf(currentTab->identifier()); + } + } + } + } + if (ceData.widgetObjectTypes.contains("TQToolBox")) { + const TQToolBox *tb = dynamic_cast<const TQToolBox*>(widget); + if (tb) { + const TQWidget* currentItem = tb->currentItem(); + if (currentItem) { + ceData.activeItemPaletteBgColor = currentItem->paletteBackgroundColor(); + } + } + } + if (ceData.widgetObjectTypes.contains("TQProgressBar")) { + const TQProgressBar *pb = dynamic_cast<const TQProgressBar*>(widget); + if (pb) { + ceData.currentStep = pb->progress(); + ceData.totalSteps = pb->totalSteps(); + ceData.progressText = pb->progressString(); + ceData.percentageVisible = pb->percentageVisible(); + } + } + if (ceData.widgetObjectTypes.contains("TQHeader")) { + const TQHeader *header = dynamic_cast<const TQHeader*>(widget); + if (header) { + int section = opt.headerSection(); + TQIconSet* iconSet = 0; + iconSet = header->iconSet(section); + ceData.textLabel = header->label(section); + if (iconSet) { + ceData.iconSet = *iconSet; + } + } + } + // Complex Controls + if (ceData.widgetObjectTypes.contains("TQScrollBar")) { + const TQScrollBar *sb = dynamic_cast<const TQScrollBar*>(widget); + if (sb) { + ceData.orientation = sb->orientation(); + ceData.minSteps = sb->minValue(); + ceData.maxSteps = sb->maxValue(); + ceData.currentStep = sb->value(); + ceData.startStep = sb->sliderStart(); + ceData.pageStep = sb->pageStep(); + + } + } + if (ceData.widgetObjectTypes.contains("TQSlider")) { + const TQSlider *sl = dynamic_cast<const TQSlider*>(widget); + if (sl) { + ceData.orientation = sl->orientation(); + ceData.tickMarkSetting = sl->tickmarks(); + ceData.tickInterval = sl->tickInterval(); + ceData.currentStep = sl->value(); + ceData.startStep = sl->sliderStart(); + ceData.lineStep = sl->lineStep(); + ceData.pageStep = sl->pageStep(); + } + } + if (ceData.widgetObjectTypes.contains("TQDialogButtons")) { + const TQDialogButtons *dlgbtns = dynamic_cast<const TQDialogButtons*>(widget); + if (dlgbtns) { + ceData.orientation = dlgbtns->orientation(); + ceData.dlgVisibleButtons = dlgbtns->visibleButtons(); + TQDialogButtons::Button btns[] = { TQDialogButtons::All, TQDialogButtons::Reject, TQDialogButtons::Accept, TQDialogButtons::Apply, TQDialogButtons::Retry, TQDialogButtons::Ignore, TQDialogButtons::Abort, TQDialogButtons::Help }; + for(unsigned int i = 0; i < (sizeof(btns)/sizeof(btns[0])); i++) { + if (ceData.dlgVisibleButtons & btns[i]) { + ceData.dlgVisibleSizeHints[btns[i]] = dlgbtns->sizeHint(btns[i]); + } + } + + } + } + if (ceData.widgetObjectTypes.contains("TQTitleBar")) { + const TQTitleBar *tb = dynamic_cast<const TQTitleBar*>(widget); + if (tb) { + ceData.titleBarData.hasWindow = !!(tb->window()); + if (ceData.titleBarData.hasWindow) { + ceData.titleBarData.windowState = tb->window()->windowState(); + } + if (populateReliantFields) { + ceData.titleBarData.usesActiveColor = tb->usesActiveColor(); + } + ceData.titleBarData.visibleText = tb->visibleText(); + } + } + if (ceData.widgetObjectTypes.contains("TQSpinWidget")) { + const TQSpinWidget *sw = dynamic_cast<const TQSpinWidget*>(widget); + if (sw) { + ceData.spinWidgetData.buttonSymbols = sw->buttonSymbols(); + ceData.spinWidgetData.upRect = sw->upRect(); + ceData.spinWidgetData.downRect = sw->downRect(); + ceData.spinWidgetData.upEnabled = sw->isUpEnabled(); + ceData.spinWidgetData.downEnabled = sw->isDownEnabled(); + } + } + if (ceData.widgetObjectTypes.contains("TQListView")) { + const TQListView *lv = dynamic_cast<const TQListView*>(widget); + if (lv) { + ceData.listViewData.rootDecorated = lv->rootIsDecorated(); + ceData.listViewData.itemMargin = lv->itemMargin(); + TQWidget* viewport = lv->viewport(); + if (viewport) { + ceData.viewportData.widgetObjectTypes = getObjectTypeListForObject(viewport); + const TQPixmap* erasePixmap = viewport->backgroundPixmap(); + if (erasePixmap) { + ceData.viewportData.bgPixmap = *erasePixmap; + } + if (populateReliantFields) { + ceData.viewportData.bgBrush = viewport->backgroundBrush(); + } + ceData.viewportData.wflags = viewport->getWFlags(); + ceData.viewportData.bgColor = viewport->eraseColor(); + ceData.viewportData.bgOffset = viewport->backgroundOffset(); + ceData.viewportData.backgroundMode = viewport->backgroundMode(); + if (populateReliantFields) { + ceData.viewportData.fgColor = viewport->foregroundColor(); + ceData.viewportData.colorGroup = viewport->colorGroup(); + } + ceData.viewportData.geometry = viewport->geometry(); + ceData.viewportData.rect = viewport->rect(); + ceData.viewportData.pos = viewport->pos(); + const TQPixmap* icon = viewport->icon(); + if (icon) { + ceData.viewportData.icon = *icon; + } + ceData.viewportData.palette = viewport->palette(); + ceData.viewportData.font = viewport->font(); + } + } + } + if (ceData.widgetObjectTypes.contains("TQComboBox")) { + const TQComboBox *cb = dynamic_cast<const TQComboBox*>(widget); + if (cb) { + const TQLineEdit* lineEdit = cb->lineEdit(); + if (lineEdit) { + ceData.comboBoxLineEditFlags = getControlElementFlagsForObject(lineEdit, ceData.widgetObjectTypes, TQStyleOption::Default); + } + } + } + + const TQWidget* parentWidget = widget->parentWidget(); + if (parentWidget) { + ceData.parentWidgetData.widgetObjectTypes = getObjectTypeListForObject(parentWidget); + const TQPixmap* erasePixmap = parentWidget->backgroundPixmap(); + if (erasePixmap) { + ceData.parentWidgetData.bgPixmap = *erasePixmap; + } + if (populateReliantFields) { + ceData.parentWidgetData.bgBrush = parentWidget->backgroundBrush(); + } + ceData.parentWidgetData.wflags = parentWidget->getWFlags(); + ceData.parentWidgetData.bgColor = parentWidget->eraseColor(); + ceData.parentWidgetData.bgOffset = parentWidget->backgroundOffset(); + ceData.parentWidgetData.backgroundMode = parentWidget->backgroundMode(); + if (populateReliantFields) { + ceData.parentWidgetData.fgColor = parentWidget->foregroundColor(); + ceData.parentWidgetData.colorGroup = parentWidget->colorGroup(); + } + ceData.parentWidgetData.geometry = parentWidget->geometry(); + ceData.parentWidgetData.rect = parentWidget->rect(); + ceData.parentWidgetData.pos = parentWidget->pos(); + const TQPixmap* icon = parentWidget->icon(); + if (icon) { + ceData.parentWidgetData.icon = *icon; + } + ceData.parentWidgetData.palette = parentWidget->palette(); + ceData.parentWidgetData.font = parentWidget->font(); + + const TQDockWindow * dw = dynamic_cast<const TQDockWindow*>(parentWidget); + if (dw) { + if (dw->area()) { + ceData.dwData.hasDockArea = true; + ceData.dwData.areaOrientation = dw->area()->orientation(); + } + else { + ceData.dwData.hasDockArea = false; + } + ceData.dwData.closeEnabled = dw->isCloseEnabled(); + } + } + } + + return ceData; +} + +/*! \reimp */ +void TQCommonStyle::drawPrimitive( PrimitiveElement pe, + TQPainter *p, + const TQRect &r, + const TQColorGroup &cg, + SFlags flags, + const TQStyleOption& opt ) const +{ + const TQWidget* widget = 0; + + // Determine if the request needs widget information and set widget appropriately + // FIXME + if ((pe == PE_CheckListController) || (pe == PE_CheckListExclusiveIndicator) || (pe == PE_CheckListIndicator)) { + TQCheckListItem *item = opt.checkListItem(); + if (item) { + TQListView *lv = item->listView(); + widget = dynamic_cast<TQWidget*>(lv); + } + } + + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + drawPrimitive(pe, p, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), r, cg, flags, opt); +} + /*! \reimp */ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -152,7 +559,6 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, break; } case PE_CheckListExclusiveIndicator: { TQCheckListItem *item = opt.checkListItem(); - TQListView *lv = item->listView(); if(!item) return; int x = r.x(), y = r.y(); @@ -174,7 +580,7 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, if ( flags & Style_Enabled ) p->setPen( cg.text() ); else - p->setPen( TQPen( lv->palette().color( TQPalette::Disabled, TQColorGroup::Text ) ) ); + p->setPen( TQPen( ceData.palette.color( TQPalette::Disabled, TQColorGroup::Text ) ) ); TQPointArray a( TQCOORDARRLEN(pts1), pts1 ); a.translate( x, y ); //p->setPen( cg.dark() ); @@ -205,21 +611,20 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, break; } case PE_CheckListIndicator: { TQCheckListItem *item = opt.checkListItem(); - TQListView *lv = item->listView(); if(!item) return; - int x = r.x(), y = r.y(), w = r.width(), h = r.width(), marg = lv->itemMargin(); + int x = r.x(), y = r.y(), w = r.width(), h = r.width(), marg = ceData.listViewData.itemMargin; if ( flags & Style_Enabled ) p->setPen( TQPen( cg.text(), 2 ) ); else - p->setPen( TQPen( lv->palette().color( TQPalette::Disabled, TQColorGroup::Text ), + p->setPen( TQPen( ceData.palette.color( TQPalette::Disabled, TQColorGroup::Text ), 2 ) ); bool parentControl = FALSE; if ( item->parent() && item->parent()->rtti() == 1 && ((TQCheckListItem*) item->parent())->type() == TQCheckListItem::Controller ) parentControl = TRUE; - if ( flags & Style_Selected && !lv->rootIsDecorated() && !parentControl ) { + if ( flags & Style_Selected && !ceData.listViewData.rootDecorated && !parentControl ) { p->fillRect( 0, 0, x + marg + w + 4, item->height(), cg.brush( TQColorGroup::Highlight ) ); if ( item->isEnabled() ) @@ -322,7 +727,7 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, case PE_SpinWidgetPlus: case PE_SpinWidgetMinus: { p->save(); - int fw = pixelMetric( PM_DefaultFrameWidth, 0 ); + int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, 0 ); TQRect br; br.setRect( r.x() + fw, r.y() + fw, r.width() - fw*2, r.height() - fw*2 ); @@ -353,7 +758,7 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, case PE_SpinWidgetUp: case PE_SpinWidgetDown: { - int fw = pixelMetric( PM_DefaultFrameWidth, 0 ); + int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, 0 ); TQRect br; br.setRect( r.x() + fw, r.y() + fw, r.width() - fw*2, r.height() - fw*2 ); @@ -378,8 +783,8 @@ void TQCommonStyle::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->save(); p->translate( sx + bsx, sy + bsy ); @@ -464,21 +869,21 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, case PE_Panel: case PE_PanelPopup: { - int lw = opt.isDefault() ? pixelMetric(PM_DefaultFrameWidth) + int lw = opt.isDefault() ? pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags) : opt.lineWidth(); qDrawShadePanel(p, r, cg, (flags & Style_Sunken), lw); break; } case PE_PanelDockWindow: { - int lw = opt.isDefault() ? pixelMetric(PM_DockWindowFrameWidth) + int lw = opt.isDefault() ? pixelMetric(PM_DockWindowFrameWidth, ceData, elementFlags) : opt.lineWidth(); qDrawShadePanel(p, r, cg, FALSE, lw); break; } case PE_PanelMenuBar: { - int lw = opt.isDefault() ? pixelMetric(PM_MenuBarFrameWidth) + int lw = opt.isDefault() ? pixelMetric(PM_MenuBarFrameWidth, ceData, elementFlags) : opt.lineWidth(); qDrawShadePanel(p, r, cg, FALSE, lw, &cg.brush(TQColorGroup::Button)); @@ -565,7 +970,7 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, break; } case PE_PanelGroupBox: //We really do not need PE_GroupBoxFrame anymore, nasty holdover ### - drawPrimitive( PE_GroupBoxFrame, p, r, cg, flags, opt ); + drawPrimitive( PE_GroupBoxFrame, p, ceData, elementFlags, r, cg, flags, opt ); break; case PE_GroupBoxFrame: { #ifndef QT_NO_FRAME @@ -587,11 +992,11 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, case PE_PanelLineEdit: case PE_PanelTabWidget: case PE_WindowFrame: - drawPrimitive( PE_Panel, p, r, cg, flags, opt ); + drawPrimitive( PE_Panel, p, ceData, elementFlags, r, cg, flags, opt ); break; case PE_RubberBand: - drawPrimitive(PE_FocusRect, p, r, cg, flags, opt); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, r, cg, flags, opt); break; default: break; @@ -600,6 +1005,25 @@ void TQCommonStyle::drawPrimitive( PrimitiveElement pe, activePainter = 0; } +void qt_style_erase_region(TQPainter* p, const TQRegion& region, TQStyleControlElementData ceData) { + TQRegion reg = region; + + TQPoint offset = ceData.bgOffset; + int ox = offset.x(); + int oy = offset.y(); + + TQRegion origcr = p->clipRegion(); + p->setClipRegion(region); + if (!ceData.bgPixmap.isNull()) { + p->drawTiledPixmap(0, 0, ceData.geometry.width(), ceData.geometry.height(), ceData.bgPixmap, ox, oy); + } + else { + p->fillRect(ceData.rect, ceData.bgColor); + } + p->setClipRegion(origcr); + return; +} + /*! \reimp */ void TQCommonStyle::drawControl( ControlElement element, TQPainter *p, @@ -610,12 +1034,27 @@ void TQCommonStyle::drawControl( ControlElement element, const TQStyleOption& opt ) const { #if defined(QT_CHECK_STATE) - if (! widget) { - tqWarning("TQCommonStyle::drawControl: widget parameter cannot be zero!"); - return; - } + if (!widget) { + tqWarning("TQCommonStyle::drawControl: widget parameter cannot be zero!"); + return; + } #endif + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, opt); + drawControl(element, p, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, opt), r, cg, flags, opt, widget); +} + +/*! \reimp */ +void TQCommonStyle::drawControl( ControlElement element, + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQColorGroup &cg, + SFlags flags, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ activePainter = p; switch (element) { @@ -625,18 +1064,18 @@ void TQCommonStyle::drawControl( ControlElement element, reg = p->clipRegion(); else reg = r; - ((TQWidget *)widget)->erase( reg ); + qt_style_erase_region(p, reg, ceData); break; } case CE_PushButton: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; TQRect br = r; - int dbi = pixelMetric(PM_ButtonDefaultIndicator, widget); + int dbi = pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget); - if (button->isDefault() || button->autoDefault()) { - if ( button->isDefault()) - drawPrimitive(PE_ButtonDefault, p, br, cg, flags); + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) { + if (elementFlags & CEF_IsDefault) { + drawPrimitive(PE_ButtonDefault, p, ceData, elementFlags, br, cg, flags); + } br.setCoords(br.left() + dbi, br.top() + dbi, @@ -645,9 +1084,9 @@ void TQCommonStyle::drawControl( ControlElement element, } p->save(); - p->setBrushOrigin( -widget->backgroundOffset().x(), - -widget->backgroundOffset().y() ); - drawPrimitive(PE_ButtonCommand, p, br, cg, flags); + p->setBrushOrigin( -ceData.bgOffset.x(), + -ceData.bgOffset.y() ); + drawPrimitive(PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags); p->restore(); #endif break; @@ -656,43 +1095,42 @@ void TQCommonStyle::drawControl( ControlElement element, case CE_PushButtonLabel: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; TQRect ir = r; - if (button->isDown() || button->isOn()) { + if ((elementFlags & CEF_IsDown) || (elementFlags & CEF_IsOn)) { flags |= Style_Sunken; - ir.moveBy(pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget)); + ir.moveBy(pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget)); } - if (button->isMenuButton()) { - int mbi = pixelMetric(PM_MenuButtonIndicator, widget); + if (elementFlags & CEF_IsMenuWidget) { + int mbi = pixelMetric(PM_MenuButtonIndicator, ceData, elementFlags, widget); TQRect ar(ir.right() - mbi, ir.y() + 2, mbi - 4, ir.height() - 4); - drawPrimitive(PE_ArrowDown, p, ar, cg, flags, opt); + drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, ar, cg, flags, opt); ir.setWidth(ir.width() - mbi); } int tf=AlignVCenter | ShowPrefix; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) tf |= NoAccel; #ifndef QT_NO_ICONSET - if ( button->iconSet() && ! button->iconSet()->isNull() ) { + if ( !ceData.iconSet.isNull() ) { TQIconSet::Mode mode = - button->isEnabled() ? TQIconSet::Normal : TQIconSet::Disabled; - if ( mode == TQIconSet::Normal && button->hasFocus() ) + (elementFlags & CEF_IsEnabled) ? TQIconSet::Normal : TQIconSet::Disabled; + if ( mode == TQIconSet::Normal && (elementFlags & CEF_HasFocus) ) mode = TQIconSet::Active; TQIconSet::State state = TQIconSet::Off; - if ( button->isToggleButton() && button->isOn() ) + 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 ); int pixw = pixmap.width(); int pixh = pixmap.height(); //Center the icon if there is neither text nor pixmap - if ( button->text().isEmpty() && !button->pixmap() ) + if ( ceData.text.isEmpty() && ceData.fgPixmap.isNull() ) p->drawPixmap( ir.x() + ir.width() / 2 - pixw / 2, ir.y() + ir.height() / 2 - pixh / 2, pixmap ); else p->drawPixmap( ir.x() + 2, ir.y() + ir.height() / 2 - pixh / 2, pixmap ); @@ -700,66 +1138,62 @@ void TQCommonStyle::drawControl( ControlElement element, ir.moveBy(pixw + 4, 0); ir.setWidth(ir.width() - (pixw + 4)); // left-align text if there is - if (!button->text().isEmpty()) + if (!ceData.text.isEmpty()) tf |= AlignLeft; - else if (button->pixmap()) + else if (!ceData.fgPixmap.isNull()) tf |= AlignHCenter; } else #endif //QT_NO_ICONSET tf |= AlignHCenter; drawItem(p, ir, tf, cg, - flags & Style_Enabled, button->pixmap(), button->text(), - button->text().length(), &(cg.buttonText()) ); + flags & Style_Enabled, (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text, + ceData.text.length(), &(cg.buttonText()) ); if (flags & Style_HasFocus) - drawPrimitive(PE_FocusRect, p, subRect(SR_PushButtonFocusRect, widget), + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, subRect(SR_PushButtonFocusRect, ceData, elementFlags, widget), cg, flags); #endif break; } case CE_CheckBox: - drawPrimitive(PE_Indicator, p, r, cg, flags, opt); + drawPrimitive(PE_Indicator, p, ceData, elementFlags, r, cg, flags, opt); break; case CE_CheckBoxLabel: { #ifndef QT_NO_CHECKBOX - const TQCheckBox *checkbox = (const TQCheckBox *) widget; - int alignment = TQApplication::reverseLayout() ? AlignRight : AlignLeft; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, - flags & Style_Enabled, checkbox->pixmap(), checkbox->text()); + flags & Style_Enabled, (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text); if (flags & Style_HasFocus) { - TQRect fr = visualRect(subRect(SR_CheckBoxFocusRect, widget), widget); - drawPrimitive(PE_FocusRect, p, fr, cg, flags); + TQRect fr = visualRect(subRect(SR_CheckBoxFocusRect, ceData, elementFlags, widget), ceData, elementFlags); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags); } #endif break; } case CE_RadioButton: - drawPrimitive(PE_ExclusiveIndicator, p, r, cg, flags, opt); + drawPrimitive(PE_ExclusiveIndicator, p, ceData, elementFlags, r, cg, flags, opt); break; case CE_RadioButtonLabel: { #ifndef QT_NO_RADIOBUTTON - const TQRadioButton *radiobutton = (const TQRadioButton *) widget; - int alignment = TQApplication::reverseLayout() ? AlignRight : AlignLeft; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, - flags & Style_Enabled, radiobutton->pixmap(), radiobutton->text()); + flags & Style_Enabled, (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text); if (flags & Style_HasFocus) { - TQRect fr = visualRect(subRect(SR_RadioButtonFocusRect, widget), widget); - drawPrimitive(PE_FocusRect, p, fr, cg, flags); + TQRect fr = visualRect(subRect(SR_RadioButtonFocusRect, ceData, elementFlags, widget), ceData, elementFlags); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags); } #endif break; @@ -768,10 +1202,8 @@ void TQCommonStyle::drawControl( ControlElement element, #ifndef QT_NO_TABBAR case CE_TabBarTab: { - const TQTabBar * tb = (const TQTabBar *) widget; - - if ( tb->shape() == TQTabBar::TriangularAbove || - tb->shape() == TQTabBar::TriangularBelow ) { + if ( ceData.tabBarData.shape == TQTabBar::TriangularAbove || + ceData.tabBarData.shape == TQTabBar::TriangularBelow ) { // triangular, above or below int y; int x; @@ -790,7 +1222,7 @@ void TQCommonStyle::drawControl( ControlElement element, for ( i = 0; i < 5; i++ ) a.setPoint( 9-i, right - a.point( i ).x(), a.point( i ).y() ); - if ( tb->shape() == TQTabBar::TriangularAbove ) + if ( ceData.tabBarData.shape == TQTabBar::TriangularAbove ) for ( i = 0; i < 10; i++ ) a.setPoint( i, a.point(i).x(), r.height() - 1 - a.point( i ).y() ); @@ -813,22 +1245,21 @@ void TQCommonStyle::drawControl( ControlElement element, if ( opt.isDefault() ) break; - const TQTabBar * tb = (const TQTabBar *) widget; TQTab * t = opt.tab(); TQRect tr = r; - if ( t->identifier() == tb->currentTab() ) + if (elementFlags & CEF_IsActive) tr.setBottom( tr.bottom() - - pixelMetric( TQStyle::PM_DefaultFrameWidth, tb ) ); + pixelMetric( TQStyle::PM_DefaultFrameWidth, ceData, elementFlags, widget ) ); int alignment = AlignCenter | ShowPrefix; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; drawItem( p, tr, alignment, cg, flags & Style_Enabled, 0, t->text() ); if ( (flags & Style_HasFocus) && !t->text().isEmpty() ) - drawPrimitive( PE_FocusRect, p, r, cg ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, r, cg ); break; } #endif // QT_NO_TABBAR @@ -845,10 +1276,8 @@ void TQCommonStyle::drawControl( ControlElement element, a.setPoint( 5, r.width() - 1, r.height() + 1 ); a.setPoint( 6, -1, r.height() + 1 ); - const TQToolBox *tb = (const TQToolBox*)widget; - - if ( flags & Style_Selected && tb->currentItem() ) - p->setBrush( tb->currentItem()->paletteBackgroundColor() ); + if ( flags & Style_Selected && !(elementFlags & CEF_IsContainerEmpty) ) + p->setBrush( ceData.activeItemPaletteBgColor ); else p->setBrush( cg.brush(TQColorGroup::Background) ); @@ -869,32 +1298,31 @@ void TQCommonStyle::drawControl( ControlElement element, #ifndef QT_NO_PROGRESSBAR case CE_ProgressBarContents: { - const TQProgressBar *progressbar = (const TQProgressBar *) widget; // Correct the highlight color if same as background, // or else we cannot see the progress... TQColorGroup cgh = cg; if ( cgh.highlight() == cgh.background() ) - cgh.setColor( TQColorGroup::Highlight, progressbar->palette().active().highlight() ); + cgh.setColor( TQColorGroup::Highlight, ceData.palette.active().highlight() ); bool reverse = TQApplication::reverseLayout(); int fw = 2; int w = r.width() - 2*fw; - if ( !progressbar->totalSteps() ) { + if ( !ceData.totalSteps ) { // draw busy indicator - int x = progressbar->progress() % (w * 2); + int x = ceData.currentStep % (w * 2); if (x > w) x = 2 * w - x; x = reverse ? r.right() - x : x + r.x(); p->setPen( TQPen(cgh.highlight(), 4) ); p->drawLine(x, r.y() + 1, x, r.height() - fw); } else { - const int unit_width = pixelMetric(PM_ProgressBarChunkWidth, widget); + const int unit_width = pixelMetric(PM_ProgressBarChunkWidth, ceData, elementFlags, widget); int u; if ( unit_width > 1 ) u = (r.width()+unit_width/3) / unit_width; else u = w / unit_width; - int p_v = progressbar->progress(); - int t_s = progressbar->totalSteps() ? progressbar->totalSteps() : 1; + int p_v = ceData.currentStep; + int t_s = ceData.totalSteps ? ceData.totalSteps : 1; if ( u > 0 && p_v >= INT_MAX / u && t_s >= u ) { // scale down to something usable. @@ -917,7 +1345,7 @@ void TQCommonStyle::drawControl( ControlElement element, int x0 = reverse ? r.right() - ((unit_width > 1) ? unit_width : fw) : r.x() + fw; for (int i=0; i<nu; i++) { - drawPrimitive( PE_ProgressBarChunk, p, + drawPrimitive( PE_ProgressBarChunk, p, ceData, elementFlags, TQRect( x0+x, r.y(), unit_width, r.height() ), cgh, Style_Default, opt ); x += reverse ? -unit_width: unit_width; @@ -928,7 +1356,7 @@ void TQCommonStyle::drawControl( ControlElement element, if (nu < tnu) { int pixels_left = w - (nu*unit_width); int offset = reverse ? x0+x+unit_width-pixels_left : x0+x; - drawPrimitive( PE_ProgressBarChunk, p, + drawPrimitive( PE_ProgressBarChunk, p, ceData, elementFlags, TQRect( offset, r.y(), pixels_left, r.height() ), cgh, Style_Default, opt ); @@ -939,14 +1367,13 @@ void TQCommonStyle::drawControl( ControlElement element, case CE_ProgressBarLabel: { - const TQProgressBar *progressbar = (const TQProgressBar *) widget; TQColor penColor = cg.highlightedText(); TQColor *pcolor = 0; - if ( progressbar->centerIndicator() && !progressbar->indicatorFollowsStyle() && - progressbar->progress()*2 >= progressbar->totalSteps() ) + if ( (elementFlags & CEF_CenterIndicator) && !(elementFlags & CEF_IndicatorFollowsStyle) && + ceData.currentStep*2 >= ceData.totalSteps ) pcolor = &penColor; drawItem(p, r, AlignCenter | SingleLine, cg, flags & Style_Enabled, 0, - progressbar->progressString(), -1, pcolor ); + ceData.progressText, -1, pcolor ); } break; #endif // QT_NO_PROGRESSBAR @@ -959,7 +1386,7 @@ void TQCommonStyle::drawControl( ControlElement element, TQMenuItem *mi = opt.menuItem(); int alignment = AlignCenter|ShowPrefix|DontClip|SingleLine; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; drawItem( p, r, alignment, cg, flags & Style_Enabled, mi->pixmap(), mi->text(), -1, @@ -971,7 +1398,6 @@ void TQCommonStyle::drawControl( ControlElement element, #ifndef QT_NO_TOOLBUTTON case CE_ToolButtonLabel: { - const TQToolButton *toolbutton = (const TQToolButton *) widget; TQRect rect = r; TQt::ArrowType arrowType = opt.isDefault() ? TQt::DownArrow : opt.arrowType(); @@ -979,8 +1405,8 @@ void TQCommonStyle::drawControl( ControlElement element, int shiftX = 0; int shiftY = 0; if (flags & (Style_Down | Style_On)) { - shiftX = pixelMetric(PM_ButtonShiftHorizontal, widget); - shiftY = pixelMetric(PM_ButtonShiftVertical, widget); + shiftX = pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget); + shiftY = pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget); } if (!opt.isDefault()) { @@ -994,45 +1420,45 @@ void TQCommonStyle::drawControl( ControlElement element, } rect.moveBy(shiftX, shiftY); - drawPrimitive(pe, p, rect, cg, flags, opt); + drawPrimitive(pe, p, ceData, elementFlags, rect, cg, flags, opt); } else { - TQColor btext = toolbutton->paletteForegroundColor(); + TQColor btext = ceData.fgColor; - if (toolbutton->iconSet().isNull() && - ! toolbutton->text().isNull() && - ! toolbutton->usesTextLabel()) { + if (ceData.iconSet.isNull() && + ! ceData.text.isNull() && + ! (elementFlags & CEF_UsesTextLabel)) { int alignment = AlignCenter | ShowPrefix; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; rect.moveBy(shiftX, shiftY); drawItem(p, rect, alignment, cg, - flags & Style_Enabled, 0, toolbutton->text(), - toolbutton->text().length(), &btext); + flags & Style_Enabled, 0, ceData.text, + ceData.text.length(), &btext); } else { TQPixmap pm; TQIconSet::Size size = - toolbutton->usesBigPixmap() ? TQIconSet::Large : TQIconSet::Small; + (elementFlags & CEF_UsesBigPixmap) ? TQIconSet::Large : TQIconSet::Small; TQIconSet::State state = - toolbutton->isOn() ? TQIconSet::On : TQIconSet::Off; + (elementFlags & CEF_IsOn) ? TQIconSet::On : TQIconSet::Off; TQIconSet::Mode mode; - if (! toolbutton->isEnabled()) + if (! (elementFlags & CEF_IsEnabled)) mode = TQIconSet::Disabled; else if (flags & (Style_Down | Style_On) || ((flags & Style_Raised) && (flags & Style_AutoRaise))) mode = TQIconSet::Active; else mode = TQIconSet::Normal; - pm = toolbutton->iconSet().pixmap( size, mode, state ); + pm = ceData.iconSet.pixmap( size, mode, state ); - if ( toolbutton->usesTextLabel() ) { - p->setFont( toolbutton->font() ); + if (elementFlags & CEF_UsesTextLabel) { + p->setFont( ceData.font ); TQRect pr = rect, tr = rect; int alignment = ShowPrefix; - if (!styleHint(SH_UnderlineAccelerator, widget, TQStyleOption::Default, 0)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) alignment |= NoAccel; - if ( toolbutton->textPosition() == TQToolButton::Under ) { + if ( ceData.toolButtonTextPosition == TQToolButton::Under ) { int fh = p->fontMetrics().height(); pr.addCoords( 0, 1, 0, -fh-3 ); tr.addCoords( 0, pr.bottom(), 0, -3 ); @@ -1050,8 +1476,8 @@ void TQCommonStyle::drawControl( ControlElement element, tr.moveBy(shiftX, shiftY); drawItem( p, tr, alignment, cg, - flags & Style_Enabled, 0, toolbutton->textLabel(), - toolbutton->textLabel().length(), &btext); + flags & Style_Enabled, 0, ceData.textLabel, + ceData.textLabel.length(), &btext); } else { rect.moveBy(shiftX, shiftY); drawItem( p, rect, AlignCenter, cg, TRUE, &pm, TQString::null ); @@ -1066,10 +1492,8 @@ void TQCommonStyle::drawControl( ControlElement element, case CE_HeaderLabel: { TQRect rect = r; - const TQHeader* header = (const TQHeader *) widget; - int section = opt.headerSection(); - TQIconSet* icon = header->iconSet( section ); + TQIconSet* icon = &ceData.iconSet; if ( icon ) { TQPixmap pixmap = icon->pixmap( TQIconSet::Small, flags & Style_Enabled ? @@ -1090,7 +1514,7 @@ void TQCommonStyle::drawControl( ControlElement element, if (rect.isValid()) drawItem ( p, rect, AlignVCenter, cg, flags & Style_Enabled, - 0, header->label( section ), -1, &(cg.buttonText()) ); + 0, ceData.textLabel, -1, &(cg.buttonText()) ); } #endif // QT_NO_HEADER default: @@ -1100,13 +1524,27 @@ void TQCommonStyle::drawControl( ControlElement element, activePainter = 0; } -/*! \reimp */ void TQCommonStyle::drawControlMask( ControlElement control, TQPainter *p, const TQWidget *widget, const TQRect &r, const TQStyleOption& opt ) const { + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, opt); + drawControlMask(control, p, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, opt), r, opt, widget); +} + +/*! \reimp */ +void TQCommonStyle::drawControlMask( ControlElement control, + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ + Q_UNUSED(ceData); + Q_UNUSED(elementFlags); Q_UNUSED(widget); activePainter = p; @@ -1115,15 +1553,15 @@ void TQCommonStyle::drawControlMask( ControlElement control, switch (control) { case CE_PushButton: - drawPrimitive(PE_ButtonCommand, p, r, cg, Style_Default, opt); + drawPrimitive(PE_ButtonCommand, p, ceData, elementFlags, r, cg, Style_Default, opt); break; case CE_CheckBox: - drawPrimitive(PE_IndicatorMask, p, r, cg, Style_Default, opt); + drawPrimitive(PE_IndicatorMask, p, ceData, elementFlags, r, cg, Style_Default, opt); break; case CE_RadioButton: - drawPrimitive(PE_ExclusiveIndicatorMask, p, r, cg, Style_Default, opt); + drawPrimitive(PE_ExclusiveIndicatorMask, p, ceData, elementFlags, r, cg, Style_Default, opt); break; default: @@ -1138,13 +1576,20 @@ void TQCommonStyle::drawControlMask( ControlElement control, TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const { #if defined(QT_CHECK_STATE) - if (! widget) { - tqWarning("TQCommonStyle::subRect: widget parameter cannot be zero!"); - return TQRect(); - } + if (! widget) { + tqWarning("TQCommonStyle::subRect: widget parameter cannot be zero!"); + return TQRect(); + } #endif - TQRect rect, wrect(widget->rect()); + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + return subRect(r, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), widget); +} + +/*! \reimp */ +TQRect TQCommonStyle::subRect(SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQWidget *widget) const +{ + TQRect rect, wrect(ceData.rect); switch (r) { #ifndef QT_NO_DIALOGBUTTONS @@ -1175,22 +1620,21 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const else if(r == SR_DialogButtonAbort) srch = TQDialogButtons::Abort; - const int bwidth = pixelMetric(PM_DialogButtonsButtonWidth, widget), - bheight = pixelMetric(PM_DialogButtonsButtonHeight, widget), - bspace = pixelMetric(PM_DialogButtonsSeparator, widget), - fw = pixelMetric(PM_DefaultFrameWidth, widget); - const TQDialogButtons *dbtns = (const TQDialogButtons *) widget; + const int bwidth = pixelMetric(PM_DialogButtonsButtonWidth, ceData, elementFlags, widget), + bheight = pixelMetric(PM_DialogButtonsButtonHeight, ceData, elementFlags, widget), + bspace = pixelMetric(PM_DialogButtonsSeparator, ceData, elementFlags, widget), + fw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget); int start = fw; - if(dbtns->orientation() == Horizontal) + if(ceData.orientation == Horizontal) start = wrect.right() - fw; TQDialogButtons::Button btns[] = { TQDialogButtons::All, TQDialogButtons::Reject, TQDialogButtons::Accept, //reverse order (right to left) TQDialogButtons::Apply, TQDialogButtons::Retry, TQDialogButtons::Ignore, TQDialogButtons::Abort, TQDialogButtons::Help }; for(unsigned int i = 0, cnt = 0; i < (sizeof(btns)/sizeof(btns[0])); i++) { - if(dbtns->isButtonVisible(btns[i])) { - TQSize szH = dbtns->sizeHint(btns[i]); + if (ceData.dlgVisibleButtons & btns[i]) { + TQSize szH = ceData.dlgVisibleSizeHints[btns[i]]; int mwidth = TQMAX(bwidth, szH.width()), mheight = TQMAX(bheight, szH.height()); - if(dbtns->orientation() == Horizontal) { + if(ceData.orientation == Horizontal) { start -= mwidth; if(cnt) start -= bspace; @@ -1200,7 +1644,7 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const } cnt++; if(btns[i] == srch) { - if(dbtns->orientation() == Horizontal) + if(ceData.orientation == Horizontal) return TQRect(start, wrect.bottom() - fw - mheight, mwidth, mheight); else return TQRect(fw, start, mwidth, mheight); @@ -1208,7 +1652,7 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const } } if(r == SR_DialogButtonCustom) { - if(dbtns->orientation() == Horizontal) + if(ceData.orientation == Horizontal) return TQRect(fw, fw, start - fw - bspace, wrect.height() - (fw*2)); else return TQRect(fw, start, wrect.width() - (fw*2), wrect.height() - start - (fw*2)); @@ -1218,12 +1662,11 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_PushButtonContents: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; int dx1, dx2; - dx1 = pixelMetric(PM_DefaultFrameWidth, widget); - if (button->isDefault() || button->autoDefault()) - dx1 += pixelMetric(PM_ButtonDefaultIndicator, widget); + dx1 = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget); + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) + dx1 += pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget); dx2 = dx1 * 2; rect.setRect(wrect.x() + dx1, @@ -1237,14 +1680,13 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_PushButtonFocusRect: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; int dbw1 = 0, dbw2 = 0; - if (button->isDefault() || button->autoDefault()) { - dbw1 = pixelMetric(PM_ButtonDefaultIndicator, widget); + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) { + dbw1 = pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget); dbw2 = dbw1 * 2; } - int dfw1 = pixelMetric(PM_DefaultFrameWidth, widget) * 2, + int dfw1 = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget) * 2, dfw2 = dfw1 * 2; rect.setRect(wrect.x() + dfw1 + dbw1, @@ -1257,16 +1699,16 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_CheckBoxIndicator: { - int h = pixelMetric( PM_IndicatorHeight, widget ); + int h = pixelMetric( PM_IndicatorHeight, ceData, elementFlags, widget ); rect.setRect(0, ( wrect.height() - h ) / 2, - pixelMetric( PM_IndicatorWidth, widget ), h ); + pixelMetric( PM_IndicatorWidth, ceData, elementFlags, widget ), h ); break; } 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() + 6, wrect.y(), wrect.width() - ir.width() - 6, wrect.height()); #endif @@ -1276,23 +1718,22 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_CheckBoxFocusRect: { #ifndef QT_NO_CHECKBOX - const TQCheckBox *checkbox = (const TQCheckBox *) widget; - if ( !checkbox->pixmap() && checkbox->text().isEmpty() ) { - rect = subRect( SR_CheckBoxIndicator, widget ); + if ( ceData.fgPixmap.isNull() && ceData.text.isEmpty() ) { + rect = subRect( SR_CheckBoxIndicator, ceData, elementFlags, widget ); rect.addCoords( 1, 1, -1, -1 ); break; } - TQRect cr = subRect(SR_CheckBoxContents, widget); + TQRect cr = subRect(SR_CheckBoxContents, ceData, elementFlags, widget); // don't create a painter if we have an active one TQPainter *p = 0; if (! activePainter) - p = new TQPainter(checkbox); + p = new TQPainter(widget); rect = itemRect((activePainter ? activePainter : p), cr, AlignLeft | AlignVCenter | ShowPrefix, - checkbox->isEnabled(), - checkbox->pixmap(), - checkbox->text()); + (elementFlags & CEF_IsEnabled), + (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, + ceData.text); delete p; @@ -1304,15 +1745,15 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_RadioButtonIndicator: { - int h = pixelMetric( PM_ExclusiveIndicatorHeight, widget ); + int h = pixelMetric( PM_ExclusiveIndicatorHeight, ceData, elementFlags, widget ); rect.setRect(0, ( wrect.height() - h ) / 2, - pixelMetric( PM_ExclusiveIndicatorWidth, widget ), h ); + pixelMetric( PM_ExclusiveIndicatorWidth, ceData, elementFlags, widget ), h ); break; } case SR_RadioButtonContents: { - TQRect ir = subRect(SR_RadioButtonIndicator, widget); + TQRect ir = subRect(SR_RadioButtonIndicator, ceData, elementFlags, widget); rect.setRect(ir.right() + 6, wrect.y(), wrect.width() - ir.width() - 6, wrect.height()); break; @@ -1321,23 +1762,22 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const case SR_RadioButtonFocusRect: { #ifndef QT_NO_RADIOBUTTON - const TQRadioButton *radiobutton = (const TQRadioButton *) widget; - if ( !radiobutton->pixmap() && radiobutton->text().isEmpty() ) { - rect = subRect( SR_RadioButtonIndicator, widget ); + if ( ceData.fgPixmap.isNull() && ceData.text.isEmpty() ) { + rect = subRect( SR_RadioButtonIndicator, ceData, elementFlags, widget ); rect.addCoords( 1, 1, -1, -1 ); break; } - TQRect cr = subRect(SR_RadioButtonContents, widget); + TQRect cr = subRect(SR_RadioButtonContents, ceData, elementFlags, widget); // don't create a painter if we have an active one TQPainter *p = 0; if (! activePainter) - p = new TQPainter(radiobutton); + p = new TQPainter(widget); rect = itemRect((activePainter ? activePainter : p), cr, AlignLeft | AlignVCenter | ShowPrefix, - radiobutton->isEnabled(), - radiobutton->pixmap(), - radiobutton->text()); + (elementFlags & CEF_IsEnabled), + (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, + ceData.text); delete p; rect.addCoords( -3, -2, 3, 2 ); @@ -1347,21 +1787,20 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const } case SR_ComboBoxFocusRect: - rect.setRect(3, 3, widget->width()-6-16, widget->height()-6); + rect.setRect(3, 3, ceData.rect.width()-6-16, ceData.rect.height()-6); break; #ifndef QT_NO_SLIDER case SR_SliderFocusRect: { - const TQSlider * sl = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, sl ); - int thickness = pixelMetric( PM_SliderControlThickness, sl ); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget ); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); - if ( sl->orientation() == Horizontal ) - rect.setRect( 0, tickOffset-1, sl->width(), thickness+2 ); + if ( ceData.orientation == Horizontal ) + rect.setRect( 0, tickOffset-1, ceData.rect.width(), thickness+2 ); else - rect.setRect( tickOffset-1, 0, thickness+2, sl->height() ); - rect = rect.intersect( sl->rect() ); // ## is this really necessary? + rect.setRect( tickOffset-1, 0, thickness+2, ceData.rect.height() ); + rect = rect.intersect( ceData.rect ); // ## is this really necessary? break; } #endif // QT_NO_SLIDER @@ -1369,18 +1808,16 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const #ifndef QT_NO_MAINWINDOW case SR_DockWindowHandleRect: { - if (! widget->parentWidget()) + if (!(elementFlags & CEF_HasParentWidget)) break; - const TQDockWindow * dw = (const TQDockWindow *) widget->parentWidget(); - - 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(0, 15, widget->width(), widget->height() - 15); + if ( ceData.dwData.areaOrientation == Horizontal ) + rect.setRect(0, 15, ceData.rect.width(), ceData.rect.height() - 15); else - rect.setRect(0, 1, widget->width() - 15, widget->height() - 1); + rect.setRect(0, 1, ceData.rect.width() - 15, ceData.rect.height() - 1); } break; } @@ -1390,15 +1827,14 @@ TQRect TQCommonStyle::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.setCoords(wrect.left(), wrect.top(), wrect.right() - textw, wrect.bottom()); else @@ -1410,15 +1846,14 @@ TQRect TQCommonStyle::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.setCoords(wrect.right() - textw, wrect.top(), wrect.right(), wrect.bottom()); else @@ -1428,7 +1863,7 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const } case SR_ToolButtonContents: - rect = querySubControlMetrics(CC_ToolButton, widget, SC_ToolButton); + rect = querySubControlMetrics(CC_ToolButton, ceData, elementFlags, SC_ToolButton, TQStyleOption::Default, widget); break; case SR_ToolBoxTabContents: @@ -1448,17 +1883,17 @@ TQRect TQCommonStyle::subRect(SubRect r, const TQWidget *widget) const /* I really need this and I don't want to expose it in TQRangeControl.. */ -static int qPositionFromValue( const TQRangeControl * rc, int logical_val, +static int qPositionFromValue( TQStyleControlElementData ceData, int logical_val, int span ) { - if ( span <= 0 || logical_val < rc->minValue() || - rc->maxValue() <= rc->minValue() ) + if ( span <= 0 || logical_val < ceData.minSteps || + ceData.maxSteps <= ceData.minSteps ) return 0; - if ( logical_val > rc->maxValue() ) + if ( logical_val > ceData.maxSteps ) return span; - uint range = rc->maxValue() - rc->minValue(); - uint p = logical_val - rc->minValue(); + uint range = ceData.maxSteps - ceData.minSteps; + uint p = logical_val - ceData.minSteps; if ( range > (uint)INT_MAX/4096 ) { const int scale = 4096*2; @@ -1490,85 +1925,101 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, const TQStyleOption& opt ) const { #if defined(QT_CHECK_STATE) - if (! widget) { - tqWarning("TQCommonStyle::drawComplexControl: widget parameter cannot be zero!"); - return; - } + if (! widget) { + tqWarning("TQCommonStyle::drawComplexControl: widget parameter cannot be zero!"); + return; + } #endif + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + drawComplexControl(control, p, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), r, cg, flags, controls, active, opt, widget); +} + +/*! \reimp */ +void TQCommonStyle::drawComplexControl( ComplexControl control, + TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQRect &r, + const TQColorGroup &cg, + SFlags flags, + SCFlags controls, + SCFlags active, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ activePainter = p; switch (control) { #ifndef QT_NO_SCROLLBAR case CC_ScrollBar: { - const TQScrollBar *scrollbar = (const TQScrollBar *) widget; TQRect addline, subline, addpage, subpage, slider, first, last; - bool maxedOut = (scrollbar->minValue() == scrollbar->maxValue()); + bool maxedOut = (ceData.minSteps == ceData.maxSteps); - subline = querySubControlMetrics(control, widget, SC_ScrollBarSubLine, opt); - addline = querySubControlMetrics(control, widget, SC_ScrollBarAddLine, opt); - subpage = querySubControlMetrics(control, widget, SC_ScrollBarSubPage, opt); - addpage = querySubControlMetrics(control, widget, SC_ScrollBarAddPage, opt); - slider = querySubControlMetrics(control, widget, SC_ScrollBarSlider, opt); - first = querySubControlMetrics(control, widget, SC_ScrollBarFirst, opt); - last = querySubControlMetrics(control, widget, SC_ScrollBarLast, opt); + subline = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSubLine, opt, widget); + addline = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarAddLine, opt, widget); + subpage = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSubPage, opt, widget); + addpage = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarAddPage, opt, widget); + slider = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSlider, opt, widget); + first = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarFirst, opt, widget); + last = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarLast, opt, widget); if ((controls & SC_ScrollBarSubLine) && subline.isValid()) - drawPrimitive(PE_ScrollBarSubLine, p, subline, cg, + drawPrimitive(PE_ScrollBarSubLine, p, ceData, elementFlags, subline, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarSubLine) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarAddLine) && addline.isValid()) - drawPrimitive(PE_ScrollBarAddLine, p, addline, cg, + drawPrimitive(PE_ScrollBarAddLine, p, ceData, elementFlags, addline, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarAddLine) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarSubPage) && subpage.isValid()) - drawPrimitive(PE_ScrollBarSubPage, p, subpage, cg, + drawPrimitive(PE_ScrollBarSubPage, p, ceData, elementFlags, subpage, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarSubPage) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarAddPage) && addpage.isValid()) - drawPrimitive(PE_ScrollBarAddPage, p, addpage, cg, + drawPrimitive(PE_ScrollBarAddPage, p, ceData, elementFlags, addpage, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarAddPage) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarFirst) && first.isValid()) - drawPrimitive(PE_ScrollBarFirst, p, first, cg, + drawPrimitive(PE_ScrollBarFirst, p, ceData, elementFlags, first, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarFirst) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarLast) && last.isValid()) - drawPrimitive(PE_ScrollBarLast, p, last, cg, + drawPrimitive(PE_ScrollBarLast, p, ceData, elementFlags, last, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarLast) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); if ((controls & SC_ScrollBarSlider) && slider.isValid()) { - drawPrimitive(PE_ScrollBarSlider, p, slider, cg, + drawPrimitive(PE_ScrollBarSlider, p, ceData, elementFlags, slider, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarSlider) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : 0)); // ### perhaps this should not be able to accept focus if maxedOut? - if (scrollbar->hasFocus()) { + if (elementFlags & CEF_HasFocus) { TQRect fr(slider.x() + 2, slider.y() + 2, slider.width() - 5, slider.height() - 5); - drawPrimitive(PE_FocusRect, p, fr, cg, Style_Default); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, Style_Default); } } @@ -1579,15 +2030,13 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, #ifndef QT_NO_TOOLBUTTON case CC_ToolButton: { - const TQToolButton *toolbutton = (const TQToolButton *) widget; - TQColorGroup c = cg; - if ( toolbutton->backgroundMode() != PaletteButton ) + if ( ceData.backgroundMode != PaletteButton ) c.setBrush( TQColorGroup::Button, - toolbutton->paletteBackgroundColor() ); + ceData.bgColor ); TQRect button, menuarea; - button = visualRect( querySubControlMetrics(control, widget, SC_ToolButton, opt), widget ); - menuarea = visualRect( querySubControlMetrics(control, widget, SC_ToolButtonMenu, opt), widget ); + button = visualRect( querySubControlMetrics(control, ceData, elementFlags, SC_ToolButton, opt, widget), ceData, elementFlags ); + menuarea = visualRect( querySubControlMetrics(control, ceData, elementFlags, SC_ToolButtonMenu, opt, widget), ceData, elementFlags ); SFlags bflags = flags, mflags = flags; @@ -1599,27 +2048,26 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, if (controls & SC_ToolButton) { if (bflags & (Style_Down | Style_On | Style_Raised)) { - drawPrimitive(PE_ButtonTool, p, button, c, bflags, opt); - } else if ( toolbutton->parentWidget() && - toolbutton->parentWidget()->backgroundPixmap() && - ! toolbutton->parentWidget()->backgroundPixmap()->isNull() ) { + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, c, bflags, opt); + } else if ( (elementFlags & CEF_HasParentWidget) && + ! ceData.parentWidgetData.bgPixmap.isNull() ) { TQPixmap pixmap = - *(toolbutton->parentWidget()->backgroundPixmap()); + ceData.parentWidgetData.bgPixmap; - p->drawTiledPixmap( r, pixmap, toolbutton->pos() ); + p->drawTiledPixmap( r, pixmap, ceData.pos ); } } if (controls & SC_ToolButtonMenu) { if (mflags & (Style_Down | Style_On | Style_Raised)) - drawPrimitive(PE_ButtonDropDown, p, menuarea, c, mflags, opt); - drawPrimitive(PE_ArrowDown, p, menuarea, c, mflags, opt); + drawPrimitive(PE_ButtonDropDown, p, ceData, elementFlags, menuarea, c, mflags, opt); + drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, menuarea, c, 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, fr, c); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, c); } break; @@ -1629,10 +2077,9 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, #ifndef QT_NO_TITLEBAR case CC_TitleBar: { - const TQTitleBar *titlebar = (const TQTitleBar *) widget; if ( controls & SC_TitleBarLabel ) { - TQColorGroup cgroup = titlebar->usesActiveColor() ? - titlebar->palette().active() : titlebar->palette().inactive(); + TQColorGroup cgroup = (ceData.titleBarData.usesActiveColor) ? + ceData.palette.active() : ceData.palette.inactive(); TQColor left = cgroup.highlight(); TQColor right = cgroup.base(); @@ -1642,27 +2089,27 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, double gS = left.green(); double bS = left.blue(); - const double rD = double(right.red() - rS) / titlebar->width(); - const double gD = double(right.green() - gS) / titlebar->width(); - const double bD = double(right.blue() - bS) / titlebar->width(); + const double rD = double(right.red() - rS) / ceData.rect.width(); + const double gD = double(right.green() - gS) / ceData.rect.width(); + const double bD = double(right.blue() - bS) / ceData.rect.width(); - const int w = titlebar->width(); + const int w = ceData.rect.width(); for ( int sx = 0; sx < w; sx++ ) { rS+=rD; gS+=gD; bS+=bD; p->setPen( TQColor( (int)rS, (int)gS, (int)bS ) ); - p->drawLine( sx, 0, sx, titlebar->height() ); + p->drawLine( sx, 0, sx, ceData.rect.height() ); } } else { - p->fillRect( titlebar->rect(), left ); + p->fillRect( ceData.rect, left ); } - TQRect ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarLabel ), widget ); + TQRect ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarLabel, TQStyleOption::Default, widget ), ceData, elementFlags ); p->setPen( cgroup.highlightedText() ); p->drawText(ir.x()+2, ir.y(), ir.width()-2, ir.height(), - AlignAuto | AlignVCenter | SingleLine, titlebar->visibleText() ); + AlignAuto | AlignVCenter | SingleLine, ceData.titleBarData.visibleText ); } TQRect ir; @@ -1670,46 +2117,46 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, TQPixmap pm; if ( controls & SC_TitleBarCloseButton ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarCloseButton ), widget ); + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarCloseButton, TQStyleOption::Default, widget ), ceData, elementFlags ); down = active & SC_TitleBarCloseButton; if ( widget->testWFlags( WStyle_Tool ) #ifndef QT_NO_MAINWINDOW || ::tqt_cast<TQDockWindow*>(widget) #endif ) - pm = stylePixmap(SP_DockWindowCloseButton, widget); + pm = stylePixmap(SP_DockWindowCloseButton, ceData, elementFlags, TQStyleOption::Default, widget); else - pm = stylePixmap(SP_TitleBarCloseButton, widget); - drawPrimitive(PE_ButtonTool, p, ir, titlebar->colorGroup(), + pm = stylePixmap(SP_TitleBarCloseButton, ceData, elementFlags, TQStyleOption::Default, widget); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, ir, ceData.colorGroup, down ? Style_Down : Style_Raised); p->save(); if( down ) - p->translate( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, &pm, TQString::null ); + p->translate( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, &pm, TQString::null ); p->restore(); } - if ( titlebar->window() ) { + if ( ceData.titleBarData.hasWindow ) { if ( controls & SC_TitleBarMaxButton ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarMaxButton ), widget ); + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarMaxButton, TQStyleOption::Default, widget ), ceData, elementFlags ); down = active & SC_TitleBarMaxButton; - pm = TQPixmap(stylePixmap(SP_TitleBarMaxButton, widget)); - drawPrimitive(PE_ButtonTool, p, ir, titlebar->colorGroup(), + pm = TQPixmap(stylePixmap(SP_TitleBarMaxButton, ceData, elementFlags, TQStyleOption::Default, widget)); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, ir, ceData.colorGroup, down ? Style_Down : Style_Raised); p->save(); if( down ) - p->translate( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, &pm, TQString::null ); + p->translate( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, &pm, TQString::null ); p->restore(); } if ( controls & SC_TitleBarNormalButton || controls & SC_TitleBarMinButton ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarMinButton ), widget ); + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarMinButton, TQStyleOption::Default, widget ), ceData, elementFlags ); TQStyle::SubControl ctrl = (controls & SC_TitleBarNormalButton ? SC_TitleBarNormalButton : SC_TitleBarMinButton); @@ -1717,53 +2164,53 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, SP_TitleBarNormalButton : SP_TitleBarMinButton); down = active & ctrl; - pm = TQPixmap(stylePixmap(spixmap, widget)); - drawPrimitive(PE_ButtonTool, p, ir, titlebar->colorGroup(), + pm = TQPixmap(stylePixmap(spixmap, ceData, elementFlags, TQStyleOption::Default, widget)); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, ir, ceData.colorGroup, down ? Style_Down : Style_Raised); p->save(); if( down ) - p->translate( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, &pm, TQString::null ); + p->translate( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, &pm, TQString::null ); p->restore(); } if ( controls & SC_TitleBarShadeButton ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarShadeButton ), widget ); + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarShadeButton, TQStyleOption::Default, widget ), ceData, elementFlags ); down = active & SC_TitleBarShadeButton; - pm = TQPixmap(stylePixmap(SP_TitleBarShadeButton, widget)); - drawPrimitive(PE_ButtonTool, p, ir, titlebar->colorGroup(), + pm = TQPixmap(stylePixmap(SP_TitleBarShadeButton, ceData, elementFlags, TQStyleOption::Default, widget)); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, ir, ceData.colorGroup, down ? Style_Down : Style_Raised); p->save(); if( down ) - p->translate( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, &pm, TQString::null ); + p->translate( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, &pm, TQString::null ); p->restore(); } if ( controls & SC_TitleBarUnshadeButton ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarUnshadeButton ), widget ); + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarUnshadeButton, TQStyleOption::Default, widget ), ceData, elementFlags ); down = active & SC_TitleBarUnshadeButton; - pm = TQPixmap(stylePixmap(SP_TitleBarUnshadeButton, widget)); - drawPrimitive(PE_ButtonTool, p, ir, titlebar->colorGroup(), + pm = TQPixmap(stylePixmap(SP_TitleBarUnshadeButton, ceData, elementFlags, TQStyleOption::Default, widget)); + drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, ir, ceData.colorGroup, down ? Style_Down : Style_Raised); p->save(); if( down ) - p->translate( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, &pm, TQString::null ); + p->translate( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, &pm, TQString::null ); p->restore(); } } #ifndef QT_NO_WIDGET_TOPEXTRA if ( controls & SC_TitleBarSysMenu ) { - if ( titlebar->icon() ) { - ir = visualRect( querySubControlMetrics( CC_TitleBar, widget, SC_TitleBarSysMenu ), widget ); - drawItem( p, ir, AlignCenter, titlebar->colorGroup(), TRUE, titlebar->icon(), TQString::null ); + if ( !ceData.icon.isNull() ) { + ir = visualRect( querySubControlMetrics( CC_TitleBar, ceData, elementFlags, SC_TitleBarSysMenu, TQStyleOption::Default, widget ), ceData, elementFlags ); + drawItem( p, ir, AlignCenter, ceData.colorGroup, TRUE, (ceData.icon.isNull())?NULL:&ceData.icon, TQString::null ); } } #endif @@ -1773,7 +2220,6 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, case CC_SpinWidget: { #ifndef QT_NO_SPINWIDGET - const TQSpinWidget * sw = (const TQSpinWidget *) widget; SFlags flags; PrimitiveElement pe; @@ -1787,15 +2233,15 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, flags |= Style_Sunken; } else flags |= Style_Raised; - if ( sw->buttonSymbols() == TQSpinWidget::PlusMinus ) + if ( ceData.spinWidgetData.buttonSymbols == TQSpinWidget::PlusMinus ) pe = PE_SpinWidgetPlus; else pe = PE_SpinWidgetUp; - TQRect re = sw->upRect(); - TQColorGroup ucg = sw->isUpEnabled() ? cg : sw->palette().disabled(); - drawPrimitive(PE_ButtonBevel, p, re, ucg, flags); - drawPrimitive(pe, p, re, ucg, flags); + TQRect re = ceData.spinWidgetData.upRect; + TQColorGroup ucg = ceData.spinWidgetData.upEnabled ? cg : ceData.palette.disabled(); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, re, ucg, flags); + drawPrimitive(pe, p, ceData, elementFlags, re, ucg, flags); } if ( controls & SC_SpinWidgetDown ) { @@ -1805,15 +2251,15 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, flags |= Style_Sunken; } else flags |= Style_Raised; - if ( sw->buttonSymbols() == TQSpinWidget::PlusMinus ) + if ( ceData.spinWidgetData.buttonSymbols == TQSpinWidget::PlusMinus ) pe = PE_SpinWidgetMinus; else pe = PE_SpinWidgetDown; - TQRect re = sw->downRect(); - TQColorGroup dcg = sw->isDownEnabled() ? cg : sw->palette().disabled(); - drawPrimitive(PE_ButtonBevel, p, re, dcg, flags); - drawPrimitive(pe, p, re, dcg, flags); + TQRect re = ceData.spinWidgetData.downRect; + TQColorGroup dcg = ceData.spinWidgetData.downEnabled ? cg : ceData.palette.disabled(); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, re, dcg, flags); + drawPrimitive(pe, p, ceData, elementFlags, re, dcg, flags); } #endif break; } @@ -1822,19 +2268,18 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, case CC_Slider: switch ( controls ) { case SC_SliderTickmarks: { - const TQSlider * sl = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, sl ); - int ticks = sl->tickmarks(); - int thickness = pixelMetric( PM_SliderControlThickness, sl ); - int len = pixelMetric( PM_SliderLength, sl ); - int available = pixelMetric( PM_SliderSpaceAvailable, sl ); - int interval = sl->tickInterval(); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget ); + int ticks = ceData.tickMarkSetting; + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); + int available = pixelMetric( PM_SliderSpaceAvailable, ceData, elementFlags, widget ); + int interval = ceData.tickInterval; if ( interval <= 0 ) { - interval = sl->lineStep(); - if ( qPositionFromValue( sl, interval, available ) - - qPositionFromValue( sl, 0, available ) < 3 ) - interval = sl->pageStep(); + interval = ceData.lineStep; + if ( qPositionFromValue( ceData, interval, available ) - + qPositionFromValue( ceData, 0, available ) < 3 ) + interval = ceData.pageStep; } int fudge = len / 2; @@ -1842,12 +2287,12 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, if ( ticks & TQSlider::Above ) { p->setPen( cg.foreground() ); - int v = sl->minValue(); + int v = ceData.minSteps; if ( !interval ) interval = 1; - while ( v <= sl->maxValue() + 1 ) { - pos = qPositionFromValue( sl, v, available ) + fudge; - if ( sl->orientation() == Horizontal ) + while ( v <= ceData.maxSteps + 1 ) { + pos = qPositionFromValue( ceData, v, available ) + fudge; + if ( ceData.orientation == Horizontal ) p->drawLine( pos, 0, pos, tickOffset-2 ); else p->drawLine( 0, pos, tickOffset-2, pos ); @@ -1857,12 +2302,12 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, if ( ticks & TQSlider::Below ) { p->setPen( cg.foreground() ); - int v = sl->minValue(); + int v = ceData.minSteps; if ( !interval ) interval = 1; - while ( v <= sl->maxValue() + 1 ) { - pos = qPositionFromValue( sl, v, available ) + fudge; - if ( sl->orientation() == Horizontal ) + while ( v <= ceData.maxSteps + 1 ) { + pos = qPositionFromValue( ceData, v, available ) + fudge; + if ( ceData.orientation == Horizontal ) p->drawLine( pos, tickOffset+thickness+1, pos, tickOffset+thickness+1 + available-2 ); else @@ -1881,8 +2326,7 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, #ifndef QT_NO_LISTVIEW case CC_ListView: if ( controls & SC_ListView ) { - TQListView *listview = (TQListView*)widget; - p->fillRect( r, listview->viewport()->backgroundBrush() ); + p->fillRect( r, ceData.viewportData.bgBrush ); } break; #endif //QT_NO_LISTVIEW @@ -1893,7 +2337,6 @@ void TQCommonStyle::drawComplexControl( ComplexControl control, activePainter = 0; } - /*! \reimp */ void TQCommonStyle::drawComplexControlMask( ComplexControl control, TQPainter *p, @@ -1901,14 +2344,28 @@ void TQCommonStyle::drawComplexControlMask( ComplexControl control, const TQRect &r, const TQStyleOption& opt ) const { + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + drawComplexControlMask(control, p, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), r, opt, widget); +} + +/*! \reimp */ +void TQCommonStyle::drawComplexControlMask( ComplexControl control, + TQPainter *p, + const TQStyleControlElementData ceData, + const ControlElementFlags elementFlags, + const TQRect &r, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ Q_UNUSED(control); + Q_UNUSED(ceData); + Q_UNUSED(elementFlags); Q_UNUSED(widget); Q_UNUSED(opt); p->fillRect(r, color1); } - /*! \reimp */ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, const TQWidget *widget, @@ -1916,24 +2373,36 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, const TQStyleOption &opt ) const { #if defined(QT_CHECK_STATE) - if (! widget) { - tqWarning("TQCommonStyle::querySubControlMetrics: widget parameter cannot be zero!"); - return TQRect(); - } + if (! widget) { + tqWarning("TQCommonStyle::querySubControlMetrics: widget parameter cannot be zero!"); + return TQRect(); + } #endif + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + return querySubControlMetrics(control, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), sc, opt, widget); +} + +/*! \reimp */ +TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + SubControl sc, + const TQStyleOption &opt, + const TQWidget *widget ) const +{ switch ( control ) { case CC_SpinWidget: { - int fw = pixelMetric( PM_SpinBoxFrameWidth, widget); + int fw = pixelMetric( PM_SpinBoxFrameWidth, ceData, elementFlags, widget); TQSize bs; - bs.setHeight( widget->height()/2 - fw ); + bs.setHeight( ceData.rect.height()/2 - fw ); 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 = fw; int x, lx, rx; - x = widget->width() - y - bs.width(); + x = ceData.rect.width() - y - bs.width(); lx = fw; rx = x - fw; switch ( sc ) { @@ -1942,24 +2411,24 @@ TQRect TQCommonStyle::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 widget->rect(); + return ceData.rect; default: break; } break; } case CC_ComboBox: { - int x = 0, y = 0, wi = widget->width(), he = widget->height(); + int x = 0, y = 0, wi = ceData.rect.width(), he = ceData.rect.height(); int xpos = x; xpos += wi - 2 - 16; switch ( sc ) { case SC_ComboBoxFrame: - return widget->rect(); + return ceData.rect; case SC_ComboBoxArrow: return TQRect(xpos, y+2, 16, he-4); case SC_ComboBoxEditField: @@ -1973,21 +2442,20 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, #ifndef QT_NO_SCROLLBAR case CC_ScrollBar: { - const TQScrollBar *scrollbar = (const TQScrollBar *) widget; int sliderstart = 0; - int sbextent = pixelMetric(PM_ScrollBarExtent, widget); - int maxlen = ((scrollbar->orientation() == TQt::Horizontal) ? - scrollbar->width() : scrollbar->height()) - (sbextent * 2); + int sbextent = pixelMetric(PM_ScrollBarExtent, ceData, elementFlags, widget); + int maxlen = ((ceData.orientation == TQt::Horizontal) ? + ceData.rect.width() : ceData.rect.height()) - (sbextent * 2); int sliderlen; - sliderstart = scrollbar->sliderStart(); + sliderstart = ceData.startStep; // calculate slider length - if (scrollbar->maxValue() != scrollbar->minValue()) { - uint range = scrollbar->maxValue() - scrollbar->minValue(); - sliderlen = (TQ_LLONG(scrollbar->pageStep()) * maxlen) / (range + scrollbar->pageStep()); + if (ceData.maxSteps != ceData.minSteps) { + uint range = ceData.maxSteps - ceData.minSteps; + sliderlen = (TQ_LLONG(ceData.pageStep) * maxlen) / (range + ceData.pageStep); - int slidermin = pixelMetric( PM_ScrollBarSliderMin, widget ); + int slidermin = pixelMetric( PM_ScrollBarSliderMin, ceData, elementFlags, widget ); if ( sliderlen < slidermin || range > INT_MAX / 2 ) sliderlen = slidermin; if ( sliderlen > maxlen ) @@ -1997,44 +2465,44 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, switch (sc) { case SC_ScrollBarSubLine: // top/left button - if (scrollbar->orientation() == TQt::Horizontal) { - int buttonWidth = TQMIN(scrollbar->width()/2, sbextent); + if (ceData.orientation == TQt::Horizontal) { + int buttonWidth = TQMIN(ceData.rect.width()/2, sbextent); return TQRect( 0, 0, buttonWidth, sbextent ); } else { - int buttonHeight = TQMIN(scrollbar->height()/2, sbextent); + int buttonHeight = TQMIN(ceData.rect.height()/2, sbextent); return TQRect( 0, 0, sbextent, buttonHeight ); } case SC_ScrollBarAddLine: // bottom/right button - if (scrollbar->orientation() == TQt::Horizontal) { - int buttonWidth = TQMIN(scrollbar->width()/2, sbextent); - return TQRect( scrollbar->width() - buttonWidth, 0, buttonWidth, sbextent ); + if (ceData.orientation == TQt::Horizontal) { + int buttonWidth = TQMIN(ceData.rect.width()/2, sbextent); + return TQRect( ceData.rect.width() - buttonWidth, 0, buttonWidth, sbextent ); } else { - int buttonHeight = TQMIN(scrollbar->height()/2, sbextent); - return TQRect( 0, scrollbar->height() - buttonHeight, sbextent, buttonHeight ); + int buttonHeight = TQMIN(ceData.rect.height()/2, sbextent); + return TQRect( 0, ceData.rect.height() - buttonHeight, sbextent, buttonHeight ); } case SC_ScrollBarSubPage: // between top/left button and slider - if (scrollbar->orientation() == TQt::Horizontal) + if (ceData.orientation == TQt::Horizontal) return TQRect(sbextent, 0, sliderstart - sbextent, sbextent); return TQRect(0, sbextent, sbextent, sliderstart - sbextent); case SC_ScrollBarAddPage: // between bottom/right button and slider - if (scrollbar->orientation() == TQt::Horizontal) + if (ceData.orientation == TQt::Horizontal) return TQRect(sliderstart + sliderlen, 0, maxlen - sliderstart - sliderlen + sbextent, sbextent); return TQRect(0, sliderstart + sliderlen, sbextent, maxlen - sliderstart - sliderlen + sbextent); case SC_ScrollBarGroove: - if (scrollbar->orientation() == TQt::Horizontal) - return TQRect(sbextent, 0, scrollbar->width() - sbextent * 2, - scrollbar->height()); - return TQRect(0, sbextent, scrollbar->width(), - scrollbar->height() - sbextent * 2); + if (ceData.orientation == TQt::Horizontal) + return TQRect(sbextent, 0, ceData.rect.width() - sbextent * 2, + ceData.rect.height()); + return TQRect(0, sbextent, ceData.rect.width(), + ceData.rect.height() - sbextent * 2); case SC_ScrollBarSlider: - if (scrollbar->orientation() == TQt::Horizontal) + if (ceData.orientation == TQt::Horizontal) return TQRect(sliderstart, 0, sliderlen, sbextent); return TQRect(0, sliderstart, sbextent, sliderlen); @@ -2046,24 +2514,23 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, #ifndef QT_NO_SLIDER case CC_Slider: { - const TQSlider * sl = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, sl ); - int thickness = pixelMetric( PM_SliderControlThickness, sl ); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget ); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); switch ( sc ) { case SC_SliderHandle: { int sliderPos = 0; - int len = pixelMetric( PM_SliderLength, sl ); + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); - sliderPos = sl->sliderStart(); + sliderPos = ceData.startStep; - if ( sl->orientation() == Horizontal ) + if ( ceData.orientation == Horizontal ) return TQRect( sliderPos, tickOffset, len, thickness ); return TQRect( tickOffset, sliderPos, thickness, len ); } case SC_SliderGroove: { - if ( sl->orientation() == Horizontal ) - return TQRect( 0, tickOffset, sl->width(), thickness ); - return TQRect( tickOffset, 0, thickness, sl->height() ); } + if ( ceData.orientation == Horizontal ) + return TQRect( 0, tickOffset, ceData.rect.width(), thickness ); + return TQRect( tickOffset, 0, thickness, ceData.rect.height() ); } default: break; @@ -2073,18 +2540,17 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, #if !defined(QT_NO_TOOLBUTTON) && !defined(QT_NO_POPUPMENU) case CC_ToolButton: { - const TQToolButton *toolbutton = (const TQToolButton *) widget; - int mbi = pixelMetric(PM_MenuButtonIndicator, widget); + int mbi = pixelMetric(PM_MenuButtonIndicator, ceData, elementFlags, widget); - TQRect rect = toolbutton->rect(); + TQRect rect = ceData.rect; switch (sc) { case SC_ToolButton: - if (toolbutton->popup() && ! toolbutton->popupDelay()) + if ((elementFlags & CEF_HasPopupMenu) && ! ceData.popupDelay) rect.addCoords(0, 0, -mbi, 0); return rect; case SC_ToolButtonMenu: - if (toolbutton->popup() && ! toolbutton->popupDelay()) + if ((elementFlags & CEF_HasPopupMenu) && ! ceData.popupDelay) rect.addCoords(rect.width() - mbi, 0, 0, 0); return rect; @@ -2096,47 +2562,45 @@ TQRect TQCommonStyle::querySubControlMetrics( ComplexControl control, #ifndef QT_NO_TITLEBAR case CC_TitleBar: { - const TQTitleBar *titlebar = (const TQTitleBar *) widget; const int controlTop = 2; - const int controlHeight = widget->height() - controlTop * 2; + const int controlHeight = ceData.rect.height() - controlTop * 2; switch (sc) { case SC_TitleBarLabel: { - const TQTitleBar *titlebar = (TQTitleBar*)widget; - TQRect ir( 0, 0, titlebar->width(), titlebar->height() ); - if ( titlebar->testWFlags( WStyle_Tool ) ) { - if ( titlebar->testWFlags( WStyle_SysMenu ) ) + TQRect ir( 0, 0, ceData.rect.width(), ceData.rect.height() ); + if ( ceData.wflags & WStyle_Tool ) { + if ( ceData.wflags & WStyle_SysMenu ) ir.addCoords( 0, 0, -controlHeight-3, 0 ); - if ( titlebar->testWFlags( WStyle_MinMax ) ) + if ( ceData.wflags & WStyle_MinMax ) ir.addCoords( 0, 0, -controlHeight-2, 0 ); } else { - if ( titlebar->testWFlags( WStyle_SysMenu ) ) + if ( ceData.wflags & WStyle_SysMenu ) ir.addCoords( controlHeight+3, 0, -controlHeight-3, 0 ); - if ( titlebar->testWFlags( WStyle_Minimize ) ) + if ( ceData.wflags & WStyle_Minimize ) ir.addCoords( 0, 0, -controlHeight-2, 0 ); - if ( titlebar->testWFlags( WStyle_Maximize ) ) + if ( ceData.wflags & WStyle_Maximize ) ir.addCoords( 0, 0, -controlHeight-2, 0 ); } return ir; } case SC_TitleBarCloseButton: - return TQRect( titlebar->width() - ( controlHeight + controlTop ), + return TQRect( ceData.rect.width() - ( controlHeight + controlTop ), controlTop, controlHeight, controlHeight ); case SC_TitleBarMaxButton: case SC_TitleBarShadeButton: case SC_TitleBarUnshadeButton: - return TQRect( titlebar->width() - ( ( controlHeight + controlTop ) * 2 ), + return TQRect( ceData.rect.width() - ( ( controlHeight + controlTop ) * 2 ), controlTop, controlHeight, controlHeight ); case SC_TitleBarMinButton: case SC_TitleBarNormalButton: { int offset = controlHeight + controlTop; - if ( !titlebar->testWFlags( WStyle_Maximize ) ) + if ( !( ceData.wflags & WStyle_Maximize ) ) offset *= 2; else offset *= 3; - return TQRect( titlebar->width() - offset, controlTop, controlHeight, controlHeight ); + return TQRect( ceData.rect.width() - offset, controlTop, controlHeight, controlHeight ); } case SC_TitleBarSysMenu: @@ -2160,6 +2624,18 @@ TQStyle::SubControl TQCommonStyle::querySubControl(ComplexControl control, const TQPoint &pos, const TQStyleOption& opt ) const { + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, opt); + return querySubControl(control, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, opt), pos, opt, widget); +} + +/*! \reimp */ +TQStyle::SubControl TQCommonStyle::querySubControl(ComplexControl control, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQPoint &pos, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ SubControl ret = SC_None; switch (control) { @@ -2180,8 +2656,8 @@ TQStyle::SubControl TQCommonStyle::querySubControl(ComplexControl control, // we can do this because subcontrols were designed to be masks as well... while (ret == SC_None && ctrl <= SC_ScrollBarGroove) { - r = querySubControlMetrics(control, widget, - (TQStyle::SubControl) ctrl, opt); + r = querySubControlMetrics(control, ceData, elementFlags, + (TQStyle::SubControl) ctrl, opt, widget); if (r.isValid() && r.contains(pos)) ret = (TQStyle::SubControl) ctrl; @@ -2194,27 +2670,26 @@ TQStyle::SubControl TQCommonStyle::querySubControl(ComplexControl control, case CC_TitleBar: { #ifndef QT_NO_TITLEBAR - const TQTitleBar *titlebar = (TQTitleBar*)widget; TQRect r; uint ctrl = SC_TitleBarLabel; // we can do this because subcontrols were designed to be masks as well... while (ret == SC_None && ctrl <= SC_TitleBarUnshadeButton) { - r = visualRect( querySubControlMetrics( control, widget, (TQStyle::SubControl) ctrl, opt ), widget ); + r = visualRect( querySubControlMetrics( control, ceData, elementFlags, (TQStyle::SubControl) ctrl, opt, widget ), ceData, elementFlags ); if (r.isValid() && r.contains(pos)) ret = (TQStyle::SubControl) ctrl; ctrl <<= 1; } - if ( titlebar->window() ) { - if (titlebar->testWFlags( WStyle_Tool )) { + if ( ceData.titleBarData.hasWindow ) { + if ( ceData.wflags & WStyle_Tool ) { if ( ret == SC_TitleBarMinButton || ret == SC_TitleBarMaxButton ) { - if ( titlebar->window()->isMinimized() ) + if ( ceData.titleBarData.windowState & WindowMinimized ) ret = SC_TitleBarUnshadeButton; else ret = SC_TitleBarShadeButton; } - } else if ( ret == SC_TitleBarMinButton && titlebar->window()->isMinimized() ) { + } else if ( ret == SC_TitleBarMinButton && (ceData.titleBarData.windowState & WindowMinimized) ) { ret = TQStyle::SC_TitleBarNormalButton; } } @@ -2233,6 +2708,13 @@ TQStyle::SubControl TQCommonStyle::querySubControl(ComplexControl control, /*! \reimp */ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const { + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + return pixelMetric(m, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), widget); +} + +/*! \reimp */ +int TQCommonStyle::pixelMetric(PixelMetric m, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget) const +{ int ret; switch (m) { @@ -2250,20 +2732,17 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const ret = 16; break; case PM_TitleBarHeight: { - if ( widget ) { - if ( widget->testWFlags( WStyle_Tool ) ) { - ret = TQMAX( widget->fontMetrics().lineSpacing(), 16 ); + if ( !(elementFlags & CEF_UseGenericParameters) ) { + if ( ceData.wflags & WStyle_Tool ) { + ret = TQMAX( TQFontMetrics(ceData.font).lineSpacing(), 16 ); #ifndef QT_NO_MAINWINDOW - } else if ( ::tqt_cast<TQDockWindow*>(widget) ) { - ret = TQMAX( widget->fontMetrics().lineSpacing(), 13 ); + } else if ( ceData.widgetObjectTypes.contains("TQDockWindow") ) { + ret = TQMAX( TQFontMetrics(ceData.font).lineSpacing(), 13 ); #endif } else { - ret = TQMAX( widget->fontMetrics().lineSpacing(), 18 ); + ret = TQMAX( TQFontMetrics(ceData.font).lineSpacing(), 18 ); } - } else { - ret = 0; } - break; } case PM_ScrollBarSliderMin: ret = 9; @@ -2278,10 +2757,10 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const break; case PM_MenuButtonIndicator: - if (! widget) + if ( elementFlags & CEF_UseGenericParameters ) ret = 12; else - ret = TQMAX(12, (widget->height() - 4) / 3); + ret = TQMAX(12, (ceData.rect.height() - 4) / 3); break; case PM_ButtonShiftHorizontal: @@ -2304,11 +2783,10 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const #ifndef QT_NO_SCROLLBAR case PM_ScrollBarExtent: - if ( !widget ) { + if ( elementFlags & CEF_UseGenericParameters ) { ret = 16; } else { - const TQScrollBar *bar = (const TQScrollBar*)widget; - int s = bar->orientation() == TQt::Horizontal ? + int s = ceData.orientation == TQt::Horizontal ? TQApplication::globalStrut().height() : TQApplication::globalStrut().width(); ret = TQMAX( 16, s ); @@ -2326,16 +2804,15 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const case PM_SliderTickmarkOffset: { - if (! widget) { + if ( elementFlags & CEF_UseGenericParameters ) { ret = 0; break; } - const TQSlider * sl = (const TQSlider *) widget; - int space = (sl->orientation() == Horizontal) ? sl->height() : - sl->width(); - int thickness = pixelMetric( PM_SliderControlThickness, sl ); - int ticks = sl->tickmarks(); + int space = (ceData.orientation == Horizontal) ? ceData.rect.height() : + ceData.rect.width(); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); + int ticks = ceData.tickMarkSetting; if ( ticks == TQSlider::Both ) ret = (space - thickness) / 2; @@ -2348,11 +2825,10 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const case PM_SliderSpaceAvailable: { - const TQSlider * sl = (const TQSlider *) widget; - if ( sl->orientation() == Horizontal ) - ret = sl->width() - pixelMetric( PM_SliderLength, sl ); + if ( ceData.orientation == Horizontal ) + ret = ceData.rect.width() - pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); else - ret = sl->height() - pixelMetric( PM_SliderLength, sl ); + ret = ceData.rect.height() - pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); break; } #endif // QT_NO_SLIDER @@ -2402,9 +2878,8 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const #ifndef QT_NO_TABBAR case PM_TabBarTabVSpace: { - const TQTabBar * tb = (const TQTabBar *) widget; - if ( tb && ( tb->shape() == TQTabBar::RoundedAbove || - tb->shape() == TQTabBar::RoundedBelow ) ) + if ( ceData.widgetObjectTypes.contains("TQTabBar") && ( ceData.tabBarData.shape == TQTabBar::RoundedAbove || + ceData.tabBarData.shape == TQTabBar::RoundedBelow ) ) ret = 10; else ret = 0; @@ -2457,31 +2932,43 @@ int TQCommonStyle::pixelMetric(PixelMetric m, const TQWidget *widget) const return ret; } - /*! \reimp */ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, const TQWidget *widget, const TQSize &contentsSize, const TQStyleOption& opt ) const { - TQSize sz(contentsSize); + TQSize sz(contentsSize); #if defined(QT_CHECK_STATE) - if (! widget) { - tqWarning("TQCommonStyle::sizeFromContents: widget parameter cannot be zero!"); - return sz; - } + if (! widget) { + tqWarning("TQCommonStyle::sizeFromContents: widget parameter cannot be zero!"); + return sz; + } #endif + TQStyleControlElementData ceData = populateControlElementDataFromWidget(widget, TQStyleOption()); + return sizeFromContents(contents, ceData, getControlElementFlagsForObject(widget, ceData.widgetObjectTypes, TQStyleOption()), contentsSize, opt, widget); +} + +/*! \reimp */ +TQSize TQCommonStyle::sizeFromContents(ContentsType contents, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQSize &contentsSize, + const TQStyleOption& opt, + const TQWidget *widget ) const +{ + TQSize sz(contentsSize); + switch (contents) { #ifndef QT_NO_DIALOGBUTTONS case CT_DialogButtons: { - const TQDialogButtons *dbtns = (const TQDialogButtons *)widget; int w = contentsSize.width(), h = contentsSize.height(); - const int bwidth = pixelMetric(PM_DialogButtonsButtonWidth, widget), - bspace = pixelMetric(PM_DialogButtonsSeparator, widget), - bheight = pixelMetric(PM_DialogButtonsButtonHeight, widget); - if(dbtns->orientation() == Horizontal) { + const int bwidth = pixelMetric(PM_DialogButtonsButtonWidth, ceData, elementFlags, widget), + bspace = pixelMetric(PM_DialogButtonsSeparator, ceData, elementFlags, widget), + bheight = pixelMetric(PM_DialogButtonsButtonHeight, ceData, elementFlags, widget); + if(ceData.orientation == Horizontal) { if(!w) w = bwidth; } else { @@ -2492,10 +2979,10 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, TQDialogButtons::Apply, TQDialogButtons::Retry, TQDialogButtons::Ignore, TQDialogButtons::Abort, TQDialogButtons::Help }; for(unsigned int i = 0, cnt = 0; i < (sizeof(btns)/sizeof(btns[0])); i++) { - if(dbtns->isButtonVisible(btns[i])) { - TQSize szH = dbtns->sizeHint(btns[i]); + if (ceData.dlgVisibleButtons & btns[i]) { + TQSize szH = ceData.dlgVisibleSizeHints[btns[i]]; int mwidth = TQMAX(bwidth, szH.width()), mheight = TQMAX(bheight, szH.height()); - if(dbtns->orientation() == Horizontal) + if(ceData.orientation == Horizontal) h = TQMAX(h, mheight); else w = TQMAX(w, mwidth); @@ -2503,30 +2990,29 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, if(cnt) w += bspace; cnt++; - if(dbtns->orientation() == Horizontal) + if(ceData.orientation == Horizontal) w += mwidth; else h += mheight; } } - const int fw = pixelMetric(PM_DefaultFrameWidth, widget) * 2; + const int fw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget) * 2; sz = TQSize(w + fw, h + fw); break; } #endif //QT_NO_DIALOGBUTTONS case CT_PushButton: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; int w = contentsSize.width(), h = contentsSize.height(), - bm = pixelMetric(PM_ButtonMargin, widget), - fw = pixelMetric(PM_DefaultFrameWidth, widget) * 2; + bm = pixelMetric(PM_ButtonMargin, ceData, elementFlags, widget), + fw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget) * 2; w += bm + fw; h += bm + fw; - if (button->isDefault() || button->autoDefault()) { - int dbw = pixelMetric(PM_ButtonDefaultIndicator, widget) * 2; + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) { + int dbw = pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget) * 2; w += dbw; h += dbw; } @@ -2539,10 +3025,9 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, case CT_CheckBox: { #ifndef QT_NO_CHECKBOX - const TQCheckBox *checkbox = (const TQCheckBox *) widget; - TQRect irect = subRect(SR_CheckBoxIndicator, widget); - int h = pixelMetric( PM_IndicatorHeight, widget ); - int margins = (!checkbox->pixmap() && checkbox->text().isEmpty()) ? 0 : 10; + TQRect irect = subRect(SR_CheckBoxIndicator, ceData, elementFlags, widget); + int h = pixelMetric( PM_IndicatorHeight, ceData, elementFlags, widget ); + int margins = (ceData.fgPixmap.isNull() && ceData.text.isEmpty()) ? 0 : 10; sz += TQSize(irect.right() + margins, 4 ); sz.setHeight( TQMAX( sz.height(), h ) ); #endif @@ -2552,10 +3037,9 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, case CT_RadioButton: { #ifndef QT_NO_RADIOBUTTON - const TQRadioButton *radiobutton = (const TQRadioButton *) widget; - TQRect irect = subRect(SR_RadioButtonIndicator, widget); - int h = pixelMetric( PM_ExclusiveIndicatorHeight, widget ); - int margins = (!radiobutton->pixmap() && radiobutton->text().isEmpty()) ? 0 : 10; + TQRect irect = subRect(SR_RadioButtonIndicator, ceData, elementFlags, widget); + int h = pixelMetric( PM_ExclusiveIndicatorHeight, ceData, elementFlags, widget ); + int margins = (ceData.fgPixmap.isNull() && ceData.text.isEmpty()) ? 0 : 10; sz += TQSize(irect.right() + margins, 4 ); sz.setHeight( TQMAX( sz.height(), h ) ); #endif @@ -2570,7 +3054,7 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, case CT_ComboBox: { - int dfw = pixelMetric(PM_DefaultFrameWidth, widget) * 2; + int dfw = pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags, widget) * 2; sz = TQSize(sz.width() + dfw + 21, sz.height() + dfw ); break; } @@ -2581,8 +3065,7 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, if (opt.isDefault()) break; - const TQPopupMenu *popup = (const 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(); @@ -2600,7 +3083,7 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, if (mi->pixmap()) h = TQMAX(h, mi->pixmap()->height() + 4); else - h = TQMAX(h, popup->fontMetrics().height() + 8); + h = TQMAX(h, TQFontMetrics(ceData.font).height() + 8); if (mi->iconSet() != 0) h = TQMAX(h, mi->iconSet()->pixmap(TQIconSet::Small, @@ -2639,10 +3122,18 @@ TQSize TQCommonStyle::sizeFromContents(ContentsType contents, return sz; } +/*! \reimp */ +int TQCommonStyle::styleHint(StyleHint sh, const TQWidget * w, const TQStyleOption &so, TQStyleHintReturn *shr) const +{ + TQStyleControlElementData ceData = populateControlElementDataFromWidget(w, TQStyleOption(), false); + return styleHint(sh, ceData, getControlElementFlagsForObject(w, ceData.widgetObjectTypes, TQStyleOption()), so, shr, w); +} /*! \reimp */ -int TQCommonStyle::styleHint(StyleHint sh, const TQWidget * w, const TQStyleOption &, TQStyleHintReturn *) const +int TQCommonStyle::styleHint(StyleHint sh, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQStyleOption &, TQStyleHintReturn *, const TQWidget * w) const { + Q_UNUSED(w); + int ret; switch (sh) { @@ -2656,7 +3147,7 @@ int TQCommonStyle::styleHint(StyleHint sh, const TQWidget * w, const TQStyleOpti break; case SH_GroupBox_TextLabelColor: - ret = (int) ( w ? w->paletteForegroundColor().rgb() : 0 ); + ret = (int) ( (!(elementFlags & CEF_UseGenericParameters)) ? ceData.fgColor.rgb() : 0 ); break; case SH_ListViewExpand_SelectMouseType: @@ -2718,7 +3209,14 @@ int TQCommonStyle::styleHint(StyleHint sh, const TQWidget * w, const TQStyleOpti } /*! \reimp */ -TQPixmap TQCommonStyle::stylePixmap(StylePixmap, const TQWidget *, const TQStyleOption&) const +TQPixmap TQCommonStyle::stylePixmap(StylePixmap sp, const TQWidget *w, const TQStyleOption &so) const +{ + TQStyleControlElementData ceData = populateControlElementDataFromWidget(w, TQStyleOption()); + return stylePixmap(sp, ceData, getControlElementFlagsForObject(w, ceData.widgetObjectTypes, TQStyleOption()), so, w); +} + +/*! \reimp */ +TQPixmap TQCommonStyle::stylePixmap(StylePixmap, TQStyleControlElementData, ControlElementFlags, const TQStyleOption&, const TQWidget *) const { return TQPixmap(); } diff --git a/src/styles/qcompactstyle.cpp b/src/styles/qcompactstyle.cpp index 7dc0ab37c..97f6aca86 100644 --- a/src/styles/qcompactstyle.cpp +++ b/src/styles/qcompactstyle.cpp @@ -55,7 +55,7 @@ TQCompactStyle::TQCompactStyle() } /*! \reimp */ -int TQCompactStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) +int TQCompactStyle::pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) { int ret; switch ( metric ) { @@ -68,7 +68,7 @@ int TQCompactStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) ret = -1; break; default: - ret = TQWindowsStyle::pixelMetric( metric, widget ); + ret = TQWindowsStyle::pixelMetric( metric, ceData, elementFlags, widget ); break; } return ret; @@ -143,16 +143,15 @@ void drawPopupMenuItem( TQPainter* p, bool checkable, } /*! \reimp */ -void TQCompactStyle::drawControl( ControlElement element, TQPainter *p, const TQWidget *widget, const TQRect &r, - const TQColorGroup &g, SFlags flags, const TQStyleOption& opt ) +void TQCompactStyle::drawControl( ControlElement element, TQPainter *p, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQRect &r, + const TQColorGroup &g, SFlags flags, const TQStyleOption& opt, const TQWidget *widget ) { switch ( element ) { case CE_PopupMenuItem: { - if (! widget || opt.isDefault()) + if (! (elementFlags & CEF_HasWidget) || opt.isDefault()) break; - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; TQMenuItem *mi = opt.menuItem(); if ( !mi ) break; @@ -160,7 +159,7 @@ void TQCompactStyle::drawControl( ControlElement element, TQPainter *p, const TQ 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; r.rect( &x, &y, &w, &h ); @@ -313,7 +312,7 @@ void TQCompactStyle::drawControl( ControlElement element, TQPainter *p, const TQ break; default: - TQWindowsStyle::drawControl( element, p, widget, r, g, flags, opt ); + TQWindowsStyle::drawControl( element, p, ceData, elementFlags, r, g, flags, opt, widget ); break; } } diff --git a/src/styles/qmotifplusstyle.cpp b/src/styles/qmotifplusstyle.cpp index 36358792f..129f0a2d2 100644 --- a/src/styles/qmotifplusstyle.cpp +++ b/src/styles/qmotifplusstyle.cpp @@ -227,7 +227,7 @@ void TQMotifPlusStyle::unPolish(TQApplication *) /*! \reimp */ -int TQMotifPlusStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) const +int TQMotifPlusStyle::pixelMetric(PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget) const { int ret; @@ -259,7 +259,7 @@ int TQMotifPlusStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) co break; default: - ret = TQMotifStyle::pixelMetric(metric, widget); + ret = TQMotifStyle::pixelMetric(metric, ceData, elementFlags, widget); break; } @@ -270,6 +270,8 @@ int TQMotifPlusStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) co /*! \reimp */ void TQMotifPlusStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -303,11 +305,11 @@ void TQMotifPlusStyle::drawPrimitive( PrimitiveElement pe, break; case PE_SpinWidgetUp: - drawPrimitive(PE_ArrowUp, p, r, cg, flags, opt); + drawPrimitive(PE_ArrowUp, p, ceData, elementFlags, r, cg, flags, opt); break; case PE_SpinWidgetDown: - drawPrimitive(PE_ArrowDown, p, r, cg, flags, opt); + drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, r, cg, flags, opt); break; case PE_Indicator: @@ -632,7 +634,7 @@ void TQMotifPlusStyle::drawPrimitive( PrimitiveElement pe, } default: - TQMotifStyle::drawPrimitive(pe, p, r, cg, flags, opt); + TQMotifStyle::drawPrimitive(pe, p, ceData, elementFlags, r, cg, flags, opt); break; } } @@ -642,11 +644,13 @@ void TQMotifPlusStyle::drawPrimitive( PrimitiveElement pe, */ void TQMotifPlusStyle::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 { if (widget == singleton->hoverWidget) flags |= Style_MouseOver; @@ -655,12 +659,11 @@ void TQMotifPlusStyle::drawControl( ControlElement element, case CE_PushButton: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; TQRect br = r; - int dbi = pixelMetric(PM_ButtonDefaultIndicator, widget); + int dbi = pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget); - if (button->isDefault() || button->autoDefault()) { - if (button->isDefault()) + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) { + if (elementFlags & CEF_IsDefault) drawMotifPlusShade(p, br, cg, TRUE, FALSE, &cg.brush(TQColorGroup::Background)); @@ -673,9 +676,9 @@ void TQMotifPlusStyle::drawControl( ControlElement element, if (flags & Style_HasFocus) br.addCoords(1, 1, -1, -1); p->save(); - p->setBrushOrigin( -button->backgroundOffset().x(), - -button->backgroundOffset().y() ); - drawPrimitive(PE_ButtonCommand, p, br, cg, flags); + p->setBrushOrigin( -ceData.bgOffset.x(), + -ceData.bgOffset.y() ); + drawPrimitive(PE_ButtonCommand, p, ceData, elementFlags, br, cg, flags); p->restore(); #endif break; @@ -684,23 +687,21 @@ void TQMotifPlusStyle::drawControl( ControlElement element, case CE_CheckBoxLabel: { #ifndef QT_NO_CHECKBOX - const TQCheckBox *checkbox = (const TQCheckBox *) widget; - if (flags & Style_MouseOver) { - TQRegion r(checkbox->rect()); - r -= visualRect(subRect(SR_CheckBoxIndicator, widget), widget); + TQRegion r(ceData.rect); + r -= visualRect(subRect(SR_CheckBoxIndicator, ceData, elementFlags, widget), ceData, elementFlags); p->setClipRegion(r); - p->fillRect(checkbox->rect(), cg.brush(TQColorGroup::Midlight)); + p->fillRect(ceData.rect, cg.brush(TQColorGroup::Midlight)); p->setClipping(FALSE); } int alignment = TQApplication::reverseLayout() ? AlignRight : AlignLeft; drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, - flags & Style_Enabled, checkbox->pixmap(), checkbox->text()); + flags & Style_Enabled, (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text); - if (checkbox->hasFocus()) { - TQRect fr = visualRect(subRect(SR_CheckBoxFocusRect, widget), widget); - drawPrimitive(PE_FocusRect, p, fr, cg, flags); + if (elementFlags & CEF_HasFocus) { + TQRect fr = visualRect(subRect(SR_CheckBoxFocusRect, ceData, elementFlags, widget), ceData, elementFlags); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags); } #endif break; @@ -709,23 +710,21 @@ void TQMotifPlusStyle::drawControl( ControlElement element, case CE_RadioButtonLabel: { #ifndef QT_NO_RADIOBUTTON - const TQRadioButton *radiobutton = (const TQRadioButton *) widget; - if (flags & Style_MouseOver) { - TQRegion r(radiobutton->rect()); - r -= visualRect(subRect(SR_RadioButtonIndicator, widget), widget); + TQRegion r(ceData.rect); + r -= visualRect(subRect(SR_RadioButtonIndicator, ceData, elementFlags, widget), ceData, elementFlags); p->setClipRegion(r); - p->fillRect(radiobutton->rect(), cg.brush(TQColorGroup::Midlight)); + p->fillRect(ceData.rect, cg.brush(TQColorGroup::Midlight)); p->setClipping(FALSE); } int alignment = TQApplication::reverseLayout() ? AlignRight : AlignLeft; drawItem(p, r, alignment | AlignVCenter | ShowPrefix, cg, - flags & Style_Enabled, radiobutton->pixmap(), radiobutton->text()); + flags & Style_Enabled, (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text); - if (radiobutton->hasFocus()) { - TQRect fr = visualRect(subRect(SR_RadioButtonFocusRect, widget), widget); - drawPrimitive(PE_FocusRect, p, fr, cg, flags); + if (elementFlags & CEF_HasFocus) { + TQRect fr = visualRect(subRect(SR_RadioButtonFocusRect, ceData, elementFlags, widget), ceData, elementFlags); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags); } #endif break; @@ -757,7 +756,6 @@ void TQMotifPlusStyle::drawControl( ControlElement element, if (! widget || opt.isDefault()) break; - TQPopupMenu *popupmenu = (TQPopupMenu *) widget; TQMenuItem *mi = opt.menuItem(); if ( !mi ) break; @@ -765,7 +763,7 @@ void TQMotifPlusStyle::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; @@ -834,7 +832,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, if (act) cflags |= Style_On; - drawPrimitive(PE_CheckMark, p, vrect, cg, cflags); + drawPrimitive(PE_CheckMark, p, ceData, elementFlags, vrect, cg, cflags); } } @@ -883,6 +881,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, TQStyle::PrimitiveElement arrow = (TQApplication::reverseLayout() ? PE_ArrowLeft : PE_ArrowRight); vrect = visualRect( TQRect(x + w - hh - 6, y + (hh / 2), hh, hh), r ); drawPrimitive(arrow, p, + ceData, elementFlags, vrect, cg, ((act && !dis) ? Style_Down : Style_Default) | @@ -895,16 +894,15 @@ void TQMotifPlusStyle::drawControl( ControlElement element, case CE_TabBarTab: { #ifndef QT_NO_TABBAR - const TQTabBar *tabbar = (const TQTabBar *) widget; bool selected = flags & Style_Selected; - TQColorGroup g = tabbar->colorGroup(); + TQColorGroup g = ceData.colorGroup; TQPen oldpen = p->pen(); TQRect fr(r); if (! selected) { - if (tabbar->shape() == TQTabBar::RoundedAbove || - tabbar->shape() == TQTabBar::TriangularAbove) { + if (ceData.tabBarData.shape == TQTabBar::RoundedAbove || + ceData.tabBarData.shape == TQTabBar::TriangularAbove) { fr.setTop(fr.top() + 2); } else { fr.setBottom(fr.bottom() - 2); @@ -917,7 +915,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, (selected) ? cg.brush(TQColorGroup::Button) : cg.brush(TQColorGroup::Mid)); - if (tabbar->shape() == TQTabBar::RoundedAbove) { + if (ceData.tabBarData.shape == TQTabBar::RoundedAbove) { // "rounded" tabs on top fr.setBottom(fr.bottom() - 1); @@ -941,7 +939,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, p->setPen(black); p->drawLine(fr.right(), fr.top() + 1, fr.right(), fr.bottom() - 1); - } else if (tabbar->shape() == TQTabBar::RoundedBelow) { + } else if (ceData.tabBarData.shape == TQTabBar::RoundedBelow) { // "rounded" tabs on bottom fr.setTop(fr.top() + 1); @@ -987,7 +985,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, } } else // triangular drawing code - TQMotifStyle::drawControl(element, p, widget, r, cg, flags, opt); + TQMotifStyle::drawControl(element, p, ceData, elementFlags, r, cg, flags, opt, widget); p->setPen(oldpen); #endif @@ -995,7 +993,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, } default: - TQMotifStyle::drawControl(element, p, widget, r, cg, flags, opt); + TQMotifStyle::drawControl(element, p, ceData, elementFlags, r, cg, flags, opt, widget); break; } } @@ -1003,7 +1001,7 @@ void TQMotifPlusStyle::drawControl( ControlElement element, /*! \reimp */ -TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const +TQRect TQMotifPlusStyle::subRect(SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget) const { TQRect rect; @@ -1011,11 +1009,10 @@ TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const case SR_PushButtonFocusRect: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; - int dfi = pixelMetric(PM_ButtonDefaultIndicator, widget); + int dfi = pixelMetric(PM_ButtonDefaultIndicator, ceData, elementFlags, widget); - rect = button->rect(); - if (button->isDefault() || button->autoDefault()) + rect = ceData.rect; + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) rect.addCoords(dfi, dfi, -dfi, -dfi); #endif break; @@ -1023,38 +1020,36 @@ TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const case SR_CheckBoxIndicator: { - int h = pixelMetric( PM_IndicatorHeight ); - rect.setRect(( widget->rect().height() - h ) / 2, - ( widget->rect().height() - h ) / 2, - pixelMetric( PM_IndicatorWidth ), h ); + int h = pixelMetric( PM_IndicatorHeight, ceData, elementFlags ); + rect.setRect(( ceData.rect.height() - h ) / 2, + ( ceData.rect.height() - h ) / 2, + pixelMetric( PM_IndicatorWidth, ceData, elementFlags ), h ); break; } case SR_RadioButtonIndicator: { - int h = pixelMetric( PM_ExclusiveIndicatorHeight ); - rect.setRect( ( widget->rect().height() - h ) / 2, - ( widget->rect().height() - h ) / 2, - pixelMetric( PM_ExclusiveIndicatorWidth ), h ); + int h = pixelMetric( PM_ExclusiveIndicatorHeight, ceData, elementFlags ); + rect.setRect( ( ceData.rect.height() - h ) / 2, + ( ceData.rect.height() - h ) / 2, + pixelMetric( PM_ExclusiveIndicatorWidth, ceData, elementFlags ), h ); break; } case SR_CheckBoxFocusRect: case SR_RadioButtonFocusRect: - rect = widget->rect(); + rect = ceData.rect; break; case SR_ComboBoxFocusRect: { #ifndef QT_NO_COMBOBOX - const TQComboBox *combobox = (const TQComboBox *) widget; - - if (combobox->editable()) { - rect = querySubControlMetrics(CC_ComboBox, widget, - SC_ComboBoxEditField); + if (elementFlags & CEF_IsEditable) { + rect = querySubControlMetrics(CC_ComboBox, ceData, elementFlags, + SC_ComboBoxEditField, TQStyleOption::Default, widget); rect.addCoords(-3, -3, 3, 3); } else - rect = combobox->rect(); + rect = ceData.rect; #endif break; } @@ -1062,21 +1057,20 @@ TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const case SR_SliderFocusRect: { #ifndef QT_NO_SLIDER - const TQSlider *slider = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, widget ); - int thickness = pixelMetric( PM_SliderControlThickness, widget ); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget ); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); int x, y, wi, he; - if ( slider->orientation() == Horizontal ) { + if ( ceData.orientation == Horizontal ) { x = 0; y = tickOffset; - wi = slider->width(); + wi = ceData.rect.width(); he = thickness; } else { x = tickOffset; y = 0; wi = thickness; - he = slider->height(); + he = ceData.rect.height(); } rect.setRect(x, y, wi, he); @@ -1085,7 +1079,7 @@ TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const } default: - rect = TQMotifStyle::subRect(r, widget); + rect = TQMotifStyle::subRect(r, ceData, elementFlags, widget); break; } @@ -1096,13 +1090,15 @@ TQRect TQMotifPlusStyle::subRect(SubRect r, const TQWidget *widget) const /*! \reimp */ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, SCFlags controls, SCFlags active, - const TQStyleOption& opt ) const + const TQStyleOption& opt, + const TQWidget *widget ) const { if (widget == singleton->hoverWidget) flags |= Style_MouseOver; @@ -1111,17 +1107,16 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, case CC_ScrollBar: { #ifndef QT_NO_SCROLLBAR - const TQScrollBar *scrollbar = (const TQScrollBar *) widget; TQRect addline, subline, addpage, subpage, slider, first, last; - bool maxedOut = (scrollbar->minValue() == scrollbar->maxValue()); + bool maxedOut = (ceData.minSteps == ceData.maxSteps); - subline = querySubControlMetrics(control, widget, SC_ScrollBarSubLine, opt); - addline = querySubControlMetrics(control, widget, SC_ScrollBarAddLine, opt); - subpage = querySubControlMetrics(control, widget, SC_ScrollBarSubPage, opt); - addpage = querySubControlMetrics(control, widget, SC_ScrollBarAddPage, opt); - slider = querySubControlMetrics(control, widget, SC_ScrollBarSlider, opt); - first = querySubControlMetrics(control, widget, SC_ScrollBarFirst, opt); - last = querySubControlMetrics(control, widget, SC_ScrollBarLast, opt); + subline = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSubLine, opt, widget); + addline = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarAddLine, opt, widget); + subpage = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSubPage, opt, widget); + addpage = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarAddPage, opt, widget); + slider = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarSlider, opt, widget); + first = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarFirst, opt, widget); + last = querySubControlMetrics(control, ceData, elementFlags, SC_ScrollBarLast, opt, widget); bool skipUpdate = FALSE; if (singleton->hovering) { @@ -1157,67 +1152,67 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, &cg.brush(TQColorGroup::Mid)); if ((controls & SC_ScrollBarSubLine) && subline.isValid()) - drawPrimitive(PE_ScrollBarSubLine, p, subline, cg, + drawPrimitive(PE_ScrollBarSubLine, p, ceData, elementFlags, subline, cg, ((active == SC_ScrollBarSubLine || singleton->scrollbarElement == SC_ScrollBarSubLine) ? Style_MouseOver: Style_Default) | ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarSubLine) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarAddLine) && addline.isValid()) - drawPrimitive(PE_ScrollBarAddLine, p, addline, cg, + drawPrimitive(PE_ScrollBarAddLine, p, ceData, elementFlags, addline, cg, ((active == SC_ScrollBarAddLine || singleton->scrollbarElement == SC_ScrollBarAddLine) ? Style_MouseOver: Style_Default) | ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarAddLine) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarSubPage) && subpage.isValid()) - drawPrimitive(PE_ScrollBarSubPage, p, subpage, cg, + drawPrimitive(PE_ScrollBarSubPage, p, ceData, elementFlags, subpage, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarSubPage) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarAddPage) && addpage.isValid()) - drawPrimitive(PE_ScrollBarAddPage, p, addpage, cg, + drawPrimitive(PE_ScrollBarAddPage, p, ceData, elementFlags, addpage, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarAddPage) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarFirst) && first.isValid()) - drawPrimitive(PE_ScrollBarFirst, p, first, cg, + drawPrimitive(PE_ScrollBarFirst, p, ceData, elementFlags, first, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarFirst) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarLast) && last.isValid()) - drawPrimitive(PE_ScrollBarLast, p, last, cg, + drawPrimitive(PE_ScrollBarLast, p, ceData, elementFlags, last, cg, ((maxedOut) ? Style_Default : Style_Enabled) | ((active == SC_ScrollBarLast) ? Style_Down : Style_Default) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); if ((controls & SC_ScrollBarSlider) && slider.isValid()) { - drawPrimitive(PE_ScrollBarSlider, p, slider, cg, + drawPrimitive(PE_ScrollBarSlider, p, ceData, elementFlags, slider, cg, ((active == SC_ScrollBarSlider || singleton->scrollbarElement == SC_ScrollBarSlider) ? Style_MouseOver: Style_Default) | ((maxedOut) ? Style_Default : Style_Enabled) | - ((scrollbar->orientation() == TQt::Horizontal) ? + ((ceData.orientation == TQt::Horizontal) ? Style_Horizontal : Style_Default)); // ### perhaps this should not be able to accept focus if maxedOut? - if (scrollbar->hasFocus()) { + if (elementFlags & CEF_HasFocus) { TQRect fr(slider.x() + 2, slider.y() + 2, slider.width() - 5, slider.height() - 5); - drawPrimitive(PE_FocusRect, p, fr, cg, Style_Default); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, Style_Default); } } #endif @@ -1227,27 +1222,25 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, case CC_ComboBox: { #ifndef QT_NO_COMBOBOX - const TQComboBox *combobox = (const TQComboBox *) widget; - TQRect editfield, arrow; editfield = visualRect(querySubControlMetrics(CC_ComboBox, - combobox, + ceData, elementFlags, SC_ComboBoxEditField, - opt), widget); + opt, widget), ceData, elementFlags); arrow = visualRect(querySubControlMetrics(CC_ComboBox, - combobox, + ceData, elementFlags, SC_ComboBoxArrow, - opt), widget); + opt, widget), ceData, elementFlags); - if (combobox->editable()) { + if (elementFlags & CEF_IsEditable) { if (controls & SC_ComboBoxEditField && editfield.isValid()) { editfield.addCoords(-3, -3, 3, 3); - if (combobox->hasFocus()) + if (elementFlags & CEF_HasFocus) editfield.addCoords(1, 1, -1, -1); drawMotifPlusShade(p, editfield, cg, TRUE, FALSE, - (widget->isEnabled() ? + ((elementFlags & CEF_IsEnabled) ? &cg.brush(TQColorGroup::Base) : &cg.brush(TQColorGroup::Background))); } @@ -1261,12 +1254,12 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, if (active == SC_ComboBoxArrow) flags |= Style_Sunken; - drawPrimitive(PE_ArrowDown, p, arrow, cg, flags); + drawPrimitive(PE_ArrowDown, p, ceData, elementFlags, arrow, cg, flags); } } else { if (controls & SC_ComboBoxEditField && editfield.isValid()) { editfield.addCoords(-3, -3, 3, 3); - if (combobox->hasFocus()) + if (elementFlags & CEF_HasFocus) editfield.addCoords(1, 1, -1, -1); drawMotifPlusShade(p, editfield, cg, FALSE, (flags & Style_MouseOver)); @@ -1276,10 +1269,10 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, drawMotifPlusShade(p, arrow, cg, FALSE, (flags & Style_MouseOver)); } - if (combobox->hasFocus() || - (combobox->editable() && combobox->lineEdit()->hasFocus())) { - TQRect fr = visualRect(subRect(SR_ComboBoxFocusRect, widget), widget); - drawPrimitive(PE_FocusRect, p, fr, cg, flags); + if ((elementFlags & CEF_HasFocus) || + ((elementFlags & CEF_IsEditable) && (ceData.comboBoxLineEditFlags & CEF_HasFocus))) { + TQRect fr = visualRect(subRect(SR_ComboBoxFocusRect, ceData, elementFlags, widget), ceData, elementFlags); + drawPrimitive(PE_FocusRect, p, ceData, elementFlags, fr, cg, flags); } #endif break; @@ -1288,7 +1281,6 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, case CC_SpinWidget: { #ifndef QT_NO_SPINWIDGET - const TQSpinWidget * sw = (const TQSpinWidget *) widget; SFlags flags = Style_Default; if (controls & SC_SpinWidgetFrame) @@ -1300,14 +1292,14 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, flags |= Style_Down; PrimitiveElement pe; - if ( sw->buttonSymbols() == TQSpinWidget::PlusMinus ) + if ( ceData.spinWidgetData.buttonSymbols == TQSpinWidget::PlusMinus ) pe = PE_SpinWidgetPlus; else pe = PE_SpinWidgetUp; - TQRect re = sw->upRect(); - TQColorGroup ucg = sw->isUpEnabled() ? cg : sw->palette().disabled(); - drawPrimitive(pe, p, re, ucg, flags); + TQRect re = ceData.spinWidgetData.upRect; + TQColorGroup ucg = ceData.spinWidgetData.upEnabled ? cg : ceData.palette.disabled(); + drawPrimitive(pe, p, ceData, elementFlags, re, ucg, flags); } if (controls & SC_SpinWidgetDown) { @@ -1316,14 +1308,14 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, flags |= Style_Down; PrimitiveElement pe; - if ( sw->buttonSymbols() == TQSpinWidget::PlusMinus ) + if ( ceData.spinWidgetData.buttonSymbols == TQSpinWidget::PlusMinus ) pe = PE_SpinWidgetMinus; else pe = PE_SpinWidgetDown; - TQRect re = sw->downRect(); - TQColorGroup dcg = sw->isDownEnabled() ? cg : sw->palette().disabled(); - drawPrimitive(pe, p, re, dcg, flags); + TQRect re = ceData.spinWidgetData.downRect; + TQColorGroup dcg = ceData.spinWidgetData.downEnabled ? cg : ceData.palette.disabled(); + drawPrimitive(pe, p, ceData, elementFlags, re, dcg, flags); } #endif break; @@ -1332,21 +1324,20 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, case CC_Slider: { #ifndef QT_NO_SLIDER - const TQSlider *slider = (const TQSlider *) widget; bool mouseover = (flags & Style_MouseOver); - 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 ((controls & SC_SliderGroove) && groove.isValid()) { drawMotifPlusShade(p, groove, cg, TRUE, FALSE, &cg.brush(TQColorGroup::Mid)); if ( flags & Style_HasFocus ) { - TQRect fr = subRect( SR_SliderFocusRect, widget ); - drawPrimitive( PE_FocusRect, p, fr, cg, flags ); + TQRect fr = subRect( SR_SliderFocusRect, ceData, elementFlags, widget ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, fr, cg, flags ); } } @@ -1356,9 +1347,9 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, flags |= Style_MouseOver; else flags &= ~Style_MouseOver; - drawPrimitive(PE_ButtonBevel, p, handle, cg, flags | Style_Raised); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, handle, cg, flags | Style_Raised); - if ( slider->orientation() == Horizontal ) { + if ( ceData.orientation == Horizontal ) { TQCOORD mid = handle.x() + handle.width() / 2; qDrawShadeLine( p, mid, handle.y() + 1, mid , handle.y() + handle.height() - 3, @@ -1372,15 +1363,15 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, } if (controls & SC_SliderTickmarks) - TQMotifStyle::drawComplexControl(control, p, widget, r, cg, flags, - SC_SliderTickmarks, active, opt); + TQMotifStyle::drawComplexControl(control, p, ceData, elementFlags, r, cg, flags, + SC_SliderTickmarks, active, opt, widget); #endif break; } default: - TQMotifStyle::drawComplexControl(control, p, widget, r, cg, flags, - controls, active, opt); + TQMotifStyle::drawComplexControl(control, p, ceData, elementFlags, r, cg, flags, + controls, active, opt, widget); } } @@ -1388,22 +1379,24 @@ void TQMotifPlusStyle::drawComplexControl(ComplexControl control, /*! \reimp */ TQRect TQMotifPlusStyle::querySubControlMetrics(ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl subcontrol, - const TQStyleOption& opt) const + const TQStyleOption& opt, + const TQWidget *widget) const { switch (control) { case CC_SpinWidget: { - int fw = pixelMetric( PM_SpinBoxFrameWidth, 0 ); + int fw = pixelMetric( PM_SpinBoxFrameWidth, ceData, elementFlags, 0 ); TQSize bs; - bs.setHeight( (widget->height() + 1)/2 ); + bs.setHeight( (ceData.rect.height() + 1)/2 ); if ( bs.height() < 10 ) bs.setHeight( 10 ); bs.setWidth( bs.height() ); // 1.6 -approximate golden mean bs = bs.expandedTo( TQApplication::globalStrut() ); int y = 0; int x, lx, rx, h; - x = widget->width() - y - bs.width(); + x = ceData.rect.width() - y - bs.width(); lx = fw; rx = x - fw * 2; h = bs.height() * 2; @@ -1418,7 +1411,7 @@ TQRect TQMotifPlusStyle::querySubControlMetrics(ComplexControl control, case SC_SpinWidgetEditField: return TQRect(lx, fw, rx, h - 2*fw); case SC_SpinWidgetFrame: - return TQRect( 0, 0, widget->width() - bs.width(), h); + return TQRect( 0, 0, ceData.rect.width() - bs.width(), h); default: break; } @@ -1426,34 +1419,33 @@ TQRect TQMotifPlusStyle::querySubControlMetrics(ComplexControl control, #ifndef QT_NO_COMBOBOX case CC_ComboBox: { - const TQComboBox *combobox = (const TQComboBox *) widget; - if (combobox->editable()) { - int space = (combobox->height() - 13) / 2; + if (elementFlags & CEF_IsEditable) { + int space = (ceData.rect.height() - 13) / 2; switch (subcontrol) { case SC_ComboBoxFrame: return TQRect(); case SC_ComboBoxEditField: { - TQRect rect = widget->rect(); + TQRect rect = ceData.rect; rect.setWidth(rect.width() - 13 - space * 2); rect.addCoords(3, 3, -3, -3); return rect; } case SC_ComboBoxArrow: - return TQRect(combobox->width() - 13 - space * 2, 0, - 13 + space * 2, combobox->height()); + return TQRect(ceData.rect.width() - 13 - space * 2, 0, + 13 + space * 2, ceData.rect.height()); default: break; // shouldn't get here } } else { - int space = (combobox->height() - 7) / 2; + int space = (ceData.rect.height() - 7) / 2; switch (subcontrol) { case SC_ComboBoxFrame: return TQRect(); case SC_ComboBoxEditField: { - TQRect rect = widget->rect(); + TQRect rect = ceData.rect; rect.addCoords(3, 3, -3, -3); return rect; } case SC_ComboBoxArrow: // 12 wide, 7 tall - return TQRect(combobox->width() - 12 - space, space, 12, 7); + return TQRect(ceData.rect.width() - 12 - space, space, 12, 7); default: break; // shouldn't get here } } @@ -1464,14 +1456,13 @@ TQRect TQMotifPlusStyle::querySubControlMetrics(ComplexControl control, case CC_Slider: { if (subcontrol == SC_SliderHandle) { - const TQSlider *slider = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, widget ); - int thickness = pixelMetric( PM_SliderControlThickness, widget ); - int len = pixelMetric( PM_SliderLength, widget ) + 2; - int sliderPos = slider->sliderStart(); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget ); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ) + 2; + int sliderPos = ceData.startStep; int motifBorder = 2; - if ( slider->orientation() == Horizontal ) + if ( ceData.orientation == Horizontal ) return TQRect( sliderPos + motifBorder, tickOffset + motifBorder, len, thickness - 2*motifBorder ); return TQRect( tickOffset + motifBorder, sliderPos + motifBorder, @@ -1481,7 +1472,7 @@ TQRect TQMotifPlusStyle::querySubControlMetrics(ComplexControl control, #endif default: break; } - return TQMotifStyle::querySubControlMetrics(control, widget, subcontrol, opt); + return TQMotifStyle::querySubControlMetrics(control, ceData, elementFlags, subcontrol, opt, widget); } @@ -1564,9 +1555,11 @@ bool TQMotifPlusStyle::eventFilter(TQObject *object, TQEvent *event) /*! \reimp */ int TQMotifPlusStyle::styleHint(StyleHint hint, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQStyleOption &opt, - TQStyleHintReturn *returnData) const + TQStyleHintReturn *returnData, + const TQWidget *widget) const { int ret; switch (hint) { @@ -1574,7 +1567,7 @@ int TQMotifPlusStyle::styleHint(StyleHint hint, ret = 1; break; default: - ret = TQMotifStyle::styleHint(hint, widget, opt, returnData); + ret = TQMotifStyle::styleHint(hint, ceData, elementFlags, opt, returnData, widget); break; } return ret; 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; } diff --git a/src/styles/qplatinumstyle.cpp b/src/styles/qplatinumstyle.cpp index 8f9f9ab75..2bc0e4590 100644 --- a/src/styles/qplatinumstyle.cpp +++ b/src/styles/qplatinumstyle.cpp @@ -86,6 +86,8 @@ TQPlatinumStyle::~TQPlatinumStyle() */ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -98,7 +100,7 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, // sunken... if ( flags & Style_Sunken ) flags ^= Style_Sunken; - drawPrimitive( PE_ButtonBevel, p, r, cg, flags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, r, cg, flags, opt ); break; } case PE_ButtonTool: @@ -115,7 +117,7 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, fill = myCG.brush( TQColorGroup::Button ); myCG.setBrush( TQColorGroup::Mid, fill ); - drawPrimitive( PE_ButtonBevel, p, r, myCG, flags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, r, myCG, flags, opt ); break; } case PE_ButtonBevel: @@ -450,7 +452,7 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, } case PE_Indicator: { - drawPrimitive( PE_ButtonBevel, p, TQRect(r.x(), r.y(), + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect(r.x(), r.y(), r.width() - 2, r.height()), cg, flags ); p->fillRect( r.x() + r.width() - 2, r.y(), 2, r.height(), @@ -606,14 +608,14 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, } case PE_ScrollBarAddLine: { - drawPrimitive( PE_ButtonBevel, p, r, cg, + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Sunken : Style_Raised) ); p->setPen( cg.shadow() ); p->drawRect( r ); drawPrimitive( ((flags & Style_Horizontal) ? PE_ArrowRight - : PE_ArrowDown), p, TQRect(r.x() + 2, + : PE_ArrowDown), p, ceData, elementFlags, TQRect(r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4), @@ -622,14 +624,14 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, } case PE_ScrollBarSubLine: { - drawPrimitive( PE_ButtonBevel, p, r, cg, + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Sunken : Style_Raised) ); p->setPen( cg.shadow() ); p->drawRect( r ); drawPrimitive( ((flags & Style_Horizontal) ? PE_ArrowLeft - : PE_ArrowUp ), p, TQRect(r.x() + 2, + : PE_ArrowUp ), p, ceData, elementFlags, TQRect(r.x() + 2, r.y() + 2, r.width() - 4, r.height() - 4), @@ -715,14 +717,14 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, { TQPoint bo = p->brushOrigin(); p->setBrushOrigin( r.topLeft() ); - drawPrimitive( PE_ButtonBevel, p, r, cg, Style_Raised ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, r, cg, Style_Raised ); p->setBrushOrigin( bo ); drawRiffles( p, r.x(), r.y(), r.width(), r.height(), cg, flags & Style_Horizontal ); p->setPen( cg.shadow() ); p->drawRect( r ); if ( flags & Style_HasFocus ) { - drawPrimitive( PE_FocusRect, p, TQRect(r.x() + 2, r.y() + 2, + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, TQRect(r.x() + 2, r.y() + 2, r.width() - 5, r.height() - 5 ), cg, flags ); @@ -730,7 +732,7 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, break; } default: - TQWindowsStyle::drawPrimitive( pe, p, r, cg, flags, opt ); + TQWindowsStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); break; } @@ -740,36 +742,36 @@ void TQPlatinumStyle::drawPrimitive( PrimitiveElement pe, */ void TQPlatinumStyle::drawControl( ControlElement element, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how, - const TQStyleOption& opt ) const + const TQStyleOption& opt, + const TQWidget *widget ) const { switch( element ) { case CE_PushButton: { #ifndef QT_NO_PUSHBUTTON TQColorGroup myCg( cg ); - const TQPushButton *btn; int x1, y1, x2, y2; bool useBevelButton; SFlags flags; flags = Style_Default; - btn = (const TQPushButton*)widget; - p->setBrushOrigin( -widget->backgroundOffset().x(), - -widget->backgroundOffset().y() ); + p->setBrushOrigin( -ceData.bgOffset.x(), + -ceData.bgOffset.y() ); // take care of the flags based on what we know... - if ( btn->isDown() ) + if ( elementFlags & CEF_IsDown ) flags |= Style_Down; - if ( btn->isOn() ) + if ( elementFlags & CEF_IsOn ) flags |= Style_On; - if ( btn->isEnabled() ) + if ( elementFlags & CEF_IsEnabled ) flags |= Style_Enabled; - if ( btn->isDefault() ) + if ( elementFlags & CEF_IsDefault ) flags |= Style_Default; - if (! btn->isFlat() && !(flags & Style_Down)) + if (! ( elementFlags & CEF_IsFlat ) && !(flags & Style_Down)) flags |= Style_Raised; r.coords( &x1, &y1, &x2, &y2 ); @@ -778,28 +780,28 @@ void TQPlatinumStyle::drawControl( ControlElement element, p->setBrush( TQBrush(cg.button(), NoBrush) ); TQBrush fill; - if ( btn->isDown() ) { + if ( elementFlags & CEF_IsDown ) { fill = cg.brush( TQColorGroup::Dark ); // this could be done differently, but this // makes a down Bezel drawn correctly... myCg.setBrush( TQColorGroup::Mid, fill ); - } else if ( btn->isOn() ) { + } else if ( elementFlags & CEF_IsOn ) { fill = TQBrush( cg.mid(), Dense4Pattern ); myCg.setBrush( TQColorGroup::Mid, fill ); } // to quote the old TQPlatinumStlye drawPushButton... // small or square image buttons as well as toggle buttons are // bevel buttons (what a heuristic....) - if ( btn->isToggleButton() - || ( btn->pixmap() && - (btn->width() * btn->height() < 1600 || - TQABS( btn->width() - btn->height()) < 10 )) ) + if ( ( elementFlags & CEF_BiState ) + || ( (!ceData.fgPixmap.isNull()) && + (ceData.rect.width() * ceData.rect.height() < 1600 || + TQABS( ceData.rect.width() - ceData.rect.height()) < 10 )) ) useBevelButton = TRUE; else useBevelButton = FALSE; - int diw = pixelMetric( PM_ButtonDefaultIndicator, widget ); - if ( btn->isDefault() ) { + int diw = pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags, widget ); + if ( elementFlags & CEF_IsDefault ) { x1 += 1; y1 += 1; x2 -= 1; @@ -814,37 +816,37 @@ void TQPlatinumStyle::drawControl( ControlElement element, cg2.setColor( TQColorGroup::Button, cg.mid() ); if ( useBevelButton ) { - drawPrimitive( PE_ButtonBevel, p, TQRect( x1, y1, + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1 ), myCg, myFlags, opt ); } else { - drawPrimitive( PE_ButtonCommand, p, TQRect( x1, y1, + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, TQRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1 ), cg2, myFlags, opt ); } } - if ( btn->isDefault() || btn->autoDefault() ) { + if ( ( elementFlags & CEF_IsDefault ) || ( elementFlags & CEF_AutoDefault ) ) { x1 += diw; y1 += diw; x2 -= diw; y2 -= diw; } - if ( !btn->isFlat() || btn->isOn() || btn->isDown() ) { + if ( (!( elementFlags & CEF_IsFlat )) || ( elementFlags & CEF_IsOn ) || ( elementFlags & CEF_IsDown ) ) { if ( useBevelButton ) { // fix for toggle buttons... if ( flags & (Style_Down | Style_On) ) flags |= Style_Sunken; - drawPrimitive( PE_ButtonBevel, p, TQRect( x1, y1, + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1 ), myCg, flags, opt ); } else { - drawPrimitive( PE_ButtonCommand, p, TQRect( x1, y1, + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, TQRect( x1, y1, x2 - x1 + 1, y2 - y1 + 1 ), myCg, flags, opt ); @@ -860,16 +862,14 @@ void TQPlatinumStyle::drawControl( ControlElement element, case CE_PushButtonLabel: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *btn; bool on; int x, y, w, h; SFlags flags; flags = Style_Default; - btn = (const TQPushButton*)widget; - on = btn->isDown() || btn->isOn(); + on = (( elementFlags & CEF_IsDown ) || ( elementFlags & CEF_IsOn )); r.rect( &x, &y, &w, &h ); - if ( btn->isMenuButton() ) { - int dx = pixelMetric( PM_MenuButtonIndicator, widget ); + if ( elementFlags & CEF_IsMenuWidget ) { + int dx = pixelMetric( PM_MenuButtonIndicator, ceData, elementFlags, widget ); TQColorGroup g = cg; int xx = x + w - dx - 4; @@ -884,23 +884,23 @@ void TQPlatinumStyle::drawControl( ControlElement element, p->setPen( g.light() ); p->drawLine( xx + 2, yy + 2, xx + 2, yy + hh - 2 ); } - if ( btn->isEnabled() ) + if ( elementFlags & CEF_IsEnabled ) flags |= Style_Enabled; - drawPrimitive( PE_ArrowDown, p, TQRect(x + w - dx - 1, y + 2, + drawPrimitive( PE_ArrowDown, p, ceData, elementFlags, TQRect(x + w - dx - 1, y + 2, dx, h - 4), g, flags, opt ); w -= dx; } #ifndef QT_NO_ICONSET - if ( btn->iconSet() && !btn->iconSet()->isNull() ) { - TQIconSet::Mode mode = btn->isEnabled() + if ( !ceData.iconSet.isNull() ) { + TQIconSet::Mode mode = ( elementFlags & CEF_IsEnabled ) ? TQIconSet::Normal : TQIconSet::Disabled; - if ( mode == TQIconSet::Normal && btn->hasFocus() ) + if ( mode == TQIconSet::Normal && ( elementFlags & CEF_HasFocus ) ) mode = TQIconSet::Active; TQIconSet::State state = TQIconSet::Off; - if ( btn->isToggleButton() && btn->isOn() ) + if ( ( elementFlags & CEF_BiState ) && ( elementFlags & CEF_IsOn ) ) state = TQIconSet::On; - TQPixmap pixmap = btn->iconSet()->pixmap( TQIconSet::Small, + TQPixmap pixmap = ceData.iconSet.pixmap( TQIconSet::Small, mode, state ); int pixw = pixmap.width(); int pixh = pixmap.height(); @@ -911,19 +911,19 @@ void TQPlatinumStyle::drawControl( ControlElement element, #endif drawItem( p, TQRect( x, y, w, h ), AlignCenter | ShowPrefix, - btn->colorGroup(), btn->isEnabled(), - btn->pixmap(), btn->text(), -1, - on ? &btn->colorGroup().brightText() - : &btn->colorGroup().buttonText() ); - if ( btn->hasFocus() ) - drawPrimitive( PE_FocusRect, p, - subRect(SR_PushButtonFocusRect, widget), + ceData.colorGroup, ( elementFlags & CEF_IsEnabled ), + (ceData.fgPixmap.isNull())?NULL:&ceData.fgPixmap, ceData.text, -1, + on ? &ceData.colorGroup.brightText() + : &ceData.colorGroup.buttonText() ); + if ( elementFlags & CEF_HasFocus ) + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, + subRect(SR_PushButtonFocusRect, ceData, elementFlags, widget), cg, flags ); break; #endif } default: - TQWindowsStyle::drawControl( element, p, widget, r, cg, how, opt ); + TQWindowsStyle::drawControl( element, p, ceData, elementFlags, r, cg, how, opt, widget ); break; } } @@ -932,13 +932,15 @@ void TQPlatinumStyle::drawControl( ControlElement element, */ void TQPlatinumStyle::drawComplexControl( ComplexControl control, TQPainter *p, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags how, SCFlags sub, SCFlags subActive, - const TQStyleOption& opt ) const + const TQStyleOption& opt, + const TQWidget *widget ) const { switch ( control ) { case CC_ComboBox: @@ -1010,8 +1012,8 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, p->drawPoint( x + w - 3, y + h - 3 ); if ( sub & SC_ComboBoxArrow ) { - TQRect rTmp = querySubControlMetrics( CC_ComboBox, widget, - SC_ComboBoxArrow, opt ); + TQRect rTmp = querySubControlMetrics( CC_ComboBox, ceData, elementFlags, + SC_ComboBoxArrow, opt, widget ); int xx = rTmp.x(), yy = rTmp.y(), ww = rTmp.width(), @@ -1078,21 +1080,19 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, } #ifndef QT_NO_COMBOBOX if ( sub & SC_ComboBoxEditField ) { - const TQComboBox *cmb; - cmb = (const TQComboBox*)widget; // sadly this is pretty much the windows code, except // for the first fillRect call... TQRect re = TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, - widget, - SC_ComboBoxEditField ), - widget ); - if ( cmb->hasFocus() && !cmb->editable() ) + ceData, elementFlags, + SC_ComboBoxEditField, TQStyleOption::Default, widget ), + ceData, elementFlags ); + if ( ( elementFlags & CEF_HasFocus ) && (!( elementFlags & CEF_IsEditable )) ) p->fillRect( re.x() + 1, re.y() + 1, re.width() - 2, re.height() - 2, cg.brush( TQColorGroup::Highlight ) ); - if ( cmb->hasFocus() ) { + if ( elementFlags & CEF_HasFocus ) { p->setPen( cg.highlightedText() ); p->setBackgroundColor( cg.highlight() ); } else { @@ -1100,16 +1100,16 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, p->setBackgroundColor( cg.background() ); } - if ( cmb->hasFocus() && !cmb->editable() ) { + if ( ( elementFlags & CEF_HasFocus ) && (!( elementFlags & CEF_IsEditable )) ) { TQRect re = - TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, - cmb ), - widget ); - drawPrimitive( PE_FocusRect, p, re, cg, + TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, ceData, elementFlags, + widget ), + ceData, elementFlags ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, re, cg, Style_FocusAtBorder, TQStyleOption(cg.highlight())); } - if ( cmb->editable() ) { + if ( elementFlags & CEF_IsEditable ) { // need this for the moment... // was the code in comboButton rect TQRect ir( x + 3, y + 3, @@ -1128,15 +1128,14 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, case CC_Slider: { #ifndef QT_NO_SLIDER - const TQSlider *slider = (const TQSlider *) widget; - int thickness = pixelMetric( PM_SliderControlThickness, widget ); - int len = pixelMetric( PM_SliderLength, widget ); - int ticks = slider->tickmarks(); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); + int ticks = ceData.tickMarkSetting; - 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()) { p->fillRect( groove, cg.brush(TQColorGroup::Background) ); @@ -1149,16 +1148,16 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, if ( ticks & TQSlider::Below ) mid -= len / 8; - if ( slider->orientation() == Horizontal ) { + if ( ceData.orientation == Horizontal ) { x = 0; y = groove.y() + mid - 3; - w = slider->width(); + w = ceData.rect.width(); h = 7; } else { x = groove.x() + mid - 3; y = 0; w = 7; - h = slider->height(); + h = ceData.rect.height(); } p->fillRect( x, y, w, h, cg.brush( TQColorGroup::Dark )); @@ -1209,7 +1208,7 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, // ### end slider groove if ( how & Style_HasFocus ) - drawPrimitive( PE_FocusRect, p, groove, cg ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, groove, cg ); } if ((sub & SC_SliderHandle) && handle.isValid()) { @@ -1224,7 +1223,7 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, int mx = handle.width() / 2; int my = handle.height() / 2; - if ( slider->orientation() == Vertical ) { + if ( ceData.orientation == Vertical ) { // Background TQBrush oldBrush = p->brush(); p->setBrush( cg.brush( TQColorGroup::Button ) ); @@ -1303,15 +1302,15 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, } if ( sub & SC_SliderTickmarks ) - TQCommonStyle::drawComplexControl( control, p, widget, r, + TQCommonStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, how, SC_SliderTickmarks, - subActive, opt ); + subActive, opt, widget ); #endif break; } default: - TQWindowsStyle::drawComplexControl( control, p, widget, r, cg, - how, sub, subActive, opt ); + TQWindowsStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, + how, sub, subActive, opt, widget ); break; } } @@ -1321,18 +1320,18 @@ void TQPlatinumStyle::drawComplexControl( ComplexControl control, /*!\reimp */ TQRect TQPlatinumStyle::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 ) { #ifndef QT_NO_COMBOBOX case CC_ComboBox: - const TQComboBox *cb; - cb = (const TQComboBox *)widget; switch( sc ) { case SC_ComboBoxArrow: { - TQRect ir = cb->rect(); + TQRect ir = ceData.rect; int xx; if( TQApplication::reverseLayout() ) xx = ir.x(); @@ -1346,22 +1345,20 @@ TQRect TQPlatinumStyle::querySubControlMetrics( ComplexControl control, #endif #ifndef QT_NO_SCROLLBAR case CC_ScrollBar: { - const TQScrollBar *sb; - sb = (const TQScrollBar *)widget; - int sliderStart = sb->sliderStart(); - int sbextent = pixelMetric( PM_ScrollBarExtent, widget ); - int maxlen = ((sb->orientation() == TQt::Horizontal) ? - sb->width() : sb->height()) - ( sbextent * 2 ); + int sliderStart = ceData.startStep; + int sbextent = pixelMetric( PM_ScrollBarExtent, ceData, elementFlags, widget ); + int maxlen = ((ceData.orientation == TQt::Horizontal) ? + ceData.rect.width() : ceData.rect.height()) - ( sbextent * 2 ); int sliderlen; // calculate length - if ( sb->maxValue() != sb->minValue() ) { - uint range = sb->maxValue() - sb->minValue(); - sliderlen = ( sb->pageStep() * maxlen ) / - ( range + sb->pageStep() ); + if ( ceData.maxSteps != ceData.minSteps ) { + uint range = ceData.maxSteps - ceData.minSteps; + sliderlen = ( ceData.pageStep * maxlen ) / + ( range + ceData.pageStep ); - int slidermin = pixelMetric( PM_ScrollBarSliderMin, widget ); + int slidermin = pixelMetric( PM_ScrollBarSliderMin, ceData, elementFlags, widget ); if ( sliderlen < slidermin || range > INT_MAX / 2 ) sliderlen = slidermin; if ( sliderlen > maxlen ) @@ -1372,33 +1369,33 @@ TQRect TQPlatinumStyle::querySubControlMetrics( ComplexControl control, switch ( sc ) { case SC_ScrollBarSubLine: - if ( sb->orientation() == TQt::Horizontal ) { - int buttonw = TQMIN( sb->width() / 2, sbextent ); - return TQRect( sb->width() - 2 * buttonw, 0, buttonw, sbextent ); + if ( ceData.orientation == TQt::Horizontal ) { + int buttonw = TQMIN( ceData.rect.width() / 2, sbextent ); + return TQRect( ceData.rect.width() - 2 * buttonw, 0, buttonw, sbextent ); } else { - int buttonh = TQMIN( sb->height() / 2, sbextent ); - return TQRect( 0, sb->height() - 2 * buttonh, sbextent, buttonh ); + int buttonh = TQMIN( ceData.rect.height() / 2, sbextent ); + return TQRect( 0, ceData.rect.height() - 2 * buttonh, sbextent, buttonh ); } case SC_ScrollBarAddLine: - if ( sb->orientation() == TQt::Horizontal ) { - int buttonw = TQMIN( sb->width() / 2, sbextent ); - return TQRect( sb->width() - buttonw, 0, sbextent, buttonw ); + if ( ceData.orientation == TQt::Horizontal ) { + int buttonw = TQMIN( ceData.rect.width() / 2, sbextent ); + return TQRect( ceData.rect.width() - buttonw, 0, sbextent, buttonw ); } else { - int buttonh = TQMIN( sb->height() / 2, sbextent ); - return TQRect(0, sb->height() - buttonh, sbextent, buttonh ); + int buttonh = TQMIN( ceData.rect.height() / 2, sbextent ); + return TQRect(0, ceData.rect.height() - buttonh, sbextent, buttonh ); } case SC_ScrollBarSubPage: - if ( sb->orientation() == TQt::Horizontal ) + if ( ceData.orientation == TQt::Horizontal ) return TQRect( 1, 0, sliderStart, sbextent ); return TQRect( 0, 1, sbextent, sliderStart ); case SC_ScrollBarAddPage: - if ( sb->orientation() == TQt::Horizontal ) + if ( ceData.orientation == TQt::Horizontal ) return TQRect( sliderStart + sliderlen, 0, maxlen - sliderStart - sliderlen, sbextent ); return TQRect( 0, sliderStart + sliderlen, sbextent, maxlen - sliderStart - sliderlen ); case SC_ScrollBarGroove: - if ( sb->orientation() == TQt::Horizontal ) - return TQRect( 1, 0, sb->width() - sbextent * 2, sb->height() ); - return TQRect( 0, 1, sb->width(), sb->height() - sbextent * 2 ); + if ( ceData.orientation == TQt::Horizontal ) + return TQRect( 1, 0, ceData.rect.width() - sbextent * 2, ceData.rect.height() ); + return TQRect( 0, 1, ceData.rect.width(), ceData.rect.height() - sbextent * 2 ); default: break; } @@ -1406,13 +1403,11 @@ TQRect TQPlatinumStyle::querySubControlMetrics( ComplexControl control, #endif #ifndef QT_NO_SLIDER case CC_Slider: { - - const TQSlider *slider = (const TQSlider *) widget; - int tickOffset = pixelMetric( PM_SliderTickmarkOffset, widget); - int thickness = pixelMetric( PM_SliderControlThickness, widget); + int tickOffset = pixelMetric( PM_SliderTickmarkOffset, ceData, elementFlags, widget); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget); int mid = thickness / 2; - int ticks = slider->tickmarks(); - int len = pixelMetric( PM_SliderLength, widget ); + int ticks = ceData.tickMarkSetting; + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); switch ( sc ) { case SC_SliderGroove: @@ -1420,9 +1415,9 @@ TQRect TQPlatinumStyle::querySubControlMetrics( ComplexControl control, mid += len / 8; if ( ticks & TQSlider::Below ) mid -= len / 8; - if ( slider->orientation() == TQSlider::Horizontal ) - return TQRect( 0, tickOffset, slider->width(), thickness ); - return TQRect( tickOffset, 0, thickness, slider->height() ); + if ( ceData.orientation == TQSlider::Horizontal ) + return TQRect( 0, tickOffset, ceData.rect.width(), thickness ); + return TQRect( tickOffset, 0, thickness, ceData.rect.height() ); default: break; } @@ -1431,13 +1426,13 @@ TQRect TQPlatinumStyle::querySubControlMetrics( ComplexControl control, default: break; } - return TQWindowsStyle::querySubControlMetrics( control, widget, sc, opt ); + return TQWindowsStyle::querySubControlMetrics( control, ceData, elementFlags, sc, opt, widget ); } /*!\reimp */ -int TQPlatinumStyle::pixelMetric( PixelMetric metric, +int TQPlatinumStyle::pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const { int ret; @@ -1466,7 +1461,7 @@ int TQPlatinumStyle::pixelMetric( PixelMetric metric, ret = -1; break; default: - ret = TQWindowsStyle::pixelMetric( metric, widget ); + ret = TQWindowsStyle::pixelMetric( metric, ceData, elementFlags, widget ); break; } return ret; @@ -1474,19 +1469,19 @@ int TQPlatinumStyle::pixelMetric( PixelMetric metric, /*!\reimp */ -TQRect TQPlatinumStyle::subRect( SubRect r, const TQWidget *widget ) const +TQRect TQPlatinumStyle::subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const { TQRect rect; switch ( r ) { case SR_ComboBoxFocusRect: { - TQRect tmpR = widget->rect(); + TQRect tmpR = ceData.rect; rect = TQRect( tmpR.x() + 4, tmpR.y() + 4, tmpR.width() - 8 - 16, tmpR.height() - 8 ); break; } default: - rect = TQWindowsStyle::subRect( r, widget ); + rect = TQWindowsStyle::subRect( r, ceData, elementFlags, widget ); break; } return rect; diff --git a/src/styles/qsgistyle.cpp b/src/styles/qsgistyle.cpp index 86dcef363..e6daeec18 100644 --- a/src/styles/qsgistyle.cpp +++ b/src/styles/qsgistyle.cpp @@ -254,7 +254,7 @@ TQSGIStyle::polish( TQWidget* w ) #endif #ifndef QT_NO_POPUPMENU } else if ( ::tqt_cast<TQPopupMenu*>(w) ) { - ((TQFrame*) w)->setLineWidth( pixelMetric( PM_DefaultFrameWidth ) + 1 ); + ((TQFrame*) w)->setLineWidth( pixelMetric( PM_DefaultFrameWidth, TQStyleControlElementData(), CEF_None ) + 1 ); TQFont f = TQApplication::font(); f.setBold( TRUE ); f.setItalic( TRUE ); @@ -273,7 +273,7 @@ TQSGIStyle::unPolish( TQWidget* w ) w->removeEventFilter( this ); #ifndef QT_NO_POPUPMENU } else if ( ::tqt_cast<TQPopupMenu*>(w) ) { - ((TQFrame*)w)->setLineWidth( pixelMetric( PM_DefaultFrameWidth ) ); + ((TQFrame*)w)->setLineWidth( pixelMetric( PM_DefaultFrameWidth, TQStyleControlElementData(), CEF_None ) ); w->setFont( TQApplication::font() ); #endif #if !defined(QT_NO_MENUBAR) || !defined(QT_NO_COMBOBOX) @@ -375,7 +375,7 @@ static const int sgiTabSpacing = 12; // space between text and tab static const int sgiCheckMarkSpace = 20; /*! \reimp */ -int TQSGIStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const +int TQSGIStyle::pixelMetric( PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const { switch ( metric ) { case PM_DefaultFrameWidth: @@ -401,7 +401,7 @@ int TQSGIStyle::pixelMetric( PixelMetric metric, const TQWidget *widget ) const default: break; } - return TQMotifStyle::pixelMetric( metric, widget ); + return TQMotifStyle::pixelMetric( metric, ceData, elementFlags, widget ); } static void drawPanel( TQPainter *p, int x, int y, int w, int h, @@ -552,6 +552,8 @@ static void get_combo_parameters( const TQRect &r, /*! \reimp */ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -562,7 +564,7 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, const int w = r.width(); const int h = r.height(); const bool sunken = flags & ( Style_Sunken | Style_Down | Style_On ); - const int defaultFrameWidth = pixelMetric( PM_DefaultFrameWidth ); + const int defaultFrameWidth = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags ); bool hot = ( flags & Style_MouseOver ) && ( flags & Style_Enabled ); switch ( pe ) { @@ -588,7 +590,7 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, case PE_ButtonBevel: case PE_ButtonTool: { - drawPrimitive( PE_ButtonCommand, p, TQRect( x+1, y+1, w-2, h-2 ), cg, flags, opt ); + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, TQRect( x+1, y+1, w-2, h-2 ), cg, flags, opt ); TQPen oldPen = p->pen(); TQPointArray a; @@ -642,11 +644,11 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, TQRect er = r; er.addCoords( 1, 1, -1, -1 ); int iflags = flags & ~Style_On; - drawPrimitive( PE_ButtonBevel, p, er, cg, iflags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, er, cg, iflags, opt ); if ( !(flags & TQStyle::Style_Off) ) { er = r; er.addCoords( 1, 2, 1, 1 ); - drawPrimitive( PE_CheckMark, p, er, cg, flags, opt ); + drawPrimitive( PE_CheckMark, p, ceData, elementFlags, er, cg, flags, opt ); } } break; @@ -795,17 +797,17 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, case PE_ScrollBarSubLine: if ( !r.contains( d->mousePos ) && !(flags & Style_Active) ) flags &= ~Style_MouseOver; - drawPrimitive( PE_ButtonCommand, p, r, cg, flags, opt ); + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, r, cg, flags, opt ); 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: if ( !r.contains( d->mousePos ) ) flags &= ~Style_MouseOver; - drawPrimitive( PE_ButtonCommand, p, r, cg, flags, opt ); + drawPrimitive( PE_ButtonCommand, p, ceData, elementFlags, r, cg, flags, opt ); 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: @@ -825,7 +827,7 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, TQPixmap pm( r.width(), r.height() ); TQPainter bp( &pm ); - drawPrimitive(PE_ButtonBevel, &bp, TQRect(0,0,r.width(),r.height()), cg, flags | Style_Enabled | Style_Raised); + drawPrimitive(PE_ButtonBevel, &bp, ceData, elementFlags, TQRect(0,0,r.width(),r.height()), cg, flags | Style_Enabled | Style_Raised); if ( flags & Style_Horizontal ) { const int sliderM = r.width() / 2; if ( r.width() > 20 ) { @@ -853,7 +855,7 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, case PE_Splitter: { const int motifOffset = 10; - int sw = pixelMetric( PM_SplitterWidth ); + int sw = pixelMetric( PM_SplitterWidth, ceData, elementFlags ); if ( flags & Style_Horizontal ) { int xPos = x + w/2; int kPos = motifOffset; @@ -862,7 +864,7 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, qDrawShadeLine( p, xPos, kPos + kSize - 1 , xPos, h, cg ); - drawPrimitive( PE_ButtonBevel, p, TQRect(xPos-sw/2+1, kPos, kSize, kSize+1), cg, flags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect(xPos-sw/2+1, kPos, kSize, kSize+1), cg, flags, opt ); qDrawShadeLine( p, xPos+2, 0, xPos, kPos, cg ); } else { int yPos = y + h/2; @@ -870,14 +872,14 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, int kSize = sw - 2; qDrawShadeLine( p, 0, yPos, kPos, yPos, cg ); - drawPrimitive( PE_ButtonBevel, p, TQRect( kPos, yPos-sw/2+1, kSize+1, kSize ), cg, flags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect( kPos, yPos-sw/2+1, kSize+1, kSize ), cg, flags, opt ); qDrawShadeLine( p, kPos + kSize+1, yPos, w, yPos, cg ); } } break; default: - TQMotifStyle::drawPrimitive( pe, p, r, cg, flags, opt ); + TQMotifStyle::drawPrimitive( pe, p, ceData, elementFlags, r, cg, flags, opt ); break; } } @@ -885,11 +887,13 @@ void TQSGIStyle::drawPrimitive( PrimitiveElement pe, /*! \reimp */ void TQSGIStyle::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 { if ( widget == d->hotWidget ) flags |= Style_MouseOver; @@ -898,17 +902,16 @@ void TQSGIStyle::drawControl( ControlElement element, case CE_PushButton: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *btn = (TQPushButton*)widget; int x1, y1, x2, y2; r.coords( &x1, &y1, &x2, &y2 ); p->setPen( cg.foreground() ); p->setBrush( TQBrush( cg.button(),TQt::NoBrush ) ); - p->setBrushOrigin( -widget->backgroundOffset().x(), - -widget->backgroundOffset().y() ); + p->setBrushOrigin( -ceData.bgOffset.x(), + -ceData.bgOffset.y() ); - int diw = pixelMetric( TQStyle::PM_ButtonDefaultIndicator ); - if ( btn->isDefault() || btn->autoDefault() ) { + int diw = pixelMetric( TQStyle::PM_ButtonDefaultIndicator, ceData, elementFlags ); + if ( ( elementFlags & CEF_IsDefault ) || ( elementFlags & CEF_AutoDefault ) ) { x1 += diw; y1 += diw; x2 -= diw; @@ -916,7 +919,7 @@ void TQSGIStyle::drawControl( ControlElement element, } TQPointArray a; - if ( btn->isDefault() ) { + if ( elementFlags & CEF_IsDefault ) { if ( diw == 0 ) { a.setPoints( 9, x1, y1, x2, y1, x2, y2, x1, y2, x1, y1+1, @@ -928,13 +931,13 @@ void TQSGIStyle::drawControl( ControlElement element, x2 -= 2; y2 -= 2; } else { - qDrawShadePanel( p, btn->rect(), cg, TRUE ); + qDrawShadePanel( p, ceData.rect, cg, TRUE ); } } TQBrush fill = cg.brush( TQColorGroup::Button ); - if ( !btn->isFlat() || btn->isOn() || btn->isDown() ) - drawPrimitive( PE_ButtonBevel, p, TQRect( x1, y1, x2-x1+1, y2-y1+1 ), cg, flags, opt ); + if ( (!( elementFlags & CEF_IsFlat )) || ( elementFlags & CEF_IsOn ) || ( elementFlags & CEF_IsDown ) ) + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, TQRect( x1, y1, x2-x1+1, y2-y1+1 ), cg, flags, opt ); if ( p->brush().style() != TQt::NoBrush ) p->setBrush( TQt::NoBrush ); @@ -945,16 +948,15 @@ void TQSGIStyle::drawControl( ControlElement element, case CE_PopupMenuItem: { #ifndef QT_NO_POPUPMENU - if (! widget || opt.isDefault()) + if ( ( elementFlags & CEF_UseGenericParameters ) || opt.isDefault()) break; TQMenuItem *mi = opt.menuItem(); if ( !mi ) break; - const TQPopupMenu *popupmenu = (const TQPopupMenu *) widget; 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; @@ -973,7 +975,7 @@ void TQSGIStyle::drawControl( ControlElement element, int pw = sgiItemFrame; if ( act && !dis ) { - if ( pixelMetric( PM_DefaultFrameWidth ) > 1 ) + if ( pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags ) > 1 ) drawPanel( p, x, y, w, h, cg, FALSE, pw, &cg.brush( TQColorGroup::Light ) ); else @@ -1024,12 +1026,12 @@ void TQSGIStyle::drawControl( ControlElement element, if ( mi->isChecked() ) { TQRect er( x+sgiItemFrame+1, y+sgiItemFrame+3, - pixelMetric(PM_IndicatorWidth), - pixelMetric(PM_IndicatorHeight) ); + pixelMetric(PM_IndicatorWidth, ceData, elementFlags), + pixelMetric(PM_IndicatorHeight, ceData, elementFlags) ); er.addCoords( 1, 1, -1, -1 ); - drawPrimitive( PE_ButtonBevel, p, er, cg, cflags, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, er, cg, cflags, opt ); er.addCoords( 0, 1, 1, 1 ); - drawPrimitive( PE_CheckMark, p, er, cg, cflags | Style_On, opt ); + drawPrimitive( PE_CheckMark, p, ceData, elementFlags, er, cg, cflags | Style_On, opt ); } } } @@ -1082,7 +1084,7 @@ void TQSGIStyle::drawControl( ControlElement element, } if ( mi->popup() ) { int dim = (h-2*sgiItemFrame) / 2; - drawPrimitive( PE_ArrowRight, p, TQRect( x+w-sgiArrowHMargin-sgiItemFrame-dim, y+h/2-dim/2, dim, dim ), cg, flags ); + drawPrimitive( PE_ArrowRight, p, ceData, elementFlags, TQRect( x+w-sgiArrowHMargin-sgiItemFrame-dim, y+h/2-dim/2, dim, dim ), cg, flags ); } #endif } @@ -1128,11 +1130,11 @@ void TQSGIStyle::drawControl( ControlElement element, break; case CE_CheckBox: - TQMotifStyle::drawControl( element, p, widget, r, cg, flags, opt ); + TQMotifStyle::drawControl( element, p, ceData, elementFlags, r, cg, flags, opt, widget ); break; default: - TQMotifStyle::drawControl( element, p, widget, r, cg, flags, opt ); + TQMotifStyle::drawControl( element, p, ceData, elementFlags, r, cg, flags, opt, widget ); break; } } @@ -1140,13 +1142,15 @@ void TQSGIStyle::drawControl( ControlElement element, /*! \reimp */ void TQSGIStyle::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 { if ( widget == d->hotWidget ) flags |= Style_MouseOver; @@ -1155,33 +1159,31 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, 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()) { TQRegion region( groove ); if ( ( sub & SC_SliderHandle ) && handle.isValid() ) region = region.subtract( handle ); - if ( d->lastSliderRect.slider == slider && d->lastSliderRect.rect.isValid() ) + if ( d->lastSliderRect.slider == widget && d->lastSliderRect.rect.isValid() ) region = region.subtract( d->lastSliderRect.rect ); p->setClipRegion( region ); TQRect grooveTop = groove; grooveTop.addCoords( 1, 1, -1, -1 ); - drawPrimitive( PE_ButtonBevel, p, grooveTop, cg, flags & ~Style_MouseOver, opt ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, grooveTop, cg, flags & ~Style_MouseOver, opt ); if ( flags & Style_HasFocus ) { - TQRect fr = subRect( SR_SliderFocusRect, widget ); - drawPrimitive( PE_FocusRect, p, fr, cg, flags & ~Style_MouseOver ); + TQRect fr = subRect( SR_SliderFocusRect, ceData, elementFlags, widget ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, fr, cg, flags & ~Style_MouseOver ); } - if ( d->lastSliderRect.slider == slider && d->lastSliderRect.rect.isValid() ) { + if ( d->lastSliderRect.slider == widget && d->lastSliderRect.rect.isValid() ) { if ( ( sub & SC_SliderHandle ) && handle.isValid() ) { - region = widget->rect(); + region = ceData.rect; region = region.subtract( handle ); p->setClipRegion( region ); } else { @@ -1195,9 +1197,9 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, if (( sub & SC_SliderHandle ) && handle.isValid()) { if ( flags & Style_MouseOver && !handle.contains( d->mousePos ) && subActive != SC_SliderHandle ) flags &= ~Style_MouseOver; - drawPrimitive( PE_ButtonBevel, p, handle, cg, flags ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, handle, cg, flags ); - 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, @@ -1211,50 +1213,48 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, } if ( sub & SC_SliderTickmarks ) - TQMotifStyle::drawComplexControl( control, p, widget, r, cg, flags, + TQMotifStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags, SC_SliderTickmarks, subActive, - opt ); + opt, widget ); #endif break; } case CC_ComboBox: { #ifndef QT_NO_COMBOBOX - const TQComboBox * cb = (TQComboBox *) widget; - if (sub & SC_ComboBoxFrame) { TQRect fr = - TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, cb, - SC_ComboBoxFrame ), cb ); - drawPrimitive( PE_ButtonBevel, p, fr, cg, flags ); + TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, + SC_ComboBoxFrame, TQStyleOption::Default, widget ), ceData, elementFlags ); + drawPrimitive( PE_ButtonBevel, p, ceData, elementFlags, fr, cg, flags ); } if ( sub & SC_ComboBoxArrow ) { p->save(); TQRect er = - TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, cb, SC_ComboBoxArrow ), cb ); + TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, SC_ComboBoxArrow, TQStyleOption::Default, widget ), ceData, elementFlags ); er.addCoords( 0, 3, 0, 0 ); - drawPrimitive( PE_ArrowDown, p, er, cg, flags | Style_Enabled, opt ); + drawPrimitive( PE_ArrowDown, p, ceData, elementFlags, er, cg, flags | Style_Enabled, opt ); int awh, ax, ay, sh, sy, dh, ew; - get_combo_parameters( widget->rect(), ew, awh, ax, ay, sh, dh, sy ); + get_combo_parameters( ceData.rect, ew, awh, ax, ay, sh, dh, sy ); TQBrush arrow = cg.brush( TQColorGroup::Dark ); p->fillRect( ax, sy-1, awh, sh, arrow ); p->restore(); - if ( cb->hasFocus() ) { - TQRect re = TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), cb ); - drawPrimitive( PE_FocusRect, p, re, cg ); + if ( elementFlags & CEF_HasFocus ) { + TQRect re = TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, ceData, elementFlags, widget ), ceData, elementFlags ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, re, cg ); } } if ( sub & SC_ComboBoxEditField ) { - if ( cb->editable() ) { + if ( elementFlags & CEF_IsEditable ) { TQRect er = - TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, cb, - SC_ComboBoxEditField ), cb ); + TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, + SC_ComboBoxEditField, TQStyleOption::Default, widget ), ceData, elementFlags ); er.addCoords( -1, -1, 1, 1); qDrawShadePanel( p, TQRect( er.x()-1, er.y()-1, er.width()+2, er.height()+2 ), @@ -1269,27 +1269,26 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, case CC_ScrollBar: { #ifndef QT_NO_SCROLLBAR - TQScrollBar *scrollbar = (TQScrollBar*)widget; - bool maxedOut = (scrollbar->minValue() == scrollbar->maxValue()); + bool maxedOut = (ceData.minSteps == ceData.maxSteps); if ( maxedOut ) flags &= ~Style_Enabled; - TQRect handle = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSlider, opt ), widget ); + TQRect handle = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, ceData, elementFlags, SC_ScrollBarSlider, opt, widget ), ceData, elementFlags ); if ( sub & SC_ScrollBarGroove ) { } if ( sub & SC_ScrollBarAddLine ) { - TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarAddLine, opt ), widget ); - drawPrimitive( PE_ScrollBarAddLine, p, er, cg, flags, opt ); + TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, ceData, elementFlags, SC_ScrollBarAddLine, opt, widget ), ceData, elementFlags ); + drawPrimitive( PE_ScrollBarAddLine, p, ceData, elementFlags, er, cg, flags, opt ); } if ( sub & SC_ScrollBarSubLine ) { - TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSubLine, opt ), widget ); - drawPrimitive( PE_ScrollBarSubLine, p, er, cg, flags, opt ); + TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, ceData, elementFlags, SC_ScrollBarSubLine, opt, widget ), ceData, elementFlags ); + drawPrimitive( PE_ScrollBarSubLine, p, ceData, elementFlags, er, cg, flags, opt ); } if ( sub & SC_ScrollBarAddPage ) { - TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarAddPage, opt ), widget ); + TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, ceData, elementFlags, SC_ScrollBarAddPage, opt, widget ), ceData, elementFlags ); TQRegion region( er ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && + if ( d->lastScrollbarRect.scrollbar == widget && d->lastScrollbarRect.rect.isValid() && er.intersects( d->lastScrollbarRect.rect ) ) { region = region.subtract( d->lastScrollbarRect.rect ); @@ -1300,9 +1299,9 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, p->setClipRegion( region ); } - drawPrimitive( PE_ScrollBarAddPage, p, er, cg, flags & ~Style_MouseOver, opt ); + drawPrimitive( PE_ScrollBarAddPage, p, ceData, elementFlags, er, cg, flags & ~Style_MouseOver, opt ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && + if ( d->lastScrollbarRect.scrollbar == widget && d->lastScrollbarRect.rect.isValid() && er.intersects( d->lastScrollbarRect.rect ) ) { if ( sub & SC_ScrollBarSlider && handle.isValid() ) { @@ -1317,9 +1316,9 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, p->setClipping( FALSE ); } if ( sub & SC_ScrollBarSubPage ) { - TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, widget, SC_ScrollBarSubPage, opt ), widget ); + TQRect er = TQStyle::visualRect( querySubControlMetrics( CC_ScrollBar, ceData, elementFlags, SC_ScrollBarSubPage, opt, widget ), ceData, elementFlags ); TQRegion region( er ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && + if ( d->lastScrollbarRect.scrollbar == widget && d->lastScrollbarRect.rect.isValid() && er.intersects( d->lastScrollbarRect.rect ) ) { region = region.subtract( d->lastScrollbarRect.rect ); @@ -1329,8 +1328,8 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, region = region.subtract( handle ); p->setClipRegion( region ); } - drawPrimitive( PE_ScrollBarSubPage, p, er, cg, flags & ~Style_MouseOver, opt ); - if ( d->lastScrollbarRect.scrollbar == scrollbar && + drawPrimitive( PE_ScrollBarSubPage, p, ceData, elementFlags, er, cg, flags & ~Style_MouseOver, opt ); + if ( d->lastScrollbarRect.scrollbar == widget && d->lastScrollbarRect.rect.isValid() && er.intersects( d->lastScrollbarRect.rect ) ) { if ( sub & SC_ScrollBarSlider && handle.isValid() ) { @@ -1349,14 +1348,14 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, if ( subActive == SC_ScrollBarSlider ) flags |= Style_Active; - drawPrimitive( PE_ScrollBarSlider, p, handle, cg, flags, opt ); + drawPrimitive( PE_ScrollBarSlider, p, ceData, elementFlags, handle, cg, flags, opt ); } #endif } break; default: - TQMotifStyle::drawComplexControl( control, p, widget, r, cg, flags, sub, subActive, opt ); +// TQMotifStyle::drawComplexControl( control, p, ceData, elementFlags, r, cg, flags, sub, subActive, opt, widget ); break; } } @@ -1364,9 +1363,11 @@ void TQSGIStyle::drawComplexControl( ComplexControl control, /*!\reimp */ TQSize TQSGIStyle::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); @@ -1374,15 +1375,14 @@ TQSize TQSGIStyle::sizeFromContents( ContentsType contents, case CT_PopupMenuItem: { #ifndef QT_NO_POPUPMENU - if (! widget || opt.isDefault()) + if ((elementFlags & CEF_UseGenericParameters) || opt.isDefault()) break; TQMenuItem *mi = opt.menuItem(); - sz = TQMotifStyle::sizeFromContents( contents, widget, contentsSize, - opt ); + sz = TQMotifStyle::sizeFromContents( contents, ceData, elementFlags, contentsSize, + opt, widget ); // SGI checkmark items needs a bit more room - const TQPopupMenu *popup = (TQPopupMenu *) widget; - if ( popup && popup->isCheckable() ) + if ( elementFlags & CEF_IsCheckable ) sz.setWidth( sz.width() + 8 ); // submenu indicator needs a bit more room if (mi->popup()) @@ -1395,7 +1395,7 @@ TQSize TQSGIStyle::sizeFromContents( ContentsType contents, break; default: - sz = TQMotifStyle::sizeFromContents( contents, widget, contentsSize, opt ); + sz = TQMotifStyle::sizeFromContents( contents, ceData, elementFlags, contentsSize, opt, widget ); break; } @@ -1403,7 +1403,7 @@ TQSize TQSGIStyle::sizeFromContents( ContentsType contents, } /*! \reimp */ -TQRect TQSGIStyle::subRect( SubRect r, const TQWidget *widget ) const +TQRect TQSGIStyle::subRect( SubRect r, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget ) const { TQRect rect; @@ -1411,8 +1411,8 @@ TQRect TQSGIStyle::subRect( SubRect r, const TQWidget *widget ) const case SR_ComboBoxFocusRect: { int awh, ax, ay, sh, sy, dh, ew; - int fw = pixelMetric( PM_DefaultFrameWidth, widget ); - TQRect tr = widget->rect(); + int fw = pixelMetric( PM_DefaultFrameWidth, ceData, elementFlags, widget ); + TQRect tr = ceData.rect; tr.addCoords( fw, fw, -fw, -fw ); get_combo_parameters( tr, ew, awh, ax, ay, sh, dh, sy ); @@ -1420,7 +1420,7 @@ TQRect TQSGIStyle::subRect( SubRect r, const TQWidget *widget ) const } break; default: - return TQMotifStyle::subRect( r, widget ); + return TQMotifStyle::subRect( r, ceData, elementFlags, widget ); } return rect; @@ -1428,27 +1428,29 @@ TQRect TQSGIStyle::subRect( SubRect r, const TQWidget *widget ) const /*! \reimp */ TQRect TQSGIStyle::querySubControlMetrics( ComplexControl control, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, SubControl sub, - const TQStyleOption& opt ) const + const TQStyleOption& opt, + const TQWidget *widget ) const { switch ( control ) { case CC_ComboBox: switch ( sub ) { case SC_ComboBoxFrame: - return widget->rect(); + return ceData.rect; case SC_ComboBoxArrow: { int ew, awh, sh, dh, ax, ay, sy; - int fw = pixelMetric( PM_DefaultFrameWidth, widget ); - TQRect cr = widget->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: { - int fw = pixelMetric( PM_DefaultFrameWidth, widget ); - TQRect rect = widget->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.addCoords( 1, 1, -1-ew, -1 ); @@ -1459,10 +1461,10 @@ TQRect TQSGIStyle::querySubControlMetrics( ComplexControl control, } break; case CC_ScrollBar: - return TQCommonStyle::querySubControlMetrics( control, widget, sub, opt ); + return TQCommonStyle::querySubControlMetrics( control, ceData, elementFlags, sub, opt, widget ); default: break; } - return TQMotifStyle::querySubControlMetrics( control, widget, sub, opt ); + return TQMotifStyle::querySubControlMetrics( control, ceData, elementFlags, sub, opt, widget ); } #endif // QT_NO_STYLE_SGI diff --git a/src/styles/qwindowsstyle.cpp b/src/styles/qwindowsstyle.cpp index e716a53e7..5c5c996e5 100644 --- a/src/styles/qwindowsstyle.cpp +++ b/src/styles/qwindowsstyle.cpp @@ -66,10 +66,6 @@ #include "ntqobjectlist.h" #include "ntqmenubar.h" -#if defined(Q_WS_WIN) -#include "qt_windows.h" -#endif - #include <limits.h> @@ -143,7 +139,7 @@ bool TQWindowsStyle::Private::eventFilter(TQObject *o, TQEvent *e) while ( (w = (TQWidget*)it.current()) != 0 ) { ++it; if (w->isTopLevel() || !w->isVisible() || - w->style().styleHint(SH_UnderlineAccelerator, w)) + w->style().styleHint(SH_UnderlineAccelerator, TQStyleControlElementData(), CEF_None, w)) l->removeRef(w); } // Update states before repainting @@ -237,7 +233,7 @@ TQWindowsStyle::~TQWindowsStyle() void TQWindowsStyle::polish(TQApplication *app) { // We only need the overhead when shortcuts are sometimes hidden - if (!styleHint(SH_UnderlineAccelerator, 0)) { + if (!styleHint(SH_UnderlineAccelerator, TQStyleControlElementData(), CEF_None, 0)) { d = new Private(this); app->installEventFilter(d); } @@ -271,6 +267,8 @@ void TQWindowsStyle::polish( TQPalette &pal ) /*! \reimp */ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, TQPainter *p, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQRect &r, const TQColorGroup &cg, SFlags flags, @@ -315,31 +313,6 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, p->fillRect(r, fill); break; } -#if defined(Q_WS_WIN) - case PE_HeaderArrow: - p->save(); - if ( flags & Style_Up ) { // invert logic to follow Windows style guide - TQPointArray pa( 3 ); - p->setPen( cg.light() ); - p->drawLine( r.x() + r.width(), r.y(), r.x() + r.width() / 2, r.height() ); - p->setPen( cg.dark() ); - pa.setPoint( 0, r.x() + r.width() / 2, r.height() ); - pa.setPoint( 1, r.x(), r.y() ); - pa.setPoint( 2, r.x() + r.width(), r.y() ); - p->drawPolyline( pa ); - } else { - TQPointArray pa( 3 ); - p->setPen( cg.light() ); - pa.setPoint( 0, r.x(), r.height() ); - pa.setPoint( 1, r.x() + r.width(), r.height() ); - pa.setPoint( 2, r.x() + r.width() / 2, r.y() ); - p->drawPolyline( pa ); - p->setPen( cg.dark() ); - p->drawLine( r.x(), r.height(), r.x() + r.width() / 2, r.y() ); - } - p->restore(); - break; -#endif case PE_ButtonDefault: p->setPen(cg.shadow()); @@ -507,7 +480,7 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, case PE_Panel: case PE_PanelPopup: { - int lw = opt.isDefault() ? pixelMetric(PM_DefaultFrameWidth) + int lw = opt.isDefault() ? pixelMetric(PM_DefaultFrameWidth, ceData, elementFlags) : opt.lineWidth(); if (lw == 2) { @@ -518,7 +491,7 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, } qDrawWinPanel(p, r, popupCG, flags & Style_Sunken); } else { - TQCommonStyle::drawPrimitive(pe, p, r, cg, flags, opt); + TQCommonStyle::drawPrimitive(pe, p, ceData, elementFlags, r, cg, flags, opt); } break; } @@ -572,13 +545,13 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, p->setBrush( cg.brush( TQColorGroup::Button ) ); p->drawRect( r ); } else - drawPrimitive(PE_ButtonBevel, p, r, cg, flags | Style_Raised); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg, flags | Style_Raised); } else - drawPrimitive(PE_ButtonBevel, p, r, cg, (flags & Style_Enabled) | + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Down : Style_Raised)); drawPrimitive(((flags & Style_Horizontal) ? PE_ArrowLeft : PE_ArrowUp), - p, r, cg, flags); + p, ceData, elementFlags, r, cg, flags); break; case PE_ScrollBarAddLine: @@ -588,13 +561,13 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, p->setBrush( cg.brush( TQColorGroup::Button ) ); p->drawRect( r ); } else - drawPrimitive(PE_ButtonBevel, p, r, cg, flags | Style_Raised); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg, flags | Style_Raised); } else - drawPrimitive(PE_ButtonBevel, p, r, cg, (flags & Style_Enabled) | + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg, (flags & Style_Enabled) | ((flags & Style_Down) ? Style_Down : Style_Raised)); drawPrimitive(((flags & Style_Horizontal) ? PE_ArrowRight : PE_ArrowDown), - p, r, cg, flags); + p, ceData, elementFlags, r, cg, flags); break; case PE_ScrollBarAddPage: @@ -632,7 +605,7 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, p->setBackgroundMode(OpaqueMode); p->drawRect(r); } else - drawPrimitive(PE_ButtonBevel, p, r, cg, Style_Enabled | Style_Raised); + drawPrimitive(PE_ButtonBevel, p, ceData, elementFlags, r, cg, Style_Enabled | Style_Raised); break; case PE_WindowFrame: @@ -674,8 +647,8 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, p->save(); if ( flags & Style_Down ) - p->translate( pixelMetric( PM_ButtonShiftHorizontal ), - pixelMetric( PM_ButtonShiftVertical ) ); + p->translate( pixelMetric( PM_ButtonShiftHorizontal, ceData, elementFlags ), + pixelMetric( PM_ButtonShiftVertical, ceData, elementFlags ) ); if ( flags & Style_Enabled ) { a.translate( r.x() + r.width() / 2, r.y() + r.height() / 2 ); @@ -694,7 +667,7 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, } p->restore(); } else - TQCommonStyle::drawPrimitive(pe, p, r, cg, flags, opt); + TQCommonStyle::drawPrimitive(pe, p, ceData, elementFlags, r, cg, flags, opt); } } @@ -704,33 +677,34 @@ void TQWindowsStyle::drawPrimitive( PrimitiveElement pe, */ void TQWindowsStyle::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) { #ifndef QT_NO_TABBAR case CE_TabBarTab: { - 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(); bool selected = flags & 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.midlight() ); p->drawLine( r2.left(), r2.bottom(), r2.right(), r2.bottom() ); 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), @@ -774,9 +748,9 @@ void TQWindowsStyle::drawControl( ControlElement element, 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, tb ) == 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, widget ) == 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 )); @@ -823,7 +797,7 @@ void TQWindowsStyle::drawControl( ControlElement element, p->drawLine( r2.left(), r2.top() + (selected ? 0 : 2), r2.left(), r2.bottom() - 2 ); } else { - TQCommonStyle::drawControl(element, p, widget, r, cg, flags, opt); + TQCommonStyle::drawControl(element, p, ceData, elementFlags, r, cg, flags, opt, widget); } break; } @@ -838,10 +812,9 @@ void TQWindowsStyle::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; @@ -849,7 +822,7 @@ void TQWindowsStyle::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; @@ -937,7 +910,7 @@ void TQWindowsStyle::drawControl( ControlElement element, if (act) cflags |= Style_On; - drawPrimitive(PE_CheckMark, p, + drawPrimitive(PE_CheckMark, p, ceData, elementFlags, visualRect( TQRect(xp, y + windowsItemFrame, checkcol - 2*windowsItemFrame, h - 2*windowsItemFrame), r ), cg, cflags); @@ -973,7 +946,7 @@ void TQWindowsStyle::drawControl( ControlElement element, if ( !s.isNull() ) { // draw text int t = s.find( '\t' ); int text_flags = AlignVCenter|ShowPrefix | DontClip | SingleLine; - if (!styleHint(SH_UnderlineAccelerator, widget)) + if (!styleHint(SH_UnderlineAccelerator, ceData, elementFlags, TQStyleOption::Default, 0, widget)) text_flags |= NoAccel; text_flags |= (TQApplication::reverseLayout() ? AlignRight : AlignLeft ); if ( t >= 0 ) { // draw tab text @@ -1014,10 +987,10 @@ void TQWindowsStyle::drawControl( ControlElement element, if ( act ) { TQColorGroup g2 = cg; g2.setColor( TQColorGroup::ButtonText, g2.highlightedText() ); - drawPrimitive(arrow, p, vrect, + drawPrimitive(arrow, p, ceData, elementFlags, vrect, g2, dis ? Style_Default : Style_Enabled); } else { - drawPrimitive(arrow, p, vrect, + drawPrimitive(arrow, p, ceData, elementFlags, vrect, cg, dis ? Style_Default : Style_Enabled ); } } @@ -1042,17 +1015,17 @@ void TQWindowsStyle::drawControl( ControlElement element, qDrawShadeRect( p, r.x(), r.y(), r.width(), r.height(), cg, active && down, 1, 0, &b ); if ( active && down ) { - pr.moveBy( pixelMetric(PM_ButtonShiftHorizontal, widget), - pixelMetric(PM_ButtonShiftVertical, widget) ); + pr.moveBy( pixelMetric(PM_ButtonShiftHorizontal, ceData, elementFlags, widget), + pixelMetric(PM_ButtonShiftVertical, ceData, elementFlags, widget) ); p->setBrushOrigin(p->brushOrigin() - TQPoint(1,1)); } } - TQCommonStyle::drawControl(element, p, widget, pr, cg, flags, opt); + TQCommonStyle::drawControl(element, p, ceData, elementFlags, pr, 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); } } @@ -1060,7 +1033,7 @@ void TQWindowsStyle::drawControl( ControlElement element, /*! \reimp */ -int TQWindowsStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) const +int TQWindowsStyle::pixelMetric(PixelMetric metric, TQStyleControlElementData ceData, ControlElementFlags elementFlags, const TQWidget *widget) const { int ret; @@ -1085,10 +1058,9 @@ int TQWindowsStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) cons // equally between the tickmark regions. case PM_SliderControlThickness: { - const TQSlider * sl = (const TQSlider *) widget; - int space = (sl->orientation() == Horizontal) ? sl->height() - : sl->width(); - int ticks = sl->tickmarks(); + int space = (ceData.orientation == Horizontal) ? ceData.rect.height() + : ceData.rect.width(); + int ticks = ceData.tickMarkSetting; int n = 0; if ( ticks & TQSlider::Above ) n++; if ( ticks & TQSlider::Below ) n++; @@ -1099,7 +1071,7 @@ int TQWindowsStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) cons int thick = 6; // Magic constant to get 5 + 16 + 5 if ( ticks != TQSlider::Both && ticks != TQSlider::NoMarks ) - thick += pixelMetric( PM_SliderLength, sl ) / 4; + thick += pixelMetric( PM_SliderLength, ceData, elementFlags, widget ) / 4; space -= thick; //### the two sides may be unequal in size @@ -1114,46 +1086,12 @@ int TQWindowsStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) cons ret = 0; break; -#if defined(Q_WS_WIN) - case PM_TitleBarHeight: - if ( widget && ( widget->testWFlags( WStyle_Tool ) || ::tqt_cast<TQDockWindow*>(widget) ) ) { - // MS always use one less than they say -#if defined(Q_OS_TEMP) - ret = GetSystemMetrics( SM_CYCAPTION ) - 1; -#else - ret = GetSystemMetrics( SM_CYSMCAPTION ) - 1; -#endif - } else { - ret = GetSystemMetrics( SM_CYCAPTION ) - 1; - } - break; - - case PM_ScrollBarExtent: - { -#ifndef Q_OS_TEMP - NONCLIENTMETRICS ncm; - ncm.cbSize = sizeof(NONCLIENTMETRICS); - if ( SystemParametersInfo( SPI_GETNONCLIENTMETRICS, sizeof(NONCLIENTMETRICS), &ncm, 0 ) ) - ret = TQMAX( ncm.iScrollHeight, ncm.iScrollWidth ); - else -#endif - ret = TQCommonStyle::pixelMetric( metric, widget ); - } - break; -#endif - case PM_SplitterWidth: ret = TQMAX( 6, TQApplication::globalStrut().width() ); break; -#if defined(Q_WS_WIN) - case PM_MDIFrameWidth: - ret = GetSystemMetrics(SM_CYFRAME); - break; -#endif - default: - ret = TQCommonStyle::pixelMetric(metric, widget); + ret = TQCommonStyle::pixelMetric(metric, ceData, elementFlags, widget); break; } @@ -1165,9 +1103,11 @@ int TQWindowsStyle::pixelMetric(PixelMetric metric, const TQWidget *widget) cons \reimp */ TQSize TQWindowsStyle::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); @@ -1175,15 +1115,14 @@ TQSize TQWindowsStyle::sizeFromContents( ContentsType contents, case CT_PushButton: { #ifndef QT_NO_PUSHBUTTON - const TQPushButton *button = (const TQPushButton *) widget; - sz = TQCommonStyle::sizeFromContents(contents, widget, contentsSize, opt); + sz = TQCommonStyle::sizeFromContents(contents, ceData, elementFlags, contentsSize, opt, widget); int w = sz.width(), h = sz.height(); int defwidth = 0; - if (button->isDefault() || button->autoDefault()) - defwidth = 2*pixelMetric( PM_ButtonDefaultIndicator, widget ); + if ((elementFlags & CEF_IsDefault) || (elementFlags & CEF_AutoDefault)) + defwidth = 2*pixelMetric( PM_ButtonDefaultIndicator, ceData, elementFlags, widget ); - if (w < 80+defwidth && !button->pixmap()) + if (w < 80+defwidth && ceData.fgPixmap.isNull()) w = 80+defwidth; if (h < 23+defwidth) h = 23+defwidth; @@ -1196,11 +1135,10 @@ TQSize TQWindowsStyle::sizeFromContents( ContentsType contents, case CT_PopupMenuItem: { #ifndef QT_NO_POPUPMENU - if (! widget || opt.isDefault()) + if (( elementFlags & CEF_UseGenericParameters ) || opt.isDefault()) break; - const TQPopupMenu *popup = (const 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(); @@ -1218,7 +1156,7 @@ TQSize TQWindowsStyle::sizeFromContents( ContentsType contents, if (mi->pixmap()) h = TQMAX(h, mi->pixmap()->height() + 2*windowsItemFrame); else if (! mi->text().isNull()) - h = TQMAX(h, popup->fontMetrics().height() + 2*windowsItemVMargin + + h = TQMAX(h, TQFontMetrics(ceData.font).height() + 2*windowsItemVMargin + 2*windowsItemFrame); if (mi->iconSet() != 0) @@ -1256,7 +1194,7 @@ TQSize TQWindowsStyle::sizeFromContents( ContentsType contents, } default: - sz = TQCommonStyle::sizeFromContents(contents, widget, sz, opt); + sz = TQCommonStyle::sizeFromContents(contents, ceData, elementFlags, sz, opt, widget); break; } @@ -1556,8 +1494,10 @@ static const char *const question_xpm[] = { \reimp */ TQPixmap TQWindowsStyle::stylePixmap(StylePixmap stylepixmap, - const TQWidget *widget, - const TQStyleOption& opt) const + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, + const TQStyleOption& opt, + const TQWidget *widget) const { #ifndef QT_NO_IMAGEIO_XPM switch (stylepixmap) { @@ -1587,26 +1527,28 @@ TQPixmap TQWindowsStyle::stylePixmap(StylePixmap stylepixmap, break; } #endif //QT_NO_IMAGEIO_XPM - return TQCommonStyle::stylePixmap(stylepixmap, widget, opt); + return TQCommonStyle::stylePixmap(stylepixmap, ceData, elementFlags, opt, widget); } /*!\reimp */ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, 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 (ctrl) { #ifndef QT_NO_LISTVIEW case CC_ListView: { if ( sub & SC_ListView ) { - TQCommonStyle::drawComplexControl( ctrl, p, widget, r, cg, flags, sub, subActive, opt ); + TQCommonStyle::drawComplexControl( ctrl, p, ceData, elementFlags, r, cg, flags, sub, subActive, opt, widget ); } if ( sub & ( SC_ListViewBranch | SC_ListViewExpand ) ) { if (opt.isDefault()) @@ -1769,13 +1711,13 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, if ( sub & SC_ComboBoxArrow ) { SFlags flags = Style_Default; - qDrawWinPanel( p, r, cg, TRUE, widget->isEnabled() ? + qDrawWinPanel( p, r, cg, TRUE, ( elementFlags & CEF_IsEnabled ) ? &cg.brush( TQColorGroup::Base ): &cg.brush( TQColorGroup::Background ) ); TQRect ar = - TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, - SC_ComboBoxArrow ), widget ); + TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, + SC_ComboBoxArrow, TQStyleOption::Default, widget ), ceData, elementFlags ); if ( subActive == SC_ComboBoxArrow ) { p->setPen( cg.dark() ); p->setBrush( cg.brush( TQColorGroup::Button ) ); @@ -1785,25 +1727,24 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, &cg.brush( TQColorGroup::Button ) ); ar.addCoords( 2, 2, -2, -2 ); - if ( widget->isEnabled() ) + if ( elementFlags & CEF_IsEnabled ) flags |= Style_Enabled; if ( subActive == SC_ComboBoxArrow ) { flags |= Style_Sunken; } - drawPrimitive( PE_ArrowDown, p, ar, cg, flags ); + drawPrimitive( PE_ArrowDown, p, ceData, elementFlags, ar, cg, flags ); } if ( sub & SC_ComboBoxEditField ) { - const TQComboBox * cb = (const TQComboBox *) widget; TQRect re = - TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, widget, - SC_ComboBoxEditField ), widget ); - if ( cb->hasFocus() && !cb->editable() ) + TQStyle::visualRect( querySubControlMetrics( CC_ComboBox, ceData, elementFlags, + SC_ComboBoxEditField, TQStyleOption::Default, widget ), ceData, elementFlags ); + if ( ( elementFlags & CEF_HasFocus ) && (!( elementFlags & CEF_IsEditable )) ) p->fillRect( re.x(), re.y(), re.width(), re.height(), cg.brush( TQColorGroup::Highlight ) ); - if ( cb->hasFocus() ) { + if ( elementFlags & CEF_HasFocus ) { p->setPen( cg.highlightedText() ); p->setBackgroundColor( cg.highlight() ); @@ -1812,10 +1753,10 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, p->setBackgroundColor( cg.background() ); } - if ( cb->hasFocus() && !cb->editable() ) { + if ( ( elementFlags & CEF_HasFocus ) && (!( elementFlags & CEF_IsEditable )) ) { TQRect re = - TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, cb ), widget ); - drawPrimitive( PE_FocusRect, p, re, cg, Style_FocusAtBorder, TQStyleOption(cg.highlight())); + TQStyle::visualRect( subRect( SR_ComboBoxFocusRect, ceData, elementFlags, widget ), ceData, elementFlags ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, re, cg, Style_FocusAtBorder, TQStyleOption(cg.highlight())); } } @@ -1825,15 +1766,14 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, #ifndef QT_NO_SLIDER case CC_Slider: { - const TQSlider *sl = (const TQSlider *) widget; - int thickness = pixelMetric( PM_SliderControlThickness, widget ); - int len = pixelMetric( PM_SliderLength, widget ); - int ticks = sl->tickmarks(); + int thickness = pixelMetric( PM_SliderControlThickness, ceData, elementFlags, widget ); + int len = pixelMetric( PM_SliderLength, ceData, elementFlags, widget ); + int ticks = ceData.tickMarkSetting; - 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()) { int mid = thickness / 2; @@ -1844,7 +1784,7 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, mid -= len / 8; p->setPen( cg.shadow() ); - if ( sl->orientation() == Horizontal ) { + if ( ceData.orientation == Horizontal ) { qDrawWinPanel( p, groove.x(), groove.y() + mid - 2, groove.width(), 4, cg, TRUE ); p->drawLine( groove.x() + 1, groove.y() + mid - 1, @@ -1859,9 +1799,9 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, } if (sub & SC_SliderTickmarks) - TQCommonStyle::drawComplexControl(ctrl, p, widget, r, cg, flags, + TQCommonStyle::drawComplexControl(ctrl, p, ceData, elementFlags, r, cg, flags, SC_SliderTickmarks, subActive, - opt ); + opt, widget ); if ( sub & SC_SliderHandle ) { // 4444440 @@ -1887,15 +1827,15 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, int y1 = y; int y2 = y+he-1; - Orientation orient = sl->orientation(); - bool tickAbove = sl->tickmarks() == TQSlider::Above; - bool tickBelow = sl->tickmarks() == TQSlider::Below; + Orientation orient = ceData.orientation; + bool tickAbove = ceData.tickMarkSetting == TQSlider::Above; + bool tickBelow = ceData.tickMarkSetting == TQSlider::Below; p->fillRect( x, y, wi, he, cg.brush( TQColorGroup::Background ) ); if ( flags & Style_HasFocus ) { - TQRect re = subRect( SR_SliderFocusRect, sl ); - drawPrimitive( PE_FocusRect, p, re, cg ); + TQRect re = subRect( SR_SliderFocusRect, ceData, elementFlags, widget ); + drawPrimitive( PE_FocusRect, p, ceData, elementFlags, re, cg ); } if ( (tickAbove && tickBelow) || (!tickAbove && !tickBelow) ) { @@ -2032,8 +1972,8 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, #endif // QT_NO_SLIDER default: - TQCommonStyle::drawComplexControl( ctrl, p, widget, r, cg, flags, sub, - subActive, opt ); + TQCommonStyle::drawComplexControl( ctrl, p, ceData, elementFlags, r, cg, flags, sub, + subActive, opt, widget ); break; } } @@ -2041,9 +1981,11 @@ void TQWindowsStyle::drawComplexControl( ComplexControl ctrl, TQPainter *p, /*! \reimp */ int TQWindowsStyle::styleHint( StyleHint hint, - const TQWidget *widget, + TQStyleControlElementData ceData, + ControlElementFlags elementFlags, const TQStyleOption &opt, - TQStyleHintReturn *returnData ) const + TQStyleHintReturn *returnData, + const TQWidget *widget ) const { int ret; @@ -2063,11 +2005,6 @@ int TQWindowsStyle::styleHint( StyleHint hint, break; case SH_ItemView_ChangeHighlightOnFocus: -#if defined(Q_WS_WIN) - if ( qWinVersion() != WV_95 && qWinVersion() != WV_NT ) - ret = 1; - else -#endif ret = 0; break; @@ -2075,59 +2012,8 @@ int TQWindowsStyle::styleHint( StyleHint hint, ret = 0; break; -#if defined(Q_WS_WIN) - case SH_UnderlineAccelerator: - ret = 1; - if ( qWinVersion() != WV_95 && qWinVersion() != WV_98 && qWinVersion() != WV_NT ) { - BOOL cues; - SystemParametersInfo(SPI_GETKEYBOARDCUES, 0, &cues, 0); - ret = cues ? 1 : 0; - // Do nothing if we always paint underlines - if (!ret && widget && d) { - TQMenuBar *menuBar = ::tqt_cast<TQMenuBar*>(widget); - TQPopupMenu *popupMenu = 0; - if (!menuBar) - popupMenu = ::tqt_cast<TQPopupMenu*>(widget); - - // If we paint a menubar draw underlines if it has focus, or if alt is down, - // or if a popup menu belonging to the menubar is active and paints underlines - if (menuBar) { - if (menuBar->hasFocus()) { - ret = 1; - } else if (d->altDown()) { - ret = 1; - } else if (tqApp->focusWidget() && tqApp->focusWidget()->isPopup()) { - popupMenu = ::tqt_cast<TQPopupMenu*>(tqApp->focusWidget()); - TQMenuData *pm = popupMenu ? (TQMenuData*)popupMenu->tqt_cast("TQMenuData") : 0; - if (pm && ((FriendlyMenuData*)pm)->parentMenu == menuBar) { - if (d->hasSeenAlt(menuBar)) - ret = 1; - } - } - // If we paint a popup menu draw underlines if the respective menubar does - } else if (popupMenu) { - TQMenuData *pm = (TQMenuData*)popupMenu->tqt_cast("TQMenuData"); - while (pm) { - if (((FriendlyMenuData*)pm)->isMenuBar) { - menuBar = (TQMenuBar*)pm; - if (d->hasSeenAlt(menuBar)) - ret = 1; - break; - } - pm = ((FriendlyMenuData*)pm)->parentMenu; - } - // Otherwise draw underlines if the toplevel widget has seen an alt-press - } else if (d->hasSeenAlt(widget)) { - ret = 1; - } - } - - } - break; -#endif - default: - ret = TQCommonStyle::styleHint(hint, widget, opt, returnData); + ret = TQCommonStyle::styleHint(hint, ceData, elementFlags, opt, returnData, widget); break; } @@ -2135,7 +2021,7 @@ int TQWindowsStyle::styleHint( StyleHint hint, } /*! \reimp */ -TQRect TQWindowsStyle::subRect(SubRect r, const TQWidget *widget) const +TQRect TQWindowsStyle::subRect(SubRect r, const TQStyleControlElementData ceData, const ControlElementFlags elementFlags, const TQWidget *widget) const { TQRect rect; @@ -2143,15 +2029,15 @@ TQRect TQWindowsStyle::subRect(SubRect r, const TQWidget *widget) const #ifndef QT_NO_SLIDER case SR_SliderFocusRect: { - rect = widget->rect(); + rect = ceData.rect; break; } #endif // QT_NO_SLIDER case SR_ToolBoxTabContents: - rect = widget->rect(); + rect = ceData.rect; break; default: - rect = TQCommonStyle::subRect( r, widget ); + rect = TQCommonStyle::subRect( r, ceData, elementFlags, widget ); break; } |