summaryrefslogtreecommitdiffstats
path: root/src/styles/qwindowsstyle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/styles/qwindowsstyle.cpp')
-rw-r--r--src/styles/qwindowsstyle.cpp420
1 files changed, 129 insertions, 291 deletions
diff --git a/src/styles/qwindowsstyle.cpp b/src/styles/qwindowsstyle.cpp
index e716a53e..5a1289dc 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>
@@ -99,99 +95,42 @@ class TQWindowsStyle::Private : public TQObject
public:
Private(TQWindowsStyle *parent);
- bool hasSeenAlt(const TQWidget *widget) const;
- bool altDown() const { return alt_down; }
-
-protected:
- bool eventFilter(TQObject *o, TQEvent *e);
+ bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e );
private:
- TQPtrList<TQWidget> seenAlt;
- bool alt_down;
int menuBarTimer;
};
TQWindowsStyle::Private::Private(TQWindowsStyle *parent)
-: TQObject(parent, "TQWindowsStylePrivate"), alt_down(FALSE), menuBarTimer(0)
+: TQObject(parent, "TQWindowsStylePrivate"), menuBarTimer(0)
{
}
-// Returns true if the toplevel parent of \a widget has seen the Alt-key
-bool TQWindowsStyle::Private::hasSeenAlt(const TQWidget *widget) const
-{
- widget = widget->topLevelWidget();
- return seenAlt.contains(widget);
-}
-
// Records Alt- and Focus events
-bool TQWindowsStyle::Private::eventFilter(TQObject *o, TQEvent *e)
+bool TQWindowsStyle::Private::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags, void* source, TQEvent *e )
{
- if (!o->isWidgetType())
- return TQObject::eventFilter(o, e);
+ if (!(ceData.widgetObjectTypes.contains("TQWidget"))) {
+ return TRUE;
+ }
- TQWidget *widget = ::tqt_cast<TQWidget*>(o);
+ TQWidget *widget = reinterpret_cast<TQWidget*>(source);
switch(e->type()) {
- case TQEvent::KeyPress:
- if (((TQKeyEvent*)e)->key() == Key_Alt) {
- widget = widget->topLevelWidget();
-
- // Alt has been pressed - find all widgets that care
- TQObjectList *l = widget->queryList("TQWidget");
- TQObjectListIt it( *l );
- TQWidget *w;
- while ( (w = (TQWidget*)it.current()) != 0 ) {
- ++it;
- if (w->isTopLevel() || !w->isVisible() ||
- w->style().styleHint(SH_UnderlineAccelerator, w))
- l->removeRef(w);
- }
- // Update states before repainting
- seenAlt.append(widget);
- alt_down = TRUE;
-
- // Repaint all relevant widgets
- it.toFirst();
- while ( (w = (TQWidget*)it.current()) != 0 ) {
- ++it;
- w->repaint(FALSE);
- }
- delete l;
- }
- break;
- case TQEvent::KeyRelease:
- if (((TQKeyEvent*)e)->key() == Key_Alt) {
- widget = widget->topLevelWidget();
-
- // Update state
- alt_down = FALSE;
- // Repaint only menubars
- TQObjectList *l = widget->queryList("TQMenuBar");
- TQObjectListIt it( *l );
- TQMenuBar *menuBar;
- while ( (menuBar = (TQMenuBar*)it.current()) != 0) {
- ++it;
- menuBar->repaint(FALSE);
- }
- }
- break;
case TQEvent::FocusIn:
case TQEvent::FocusOut:
{
// Menubars toggle based on focus
- TQMenuBar *menuBar = ::tqt_cast<TQMenuBar*>(o);
+ TQMenuBar *menuBar = ::tqt_cast<TQMenuBar*>(widget);
if (menuBar && !menuBarTimer) // delayed repaint to avoid flicker
menuBarTimer = menuBar->startTimer(0);
}
break;
case TQEvent::Close:
// Reset widget when closing
- seenAlt.removeRef(widget);
- seenAlt.removeRef(widget->topLevelWidget());
break;
case TQEvent::Timer:
{
- TQMenuBar *menuBar = ::tqt_cast<TQMenuBar*>(o);
+ TQMenuBar *menuBar = ::tqt_cast<TQMenuBar*>(widget);
TQTimerEvent *te = (TQTimerEvent*)e;
if (menuBar && te->timerId() == menuBarTimer) {
menuBar->killTimer(te->timerId());
@@ -205,7 +144,7 @@ bool TQWindowsStyle::Private::eventFilter(TQObject *o, TQEvent *e)
break;
}
- return TQObject::eventFilter(o, e);
+ return TRUE;
}
/*!
@@ -234,32 +173,40 @@ TQWindowsStyle::~TQWindowsStyle()
}
/*! \reimp */
-void TQWindowsStyle::polish(TQApplication *app)
+bool TQWindowsStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ) {
+ if (d) {
+ return d->objectEventHandler(ceData, elementFlags, source, e);
+ }
+ return TRUE;
+}
+
+/*! \reimp */
+void TQWindowsStyle::applicationPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr)
{
// We only need the overhead when shortcuts are sometimes hidden
- if (!styleHint(SH_UnderlineAccelerator, 0)) {
+ if (styleHint(SH_UnderlineAccelerator, TQStyleControlElementData(), CEF_None, 0) && styleHint(SH_HideUnderlineAcceleratorWhenAltUp, TQStyleControlElementData(), CEF_None, 0)) {
d = new Private(this);
- app->installEventFilter(d);
+ installObjectEventHandler(ceData, elementFlags, ptr, this);
}
}
/*! \reimp */
-void TQWindowsStyle::unPolish(TQApplication *)
+void TQWindowsStyle::applicationUnPolish(TQStyleControlElementData, ControlElementFlags, void *)
{
delete d;
d = 0;
}
/*! \reimp */
-void TQWindowsStyle::polish(TQWidget *widget)
+void TQWindowsStyle::polish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr)
{
- TQCommonStyle::polish(widget);
+ TQCommonStyle::polish(ceData, elementFlags, ptr);
}
/*! \reimp */
-void TQWindowsStyle::unPolish(TQWidget *widget)
+void TQWindowsStyle::unPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr)
{
- TQCommonStyle::polish(widget);
+ TQCommonStyle::polish(ceData, elementFlags, ptr);
}
/*! \reimp */
@@ -271,6 +218,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 +264,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 +431,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 +442,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 +496,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 +512,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 +556,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 +598,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 +618,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 +628,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 +699,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 +748,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 +763,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 +773,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 +861,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,8 +897,9 @@ 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)) || ((styleHint(SH_HideUnderlineAcceleratorWhenAltUp, ceData, elementFlags, TQStyleOption::Default, 0, widget)) && (!acceleratorsShown()))) {
text_flags |= NoAccel;
+ }
text_flags |= (TQApplication::reverseLayout() ? AlignRight : AlignLeft );
if ( t >= 0 ) { // draw tab text
int xp = x + w - tab - windowsItemHMargin - windowsItemFrame + 1;
@@ -1014,10 +939,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 +967,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 +985,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 +1010,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 +1023,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 +1038,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 +1055,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 +1067,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 +1087,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 +1108,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 +1146,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 +1446,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 +1479,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 +1663,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 +1679,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 +1705,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 +1718,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 +1736,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 +1751,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 +1779,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 +1924,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 +1933,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 +1957,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 +1964,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 +1973,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 +1981,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;
}