TQStyle API update

pull/1/head
Timothy Pearson 12 years ago
parent b80c68a29b
commit 71dde9e35e

@ -278,101 +278,112 @@ LipstikStyle::~LipstikStyle()
delete verticalLine; delete verticalLine;
} }
void LipstikStyle::polish(TQApplication* app) void LipstikStyle::applicationPolish(TQStyleControlElementData ceData, ControlElementFlags, void *ptr)
{ {
if (!qstrcmp(app->argv()[0], "kicker")) if (ceData.widgetObjectTypes.contains(TQAPPLICATION_OBJECT_NAME_STRING)) {
kickerMode = true; TQApplication *app = reinterpret_cast<TQApplication*>(ptr);
else if (!qstrcmp(app->argv()[0], "korn")) if (!qstrcmp(app->argv()[0], "kicker"))
kornMode = true; kickerMode = true;
else if (!qstrcmp(app->argv()[0], "korn"))
kornMode = true;
}
} }
void LipstikStyle::polish(TQWidget* widget) void LipstikStyle::polish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr)
{ {
if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) {
khtmlWidgets[widget] = true; TQWidget *widget = reinterpret_cast<TQWidget*>(ptr);
connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(khtmlWidgetDestroyed(TQObject*)));
}
// use tqt_cast where possible to check if the widget inheits one of the classes. might improve if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...?
// performance compared to TQObject::inherits() khtmlWidgets[widget] = true;
if ( ::tqqt_cast<TQPushButton*>(widget) || ::tqqt_cast<TQComboBox*>(widget) || connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(khtmlWidgetDestroyed(TQObject*)));
::tqqt_cast<TQSpinWidget*>(widget) || ::tqqt_cast<TQSlider*>(widget) || }
::tqqt_cast<TQCheckBox*>(widget) || ::tqqt_cast<TQRadioButton*>(widget) ||
::tqqt_cast<TQToolButton*>(widget)
)
{
widget->installEventFilter(this);
} else if (::tqqt_cast<TQTabBar*>(widget)) {
widget->setMouseTracking(true);
widget->installEventFilter(this);
} else if (::tqqt_cast<TQPopupMenu*>(widget)) {
widget->setBackgroundMode( NoBackground );
} else if(::tqqt_cast<TQScrollBar*>(widget)) {
widget->setMouseTracking(true);
widget->installEventFilter(this);
} else if (widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) || widget->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) ) {
widget->installEventFilter(this);
} else if (::tqqt_cast<TQLineEdit*>(widget)) {
widget->installEventFilter(this);
} else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) {
widget->installEventFilter(this);
}
if( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(widget) ) { // use tqt_cast where possible to check if the widget inheits one of the classes. might improve
widget->installEventFilter(this); // performance compared to TQObject::inherits()
progAnimWidgets[widget] = 0; if ( ::tqqt_cast<TQPushButton*>(widget) || ::tqqt_cast<TQComboBox*>(widget) ||
connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(progressBarDestroyed(TQObject*))); ::tqqt_cast<TQSpinWidget*>(widget) || ::tqqt_cast<TQSlider*>(widget) ||
if (!animationTimer->isActive()) ::tqqt_cast<TQCheckBox*>(widget) || ::tqqt_cast<TQRadioButton*>(widget) ||
animationTimer->start( 50, false ); ::tqqt_cast<TQToolButton*>(widget)
} else if( !qstrcmp(widget->className(), "KonqFrameStatusBar") ) { )
// This disables the white background of the KonquerorFrameStatusBar. {
// When the green led is shown the background is set to installObjectEventHandler(ceData, elementFlags, ptr, this);
// applications cg.midlight() so we override it to standard background. } else if (::tqqt_cast<TQTabBar*>(widget)) {
// Thanks Comix! (because this was ugly from day one!) widget->setMouseTracking(true);
// NOTE: Check if we can set it earlier (before painting), cause installObjectEventHandler(ceData, elementFlags, ptr, this);
// on slow machines we can see the repainting of the bar (from white to background...) } else if (::tqqt_cast<TQPopupMenu*>(widget)) {
TQPalette kPalette = TQApplication::palette(); widget->setBackgroundMode( NoBackground );
kPalette.setColor( TQColorGroup::Midlight,kPalette.active().background() ); } else if(::tqqt_cast<TQScrollBar*>(widget)) {
TQApplication::setPalette( kPalette ); widget->setMouseTracking(true);
installObjectEventHandler(ceData, elementFlags, ptr, this);
} else if (widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) || widget->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) ) {
installObjectEventHandler(ceData, elementFlags, ptr, this);
} else if (::tqqt_cast<TQLineEdit*>(widget)) {
installObjectEventHandler(ceData, elementFlags, ptr, this);
} else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) {
installObjectEventHandler(ceData, elementFlags, ptr, this);
}
if( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(widget) ) {
installObjectEventHandler(ceData, elementFlags, ptr, this);
progAnimWidgets[widget] = 0;
connect(widget, TQT_SIGNAL(destroyed(TQObject*)), this, TQT_SLOT(progressBarDestroyed(TQObject*)));
if (!animationTimer->isActive())
animationTimer->start( 50, false );
} else if( !qstrcmp(widget->className(), "KonqFrameStatusBar") ) {
// This disables the white background of the KonquerorFrameStatusBar.
// When the green led is shown the background is set to
// applications cg.midlight() so we override it to standard background.
// Thanks Comix! (because this was ugly from day one!)
// NOTE: Check if we can set it earlier (before painting), cause
// on slow machines we can see the repainting of the bar (from white to background...)
TQPalette kPalette = TQApplication::palette();
kPalette.setColor( TQColorGroup::Midlight,kPalette.active().background() );
TQApplication::setPalette( kPalette );
}
} }
KStyle::polish(widget); KStyle::polish(ceData, elementFlags, ptr);
} }
void LipstikStyle::unPolish(TQWidget* widget) void LipstikStyle::unPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *ptr)
{ {
if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...? if (ceData.widgetObjectTypes.contains(TQWIDGET_OBJECT_NAME_STRING)) {
khtmlWidgets.remove(widget); TQWidget *widget = reinterpret_cast<TQWidget*>(ptr);
}
// use tqt_cast to check if the widget inheits one of the classes. if( !strcmp(widget->name(), "__khtml") ) { // is it a khtml widget...?
if ( ::tqqt_cast<TQPushButton*>(widget) || ::tqqt_cast<TQComboBox*>(widget) || khtmlWidgets.remove(widget);
::tqqt_cast<TQSpinWidget*>(widget) || ::tqqt_cast<TQSlider*>(widget) || }
::tqqt_cast<TQCheckBox*>(widget) || ::tqqt_cast<TQRadioButton*>(widget) ||
::tqqt_cast<TQToolButton*>(widget) || ::tqqt_cast<TQLineEdit*>(widget) ||
widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) )
{
widget->removeEventFilter(this);
}
else if (::tqqt_cast<TQTabBar*>(widget)) {
widget->setMouseTracking(false);
widget->removeEventFilter(this);
} else if (::tqqt_cast<TQScrollBar*>(widget)) {
widget->setMouseTracking(false);
widget->removeEventFilter(this);
} else if (::tqqt_cast<TQPopupMenu*>(widget)) {
widget->setBackgroundMode( PaletteBackground );
} else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) {
widget->removeEventFilter(this);
}
if ( ::tqqt_cast<TQProgressBar*>(widget) ) { // use tqt_cast to check if the widget inheits one of the classes.
progAnimWidgets.remove(widget); if ( ::tqqt_cast<TQPushButton*>(widget) || ::tqqt_cast<TQComboBox*>(widget) ||
} else if( widget->inherits("KonqFrameStatusBar") ) { ::tqqt_cast<TQSpinWidget*>(widget) || ::tqqt_cast<TQSlider*>(widget) ||
widget->removeEventFilter(this); ::tqqt_cast<TQCheckBox*>(widget) || ::tqqt_cast<TQRadioButton*>(widget) ||
::tqqt_cast<TQToolButton*>(widget) || ::tqqt_cast<TQLineEdit*>(widget) ||
widget->inherits(TQSPLITTERHANDLE_OBJECT_NAME_STRING) )
{
removeObjectEventHandler(ceData, elementFlags, ptr, this);
}
else if (::tqqt_cast<TQTabBar*>(widget)) {
widget->setMouseTracking(false);
removeObjectEventHandler(ceData, elementFlags, ptr, this);
} else if (::tqqt_cast<TQScrollBar*>(widget)) {
widget->setMouseTracking(false);
removeObjectEventHandler(ceData, elementFlags, ptr, this);
} else if (::tqqt_cast<TQPopupMenu*>(widget)) {
widget->setBackgroundMode( PaletteBackground );
} else if ( !qstrcmp(widget->name(), "kde toolbar widget") ) {
removeObjectEventHandler(ceData, elementFlags, ptr, this);
}
if ( ::tqqt_cast<TQProgressBar*>(widget) ) {
progAnimWidgets.remove(widget);
} else if( widget->inherits("KonqFrameStatusBar") ) {
removeObjectEventHandler(ceData, elementFlags, ptr, this);
}
} }
KStyle::unPolish(widget); KStyle::unPolish(ceData, elementFlags, ptr);
} }
void LipstikStyle::khtmlWidgetDestroyed(TQObject* obj) void LipstikStyle::khtmlWidgetDestroyed(TQObject* obj)
@ -3958,106 +3969,110 @@ int LipstikStyle::styleHint( StyleHint stylehint,
} }
} }
bool LipstikStyle::eventFilter(TQObject *obj, TQEvent *ev) bool LipstikStyle::objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *ev )
{ {
if (KStyle::eventFilter(obj, ev) ) if (KStyle::objectEventHandler(ceData, elementFlags, source, ev) )
return true; return true;
if (!obj->isWidgetType() ) return false; if (ceData.widgetObjectTypes.contains(TQOBJECT_OBJECT_NAME_STRING)) {
TQObject* obj = reinterpret_cast<TQObject*>(source);
// focus highlight if (!obj->isWidgetType() ) return false;
if ( ::tqqt_cast<TQLineEdit*>(obj) ) {
TQWidget* widget = TQT_TQWIDGET(obj);
if ( ::tqqt_cast<TQSpinWidget*>(widget->parentWidget()) ) // focus highlight
{ if ( ::tqqt_cast<TQLineEdit*>(obj) ) {
TQWidget* spinbox = widget->parentWidget(); TQWidget* widget = TQT_TQWIDGET(obj);
if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut))
{
spinbox->repaint(false);
}
return false;
}
if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut)) if ( ::tqqt_cast<TQSpinWidget*>(widget->parentWidget()) )
{ {
widget->repaint(false); TQWidget* spinbox = widget->parentWidget();
} if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut))
return false; {
} spinbox->repaint(false);
}
return false;
}
//Hover highlight... use tqt_cast to check if the widget inheits one of the classes. if ((ev->type() == TQEvent::FocusIn) || (ev->type() == TQEvent::FocusOut))
if ( ::tqqt_cast<TQPushButton*>(obj) || ::tqqt_cast<TQComboBox*>(obj) || {
::tqqt_cast<TQSpinWidget*>(obj) || ::tqqt_cast<TQCheckBox*>(obj) || widget->repaint(false);
::tqqt_cast<TQRadioButton*>(obj) || ::tqqt_cast<TQToolButton*>(obj) || }
::tqqt_cast<TQSlider*>(obj) || ::tqqt_cast<TQScrollBar*>(obj) || return false;
obj->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) || 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) { //Hover highlight... use tqt_cast to check if the widget inheits one of the classes.
// avoid unnecessary repaints (which otherwise would occour on every if ( ::tqqt_cast<TQPushButton*>(obj) || ::tqqt_cast<TQComboBox*>(obj) ||
// MouseMove event causing high cpu load). ::tqqt_cast<TQSpinWidget*>(obj) || ::tqqt_cast<TQCheckBox*>(obj) ||
::tqqt_cast<TQRadioButton*>(obj) || ::tqqt_cast<TQToolButton*>(obj) ||
::tqqt_cast<TQSlider*>(obj) || ::tqqt_cast<TQScrollBar*>(obj) ||
obj->inherits(TQDOCKWINDOWHANDLE_OBJECT_NAME_STRING) || 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);
bool repaint = true; if (tabbar && me) {
// avoid unnecessary repaints (which otherwise would occour on every
// MouseMove event causing high cpu load).
TQTab *tab = tabbar->selectTab(me->pos() ); bool repaint = true;
if (hoverTab == tab)
repaint = false;
hoverTab = tab;
if (repaint) TQTab *tab = tabbar->selectTab(me->pos() );
tabbar->repaint(false); if (hoverTab == tab)
} repaint = false;
} hoverTab = tab;
else if (ev->type() == TQEvent::Leave)
{ if (repaint)
TQWidget* tabbar = TQT_TQWIDGET(obj); tabbar->repaint(false);
hoverWidget = 0; }
hoverTab = 0; }
tabbar->repaint(false); else if (ev->type() == TQEvent::Leave)
} {
return false; TQWidget* tabbar = TQT_TQWIDGET(obj);
} hoverWidget = 0;
// Track show events for progress bars hoverTab = 0;
if ( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(obj) ) tabbar->repaint(false);
{ }
if ((ev->type() == TQEvent::Show) && !animationTimer->isActive()) return false;
{ }
animationTimer->start( 50, false ); // Track show events for progress bars
} if ( _animateProgressBar && ::tqqt_cast<TQProgressBar*>(obj) )
} {
if ( !qstrcmp(obj->name(), "kde toolbar widget") ) if ((ev->type() == TQEvent::Show) && !animationTimer->isActive())
{ {
TQWidget* lb = TQT_TQWIDGET(obj); animationTimer->start( 50, false );
if (lb->backgroundMode() == TQt::PaletteButton) }
lb->setBackgroundMode(TQt::PaletteBackground); }
lb->removeEventFilter(this); if ( !qstrcmp(obj->name(), "kde toolbar widget") )
{
TQWidget* lb = TQT_TQWIDGET(obj);
if (lb->backgroundMode() == TQt::PaletteButton)
lb->setBackgroundMode(TQt::PaletteBackground);
removeObjectEventHandler(ceData, elementFlags, source, this);
}
} }
return false; return false;

@ -69,9 +69,9 @@ public:
LipstikStyle(); LipstikStyle();
virtual ~LipstikStyle(); virtual ~LipstikStyle();
void polish(TQApplication* app ); void applicationPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *);
void polish(TQWidget* widget ); void polish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *);
void unPolish(TQWidget* widget ); void unPolish(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void *);
void drawKStylePrimitive(KStylePrimitive kpe, void drawKStylePrimitive(KStylePrimitive kpe,
TQPainter* p, TQPainter* p,
@ -276,7 +276,7 @@ protected:
virtual void renderMenuBlendPixmap( KPixmap& pix, const TQColorGroup& cg, virtual void renderMenuBlendPixmap( KPixmap& pix, const TQColorGroup& cg,
const TQPopupMenu* popup ) const; const TQPopupMenu* popup ) const;
bool eventFilter(TQObject *, TQEvent *); virtual bool objectEventHandler( TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, TQEvent *e );
TQWidget* hoverWidget; TQWidget* hoverWidget;
protected slots: protected slots:

Loading…
Cancel
Save