implemented SH_KCustomElement from KStyle, to have them working in KDE4.

wilder-pre-rebase
Hugo Pereira Da Costa 11 years ago
parent d284dd4ef6
commit 53d25d9558
  1. 4
      kstyle/breezestyle.cpp
  2. 41
      kstyle/kstylekde4compat.cpp
  3. 24
      kstyle/kstylekde4compat.h

@ -173,7 +173,7 @@ namespace Breeze
, _splitterFactory( new SplitterFactory( this ) )
, _widgetExplorer( new WidgetExplorer( this ) )
, _tabBarData( new BreezePrivate::TabBarData( this ) )
#if BREEZE_HAVE_KSTYLE
#if BREEZE_HAVE_KSTYLE||BREEZE_USE_KDE4
, SH_ArgbDndWindow( newStyleHint( QStringLiteral( "SH_ArgbDndWindow" ) ) )
, CE_CapacityBar( newControlElement( QStringLiteral( "CE_CapacityBar" ) ) )
#endif
@ -822,7 +822,7 @@ namespace Breeze
StyleControl fcn( nullptr );
#if BREEZE_HAVE_KSTYLE
#if BREEZE_HAVE_KSTYLE||BREEZE_USE_KDE4
if( element == CE_CapacityBar )
{
fcn = &Style::drawProgressBarControl;

@ -23,16 +23,55 @@
#include <QToolBar>
#include <KSharedConfig>
static const QStyle::StyleHint SH_KCustomStyleElement = (QStyle::StyleHint)0xff000001;
static const int X_KdeBase = 0xff000000;
//_____________________________________________________________________
KStyleKDE4Compat::KStyleKDE4Compat()
{
controlCounter = subElementCounter = X_KdeBase;
hintCounter = X_KdeBase + 1; //sic! X_KdeBase is covered by SH_KCustomStyleElement
}
//_____________________________________________________________________
KStyleKDE4Compat::~KStyleKDE4Compat()
{}
//_____________________________________________________________________
static inline int newStyleElement(const QString &element, const char *check, int &counter, QHash<QString, int> *elements)
{
if (!element.contains(check)) {
return 0;
}
int id = elements->value(element, 0);
if (!id) {
++counter;
id = counter;
elements->insert(element, id);
}
return id;
}
//_____________________________________________________________________
QStyle::StyleHint KStyleKDE4Compat::newStyleHint(const QString &element)
{ return (StyleHint)newStyleElement(element, "SH_", hintCounter, &styleElements); }
//_____________________________________________________________________
QStyle::ControlElement KStyleKDE4Compat::newControlElement(const QString &element)
{ return (ControlElement)newStyleElement(element, "CE_", controlCounter, &styleElements); }
//_____________________________________________________________________
QStyle::SubElement KStyleKDE4Compat::newSubElement(const QString &element)
{ return (SubElement)newStyleElement(element, "SE_", subElementCounter, &styleElements); }
//_____________________________________________________________________
int KStyleKDE4Compat::styleHint(StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
{
if( hint == SH_KCustomStyleElement && widget )
{ return styleElements.value(widget->objectName(), 0); }
switch (hint) {
case SH_ItemView_ActivateItemOnSingleClick: {
KConfigGroup g(KSharedConfig::openConfig(), "KDE");
@ -81,4 +120,4 @@ int KStyleKDE4Compat::styleHint(StyleHint hint, const QStyleOption *option, cons
};
return QCommonStyle::styleHint(hint, option, widget, returnData);
}
}

@ -28,15 +28,31 @@
#define KSTYLE_KDE4_COMPAT_H
#include <QCommonStyle>
#include <QHash>
class KStyleKDE4Compat : public QCommonStyle
{
Q_OBJECT
public:
public:
KStyleKDE4Compat();
~KStyleKDE4Compat();
virtual int styleHint(StyleHint hint, const QStyleOption *opt,
const QWidget *w, QStyleHintReturn *returnData) const;
virtual int styleHint(StyleHint hint, const QStyleOption *opt, const QWidget *w, QStyleHintReturn *returnData) const;
protected:
StyleHint newStyleHint(const QString &element);
ControlElement newControlElement(const QString &element);
SubElement newSubElement(const QString &element);
private:
QHash<QString, int> styleElements;
int hintCounter;
int controlCounter;
int subElementCounter;
};
#endif
#endif

Loading…
Cancel
Save