diff options
Diffstat (limited to 'src/kernel')
| -rw-r--r-- | src/kernel/qapplication.cpp | 37 | ||||
| -rw-r--r-- | src/kernel/qstyle.h | 35 | 
2 files changed, 55 insertions, 17 deletions
diff --git a/src/kernel/qapplication.cpp b/src/kernel/qapplication.cpp index 7296f4c..0478cf1 100644 --- a/src/kernel/qapplication.cpp +++ b/src/kernel/qapplication.cpp @@ -2557,6 +2557,21 @@ bool QApplication::event( QEvent *e )      return QObject::event(e);  } +#define HOVER_SENSITIVE_WIDGET_SELECT		if ( widget->inherits("QPushButton")				\ +							|| widget->inherits("QComboBox")			\ +							|| widget->inherits("QSpinWidget")			\ +							|| widget->inherits("QCheckBox")			\ +							|| widget->inherits("QRadioButton")			\ +							|| widget->inherits("QToolButton")			\ +							|| widget->inherits("QSlider")				\ +							|| widget->inherits("QScrollBar")			\ +							|| widget->inherits("QTabBar")				\ +							|| widget->inherits("QDockWindowHandle")		\ +							|| widget->inherits("QSplitterHandle") ) + +#define FOCUS_SENSITIVE_WIDGET_SELECT		if ( widget->inherits("QLineEdit") ) +#define FOCUS_SENSITIVE_PARENT_WIDGET_SELECT	if ( widget->parentWidget() && widget->parentWidget()->inherits("QSpinWidget") ) +  /*!\internal    Helper function called by notify() @@ -2579,10 +2594,28 @@ bool QApplication::internalNotify( QObject *receiver, QEvent * e)  	QWidget *widget = (QWidget*)receiver;  	// toggle HasMouse widget state on enter and leave -	if ( e->type() == QEvent::Enter || e->type() == QEvent::DragEnter ) +	if ( e->type() == QEvent::Enter || e->type() == QEvent::DragEnter ) {  	    widget->setWState( WState_HasMouse ); -	else if ( e->type() == QEvent::Leave || e->type() == QEvent::DragLeave ) +	    HOVER_SENSITIVE_WIDGET_SELECT { +	    	widget->repaint(false); +	    } +	} +	else if ( e->type() == QEvent::Leave || e->type() == QEvent::DragLeave ) {  	    widget->clearWState( WState_HasMouse ); +	    HOVER_SENSITIVE_WIDGET_SELECT { +	    	widget->repaint(false); +	    } +	} + +	// repaint information entry widgets on focus set/unset +	if ( e->type() == QEvent::FocusIn || e->type() == QEvent::FocusOut ) { +	    FOCUS_SENSITIVE_WIDGET_SELECT { +	    	widget->repaint(false); +	    } +	    FOCUS_SENSITIVE_PARENT_WIDGET_SELECT { +	    	widget->parentWidget()->repaint(false); +	    } +	}  	// throw away any mouse-tracking-only mouse events  	if ( e->type() == QEvent::MouseMove && diff --git a/src/kernel/qstyle.h b/src/kernel/qstyle.h index 1690786..324b987 100644 --- a/src/kernel/qstyle.h +++ b/src/kernel/qstyle.h @@ -63,26 +63,26 @@ class QStyleOption {  public:      enum StyleOptionDefault { Default }; -    QStyleOption(StyleOptionDefault=Default) : def(TRUE), tb(NULL), cli(NULL) {} +    QStyleOption(StyleOptionDefault=Default) : def(TRUE), tb(NULL), cli(NULL), tbh(NULL) {}      // Note: we don't use default arguments since that is unnecessary      // initialization.      QStyleOption(int in1) : -	def(FALSE), tb(NULL), i1(in1), cli(NULL) {} +	def(FALSE), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {}      QStyleOption(int in1, int in2) : -	def(FALSE), tb(NULL), i1(in1), i2(in2), cli(NULL) {} +	def(FALSE), tb(NULL), i1(in1), i2(in2), cli(NULL), tbh(NULL) {}      QStyleOption(int in1, int in2, int in3, int in4) : -	def(FALSE), tb(NULL), i1(in1), i2(in2), i3(in3), i4(in4), cli(NULL) {} -    QStyleOption(QMenuItem* m) : def(FALSE), mi(m), tb(NULL), cli(NULL) {} -    QStyleOption(QMenuItem* m, int in1) : def(FALSE), mi(m), tb(NULL), i1(in1), cli(NULL) {} -    QStyleOption(QMenuItem* m, int in1, int in2) : def(FALSE), mi(m), tb(NULL), i1(in1), i2(in2), cli(NULL) {} -    QStyleOption(const QColor& c) : def(FALSE), tb(NULL), cl(&c), cli(NULL) {} -    QStyleOption(QTab* t) : def(FALSE), tb(t), cli(NULL) {} -    QStyleOption(QListViewItem* i) : def(FALSE), tb(NULL), li(i), cli(NULL) {} -    QStyleOption(QCheckListItem* i) : def(FALSE), tb(NULL), cli(i) {} -    QStyleOption(Qt::ArrowType a) : def(FALSE), tb(NULL), i1((int)a), cli(NULL) {} -    QStyleOption(const QRect& r) : def(FALSE), tb(NULL), i1(r.x()), i2(r.y()), i3(r.width()), i4(r.height()), cli(NULL) {} -    QStyleOption(QWidget *w) : def(FALSE), tb(NULL), cli(NULL), p1((void*)w) {} +	def(FALSE), tb(NULL), i1(in1), i2(in2), i3(in3), i4(in4), cli(NULL), tbh(NULL) {} +    QStyleOption(QMenuItem* m) : def(FALSE), mi(m), tb(NULL), cli(NULL), tbh(NULL) {} +    QStyleOption(QMenuItem* m, int in1) : def(FALSE), mi(m), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {} +    QStyleOption(QMenuItem* m, int in1, int in2) : def(FALSE), mi(m), tb(NULL), i1(in1), i2(in2), cli(NULL), tbh(NULL) {} +    QStyleOption(const QColor& c) : def(FALSE), tb(NULL), cl(&c), cli(NULL), tbh(NULL) {} +    QStyleOption(QTab* t) : def(FALSE), tb(t), cli(NULL), tbh(NULL) {} +    QStyleOption(QListViewItem* i) : def(FALSE), tb(NULL), li(i), cli(NULL), tbh(NULL) {} +    QStyleOption(QCheckListItem* i) : def(FALSE), tb(NULL), cli(i), tbh(NULL) {} +    QStyleOption(Qt::ArrowType a) : def(FALSE), tb(NULL), i1((int)a), cli(NULL), tbh(NULL) {} +    QStyleOption(const QRect& r) : def(FALSE), tb(NULL), i1(r.x()), i2(r.y()), i3(r.width()), i4(r.height()), cli(NULL), tbh(NULL) {} +    QStyleOption(QWidget *w) : def(FALSE), tb(NULL), cli(NULL), p1((void*)w), tbh(NULL) {}      bool isDefault() const { return def; } @@ -109,6 +109,9 @@ public:      QRect rect() const { return QRect( i1, i2, i3, i4 ); }      QWidget* widget() const { return (QWidget*)p1; } +    QStyleOption(QTab* t, QTab* h) : def(FALSE), tb(t), cli(NULL), tbh(h) {} +    QTab* hoverTab() const { return tbh; } +  private:      // NOTE: none of these components have constructors.      bool def; @@ -121,6 +124,7 @@ private:      int i5, i6; // reserved      QCheckListItem* cli;      void *p1, *p2, *p3, *p4; // reserved +    QTab* tbh;      // (padded to 64 bytes on some architectures)  }; @@ -200,7 +204,7 @@ class QStyleControlElementGenericWidgetData {  		QFont font;  }; -class QStyleControlElementData { +class Q_EXPORT QStyleControlElementData {  	public:  		QStringList widgetObjectTypes;  		bool allDataPopulated; @@ -315,6 +319,7 @@ public:  	CEF_IsActiveWindow		= 0x00200000,  	CEF_IsTopLevel			= 0x00400000,  	CEF_IsVisible			= 0x00800000, +	CEF_HasMouse			= 0x01000000      };      // New QStyle API - most of these should probably be pure virtual  | 
