Use internal Qt hover widget drawing

pull/16/head
Timothy Pearson 13 years ago
parent a151a4d477
commit 2ed8f9ade7

@ -2615,16 +2615,12 @@ void AsteroidStyle::paletteChanged()
bool AsteroidStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ) bool AsteroidStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e )
{ {
if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) {
TQObject* o = reinterpret_cast<TQObject*>(source);
/* Win2K has this interesting behaviour where it sets the current /* Win2K has this interesting behaviour where it sets the current
default button to whatever pushbutton the user presses the mouse default button to whatever pushbutton the user presses the mouse
on. I _think_ this emulates that properly. -clee */ on. I _think_ this emulates that properly. -clee */
if (o->inherits(TQPUSHBUTTON_OBJECT_NAME_STRING)) { if (ceData.widgetObjectTypes.contains(TQPUSHBUTTON_OBJECT_NAME_STRING)) {
if (e->type() == TQEvent::MouseButtonPress) { if (e->type() == TQEvent::MouseButtonPress) {
TQPushButton *pb = dynamic_cast<TQPushButton *>(o); widgetActionRequest(ceData, elementFlags, source, WAR_SetDefault);
pb->setDefault(TRUE);
}
} }
} }

@ -179,7 +179,6 @@ HighColorStyle::HighColorStyle( StyleType styleType )
type = styleType; type = styleType;
highcolor = (type == HighColor && TQPixmap::defaultDepth() > 8); highcolor = (type == HighColor && TQPixmap::defaultDepth() > 8);
gDict.setAutoDelete(true); gDict.setAutoDelete(true);
hoverWidget = 0L;
selectionBackground = false; selectionBackground = false;
} }
@ -1121,9 +1120,6 @@ void HighColorStyle::drawControl( TQ_ControlElement element,
// PUSHBUTTON // PUSHBUTTON
// ------------------------------------------------------------------- // -------------------------------------------------------------------
case CE_PushButton: { case CE_PushButton: {
if ( widget == hoverWidget )
flags |= Style_MouseOver;
if ( type != HighColor ) { if ( type != HighColor ) {
TQPushButton *button = (TQPushButton*) widget; TQPushButton *button = (TQPushButton*) widget;
TQRect br = r; TQRect br = r;
@ -1971,31 +1967,22 @@ bool HighColorStyle::objectEventHandler( TQStyleControlElementData ceData, Contr
if (KStyle::objectEventHandler( ceData, elementFlags, source, event )) if (KStyle::objectEventHandler( ceData, elementFlags, source, event ))
return true; return true;
if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) {
TQObject* object = reinterpret_cast<TQObject*>(source);
TQToolBar* toolbar; TQToolBar* toolbar;
// Handle push button hover effects. if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING))
TQPushButton* button = dynamic_cast<TQPushButton*>(object);
if ( button )
{ {
if ( (event->type() == TQEvent::Enter) && TQObject* object = reinterpret_cast<TQObject*>(source);
(button->isEnabled()) ) {
hoverWidget = button; if ( object->parent() && !qstrcmp( object->name(), kdeToolbarWidget ) )
button->repaint( false );
}
else if ( (event->type() == TQEvent::Leave) &&
(TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget)) ) {
hoverWidget = 0L;
button->repaint( false );
}
} else if ( object->parent() && !qstrcmp( object->name(), kdeToolbarWidget ) )
{ {
// Draw a gradient background for custom widgets in the toolbar // Draw a gradient background for custom widgets in the toolbar
// that have specified a "kde toolbar widget" name. // that have specified a "kde toolbar widget" name.
// FIXME
// This currently requires direct widget access
// Is there any way to do this without it?
if (event->type() == TQEvent::Paint ) { if (event->type() == TQEvent::Paint ) {
// Find the top-level toolbar of this widget, since it may be nested in other // Find the top-level toolbar of this widget, since it may be nested in other
// widgets that are on the toolbar. // widgets that are on the toolbar.
TQWidget *widget = TQT_TQWIDGET(object); TQWidget *widget = TQT_TQWIDGET(object);
@ -2027,7 +2014,12 @@ bool HighColorStyle::objectEventHandler( TQStyleControlElementData ceData, Contr
{ {
// We need to override the paint event to draw a // We need to override the paint event to draw a
// gradient on a QToolBarExtensionWidget. // gradient on a QToolBarExtensionWidget.
// FIXME
// This currently requires direct widget access
// Is there any way to do this without it?
if ( event->type() == TQEvent::Paint ) { if ( event->type() == TQEvent::Paint ) {
TQWidget *widget = TQT_TQWIDGET(object); TQWidget *widget = TQT_TQWIDGET(object);
TQRect wr = widget->rect(), tr = toolbar->rect(); TQRect wr = widget->rect(), tr = toolbar->rect();
TQPainter p( widget ); TQPainter p( widget );

@ -171,7 +171,6 @@ class HighColorStyle : public KStyle
int pwidth=-1, int pwidth=-1,
int pheight=-1 ) const; int pheight=-1 ) const;
TQWidget *hoverWidget;
StyleType type; StyleType type;
bool highcolor; bool highcolor;
mutable bool selectionBackground; mutable bool selectionBackground;

@ -118,7 +118,6 @@ HighContrastStyle::HighContrastStyle()
TQSettings settings; TQSettings settings;
settings.beginGroup("/highcontraststyle/Settings/"); settings.beginGroup("/highcontraststyle/Settings/");
bool useWideLines = settings.readBoolEntry("wideLines", false); bool useWideLines = settings.readBoolEntry("wideLines", false);
hoverWidget = 0L;
basicLineWidth = useWideLines ? 4 : 2; basicLineWidth = useWideLines ? 4 : 2;
} }
@ -665,9 +664,6 @@ void HighContrastStyle::drawKStylePrimitive (KStylePrimitive kpe,
const TQStyleOption &opt, const TQStyleOption &opt,
const TQWidget* widget ) const const TQWidget* widget ) const
{ {
if ( widget == hoverWidget )
flags |= Style_MouseOver;
switch ( kpe ) switch ( kpe )
{ {
// TOOLBAR HANDLE // TOOLBAR HANDLE
@ -760,9 +756,6 @@ void HighContrastStyle::drawControl (TQ_ControlElement element,
const TQStyleOption& opt, const TQStyleOption& opt,
const TQWidget *widget ) const const TQWidget *widget ) const
{ {
if ( widget == hoverWidget )
flags |= Style_MouseOver;
switch (element) switch (element)
{ {
// TABS // TABS
@ -1213,9 +1206,6 @@ void HighContrastStyle::drawComplexControl (TQ_ComplexControl control,
const TQStyleOption& opt, const TQStyleOption& opt,
const TQWidget *widget ) const const TQWidget *widget ) const
{ {
if ( widget == hoverWidget )
flags |= Style_MouseOver;
switch(control) switch(control)
{ {
// COMBOBOX // COMBOBOX
@ -1830,49 +1820,6 @@ TQRect HighContrastStyle::subRect (SubRect subrect, const TQStyleControlElementD
bool HighContrastStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *event ) bool HighContrastStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *event )
{ {
if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) {
TQObject* object = reinterpret_cast<TQObject*>(source);
TQWidget* widget = dynamic_cast<TQWidget*>(object);
if (widget)
{
// Handle hover effects.
if (event->type() == TQEvent::Enter
&& (widget->inherits (TQBUTTON_OBJECT_NAME_STRING)
|| widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING)
|| widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING)))
{
hoverWidget = widget;
widget->repaint (false);
}
else if (event->type() == TQEvent::Leave
&& (widget->inherits (TQBUTTON_OBJECT_NAME_STRING)
|| widget->inherits (TQCOMBOBOX_OBJECT_NAME_STRING)
|| widget->inherits (TQSPINWIDGET_OBJECT_NAME_STRING)))
{
if (TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget))
hoverWidget = 0L;
widget->repaint (false);
}
// Make sure the focus rectangle is shown correctly.
else if (event->type() == TQEvent::FocusIn || event->type() == TQEvent::FocusOut)
{
TQWidget* widgetparent = dynamic_cast<TQWidget*>(widget->parent());
while (widgetparent
&& ! widgetparent->inherits (TQCOMBOBOX_OBJECT_NAME_STRING)
&& ! widgetparent->inherits (TQSPINWIDGET_OBJECT_NAME_STRING))
{
widgetparent = dynamic_cast<TQWidget*>(widgetparent->parent());
}
if (widgetparent)
widgetparent->repaint (false);
else
widget->repaint (false);
}
}
}
return KStyle::objectEventHandler (ceData, elementFlags, source, event); return KStyle::objectEventHandler (ceData, elementFlags, source, event);
} }

@ -152,8 +152,6 @@ class HighContrastStyle : public KStyle
protected: protected:
virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e );
TQWidget *hoverWidget;
private: private:
void setColorsNormal (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const; void setColorsNormal (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const;
void setColorsButton (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const; void setColorsButton (TQPainter* p, const TQColorGroup& cg, int flags = Style_Enabled, int highlight = Style_Down|Style_MouseOver) const;

@ -284,7 +284,6 @@ KeramikStyle::KeramikStyle()
toolbarBlendWidget(0), titleBarMode(None), flatMode(false), customScrollMode(false), kickerMode(false) toolbarBlendWidget(0), titleBarMode(None), flatMode(false), customScrollMode(false), kickerMode(false)
{ {
forceSmallMode = false; forceSmallMode = false;
hoverWidget = 0;
TQSettings settings; TQSettings settings;
@ -1368,9 +1367,6 @@ void KeramikStyle::drawControl( TQ_ControlElement element,
if (isFormWidget(btn)) if (isFormWidget(btn))
formMode = true; formMode = true;
if ( widget == hoverWidget )
flags |= Style_MouseOver;
if ( btn->isFlat( ) ) if ( btn->isFlat( ) )
flatMode = true; flatMode = true;
@ -2037,9 +2033,6 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control,
if (toolbarMode) if (toolbarMode)
toolbarBlendWidget = widget; toolbarBlendWidget = widget;
if ( widget == hoverWidget )
flags |= Style_MouseOver;
drawPrimitive( PE_ButtonCommand, p2, ceData, elementFlags, br, cg, flags ); drawPrimitive( PE_ButtonCommand, p2, ceData, elementFlags, br, cg, flags );
toolbarBlendWidget = 0; toolbarBlendWidget = 0;
@ -2259,10 +2252,6 @@ void KeramikStyle::drawComplexControl( TQ_ComplexControl control,
if (active & SC_ToolButtonMenu) if (active & SC_ToolButtonMenu)
mflags |= Style_Down; mflags |= Style_Down;
if ( widget == hoverWidget )
bflags |= Style_MouseOver;
if (onToolbar && static_cast<TQToolBar*>(TQT_TQWIDGET(widget->parent()))->orientation() == Qt::Horizontal) if (onToolbar && static_cast<TQToolBar*>(TQT_TQWIDGET(widget->parent()))->orientation() == Qt::Horizontal)
bflags |= Style_Horizontal; bflags |= Style_Horizontal;
@ -2781,26 +2770,6 @@ bool KeramikStyle::objectEventHandler( TQStyleControlElementData ceData, Control
if ( !object->isWidgetType() ) return false; if ( !object->isWidgetType() ) return false;
//Clear hover highlight when needed
if ( (event->type() == TQEvent::Leave) && (TQT_BASE_OBJECT(object) == TQT_BASE_OBJECT(hoverWidget)) )
{
TQWidget* button = TQT_TQWIDGET(object);
hoverWidget = 0;
button->repaint( false );
return false;
}
//Hover highlight on buttons, toolbuttons and combos
if ( ::tqqt_cast<TQPushButton*>(object) || ::tqqt_cast<TQComboBox*>(object) || ::tqqt_cast<TQToolButton*>(object) )
{
if (event->type() == TQEvent::Enter && TQT_TQWIDGET(object)->isEnabled() )
{
hoverWidget = TQT_TQWIDGET(object);
hoverWidget->repaint( false );
}
return false;
}
//Combo line edits get special frames //Combo line edits get special frames
if ( event->type() == TQEvent::Paint && ::tqqt_cast<TQLineEdit*>(object) ) if ( event->type() == TQEvent::Paint && ::tqqt_cast<TQLineEdit*>(object) )
{ {

@ -204,9 +204,6 @@ private:
return maskMode?Keramik::TilePainter::PaintMask : Keramik::TilePainter::PaintFullBlend; return maskMode?Keramik::TilePainter::PaintMask : Keramik::TilePainter::PaintFullBlend;
} }
TQWidget* hoverWidget;
bool kickerMode; bool kickerMode;
// For progress bar animation // For progress bar animation

@ -156,10 +156,6 @@ PlastikStyle::PlastikStyle() : KStyle( AllowMenuTransparency, ThreeButtonScrollB
kornMode(false), kornMode(false),
flatMode(false) flatMode(false)
{ {
hoverWidget = 0;
hoverTab = 0;
horizontalLine = 0; horizontalLine = 0;
verticalLine = 0; verticalLine = 0;
@ -1835,7 +1831,7 @@ void PlastikStyle::drawPrimitive(TQ_PrimitiveElement pe,
// -------------- // --------------
case PE_Splitter: { case PE_Splitter: {
// highlight on mouse over // highlight on mouse over
TQColor color = (static_cast<TQPaintDevice*>(static_cast<TQWidget*>(hoverWidget)) == static_cast<TQPaintDevice*>(p->device()))?TQColor(cg.background().light(100+_contrast)):cg.background(); TQColor color = (mouseOver)?TQColor(cg.background().light(100+_contrast)):cg.background();
p->fillRect(r, color); p->fillRect(r, color);
if (w > h) { if (w > h) {
if (h > 4) { if (h > 4) {
@ -2316,9 +2312,10 @@ void PlastikStyle::drawControl(TQ_ControlElement element,
const TQTabWidget *tw = (const TQTabWidget*)tb->parent(); const TQTabWidget *tw = (const TQTabWidget*)tb->parent();
// is there a corner widget in the (top) left edge? // is there a corner widget in the (top) left edge?
TQWidget *cw = tw->cornerWidget(TQt::TopLeft); TQWidget *cw = tw->cornerWidget(TQt::TopLeft);
if(cw) if(cw) {
cornerWidget = true; cornerWidget = true;
} }
}
TQTabBar::Shape tbs = tb->shape(); TQTabBar::Shape tbs = tb->shape();
bool selected = false; bool selected = false;
if (flags & Style_Selected) selected = true; if (flags & Style_Selected) selected = true;
@ -2334,7 +2331,7 @@ void PlastikStyle::drawControl(TQ_ControlElement element,
} }
bool mouseOver = false; bool mouseOver = false;
if (opt.tab() == hoverTab) { if (opt.tab() == opt.hoverTab()) {
mouseOver = true; mouseOver = true;
flags |= Style_MouseOver; flags |= Style_MouseOver;
} }
@ -2369,9 +2366,6 @@ void PlastikStyle::drawControl(TQ_ControlElement element,
if (button->isFlat() ) if (button->isFlat() )
flatMode = true; flatMode = true;
if (widget == hoverWidget)
flags |= Style_MouseOver;
TQColorGroup g2 = cg; TQColorGroup g2 = cg;
if (isDefault) if (isDefault)
g2.setColor(TQColorGroup::Background, cg.background().dark(120) ); g2.setColor(TQColorGroup::Background, cg.background().dark(120) );
@ -2872,7 +2866,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control,
surfaceFlags |= Round_UpperRight|Round_BottomRight; surfaceFlags |= Round_UpperRight|Round_BottomRight;
} }
if ((widget == hoverWidget) || (flags & Style_MouseOver)) { if (flags & Style_MouseOver) {
surfaceFlags |= Is_Highlight; surfaceFlags |= Is_Highlight;
if(editable) surfaceFlags |= Highlight_Left|Highlight_Right; if(editable) surfaceFlags |= Highlight_Left|Highlight_Right;
surfaceFlags |= Highlight_Top|Highlight_Bottom; surfaceFlags |= Highlight_Top|Highlight_Bottom;
@ -2889,7 +2883,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control,
surfaceFlags |= Round_UpperLeft|Round_BottomLeft; surfaceFlags |= Round_UpperLeft|Round_BottomLeft;
} }
if ((widget == hoverWidget) || (flags & Style_MouseOver)) { if (flags & Style_MouseOver) {
surfaceFlags |= Is_Highlight; surfaceFlags |= Is_Highlight;
surfaceFlags |= Highlight_Top|Highlight_Bottom; surfaceFlags |= Highlight_Top|Highlight_Bottom;
} }
@ -2974,7 +2968,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control,
if (controls & SC_ToolButton) { if (controls & SC_ToolButton) {
// If we're pressed, on, or raised... // If we're pressed, on, or raised...
if (bflags & (Style_Down | Style_On | Style_Raised) || widget==hoverWidget ) { if (bflags & (Style_Down | Style_On | Style_Raised) || (flags & Style_MouseOver) ) {
drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt); drawPrimitive(PE_ButtonTool, p, ceData, elementFlags, button, cg, bflags, opt);
} else if (tb->parentWidget() && } else if (tb->parentWidget() &&
tb->parentWidget()->backgroundPixmap() && tb->parentWidget()->backgroundPixmap() &&
@ -3084,7 +3078,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control,
} else { } else {
surfaceFlags |= Round_UpperRight; surfaceFlags |= Round_UpperRight;
} }
if ((widget == hoverWidget) || (sflags & Style_MouseOver)) { if (sflags & Style_MouseOver) {
surfaceFlags |= Is_Highlight; surfaceFlags |= Is_Highlight;
surfaceFlags |= Highlight_Top|Highlight_Left|Highlight_Right; surfaceFlags |= Highlight_Top|Highlight_Left|Highlight_Right;
} }
@ -3098,7 +3092,7 @@ void PlastikStyle::drawComplexControl(TQ_ComplexControl control,
} else { } else {
surfaceFlags |= Round_BottomRight; surfaceFlags |= Round_BottomRight;
} }
if ((widget == hoverWidget) || (sflags & Style_MouseOver)) { if (sflags & Style_MouseOver) {
surfaceFlags |= Is_Highlight; surfaceFlags |= Is_Highlight;
surfaceFlags |= Highlight_Bottom|Highlight_Left|Highlight_Right; surfaceFlags |= Highlight_Bottom|Highlight_Left|Highlight_Right;
} }
@ -3488,83 +3482,6 @@ bool PlastikStyle::objectEventHandler( TQStyleControlElementData ceData, Control
if (!obj->isWidgetType() ) return false; if (!obj->isWidgetType() ) return false;
// focus highlight
if ( ::tqqt_cast<TQLineEdit*>(obj) ) {
TQWidget* widget = TQT_TQWIDGET(obj);
if ( ::tqqt_cast<TQSpinWidget*>(widget->parentWidget()) )
{
TQWidget* spinbox = widget->parentWidget();
if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut))
{
spinbox->repaint(false);
}
return false;
}
if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut))
{
widget->repaint(false);
}
return false;
}
//Hover highlight... use tqqt_cast to check if the widget inheits one of the classes.
if ( ::tqqt_cast<TQPushButton*>(obj) || ::tqqt_cast<TQComboBox*>(obj) ||
::tqqt_cast<TQSpinWidget*>(obj) || ::tqqt_cast<TQCheckBox*>(obj) ||
::tqqt_cast<TQRadioButton*>(obj) || ::tqqt_cast<TQToolButton*>(obj) || obj->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) )
{
if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled())
{
TQWidget* button = TQT_TQWIDGET(obj);
hoverWidget = button;
button->repaint(false);
}
else if ((ev->type() == TQEvent::Leave) && (TQT_BASE_OBJECT(obj) == TQT_BASE_OBJECT(hoverWidget)) )
{
TQWidget* button = TQT_TQWIDGET(obj);
hoverWidget = 0;
button->repaint(false);
}
return false;
}
if ( ::tqqt_cast<TQTabBar*>(obj) ) {
if ((ev->type() == TQEvent::Enter) && TQT_TQWIDGET(obj)->isEnabled())
{
TQWidget* tabbar = TQT_TQWIDGET(obj);
hoverWidget = tabbar;
hoverTab = 0;
tabbar->repaint(false);
}
else if (ev->type() == TQEvent::MouseMove)
{
TQTabBar *tabbar = dynamic_cast<TQTabBar*>(obj);
TQMouseEvent *me = dynamic_cast<TQMouseEvent*>(ev);
if (tabbar && me) {
// avoid unnecessary repaints (which otherwise would occour on every
// MouseMove event causing high cpu load).
bool repaint = true;
TQTab *tab = tabbar->selectTab(me->pos() );
if (hoverTab == tab)
repaint = false;
hoverTab = tab;
if (repaint)
tabbar->repaint(false);
}
}
else if (ev->type() == TQEvent::Leave)
{
TQWidget* tabbar = TQT_TQWIDGET(obj);
hoverWidget = 0;
hoverTab = 0;
tabbar->repaint(false);
}
return false;
}
// Track show events for progress bars // Track show events for progress bars
if ( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(obj) ) if ( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(obj) )
{ {

@ -268,7 +268,6 @@ protected:
virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e ); virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e );
TQWidget* hoverWidget;
protected slots: protected slots:
void khtmlWidgetDestroyed(TQObject* w); void khtmlWidgetDestroyed(TQObject* w);
@ -301,8 +300,6 @@ private:
TQColor _focusHighlightColor; TQColor _focusHighlightColor;
TQColor _checkMarkColor; TQColor _checkMarkColor;
TQTab *hoverTab;
// track khtml widgets. // track khtml widgets.
TQMap<const TQWidget*,bool> khtmlWidgets; TQMap<const TQWidget*,bool> khtmlWidgets;

Loading…
Cancel
Save