summaryrefslogtreecommitdiffstats
path: root/src/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/kernel')
-rw-r--r--src/kernel/ntqstyle.h71
-rw-r--r--src/kernel/qapplication.cpp37
-rw-r--r--src/kernel/qapplication_x11.cpp4
-rw-r--r--src/kernel/qstyle.cpp35
4 files changed, 117 insertions, 30 deletions
diff --git a/src/kernel/ntqstyle.h b/src/kernel/ntqstyle.h
index 75a79c79a..a045e21eb 100644
--- a/src/kernel/ntqstyle.h
+++ b/src/kernel/ntqstyle.h
@@ -63,26 +63,26 @@ class TQStyleOption {
public:
enum StyleOptionDefault { Default };
- TQStyleOption(StyleOptionDefault=Default) : def(TRUE), tb(NULL), cli(NULL) {}
+ TQStyleOption(StyleOptionDefault=Default) : def(TRUE), tb(NULL), cli(NULL), tbh(NULL) {}
// Note: we don't use default arguments since that is unnecessary
// initialization.
TQStyleOption(int in1) :
- def(FALSE), tb(NULL), i1(in1), cli(NULL) {}
+ def(FALSE), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {}
TQStyleOption(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) {}
TQStyleOption(int in1, int in2, int in3, int in4) :
- def(FALSE), tb(NULL), i1(in1), i2(in2), i3(in3), i4(in4), cli(NULL) {}
- TQStyleOption(TQMenuItem* m) : def(FALSE), mi(m), tb(NULL), cli(NULL) {}
- TQStyleOption(TQMenuItem* m, int in1) : def(FALSE), mi(m), tb(NULL), i1(in1), cli(NULL) {}
- TQStyleOption(TQMenuItem* m, int in1, int in2) : def(FALSE), mi(m), tb(NULL), i1(in1), i2(in2), cli(NULL) {}
- TQStyleOption(const TQColor& c) : def(FALSE), tb(NULL), cl(&c), cli(NULL) {}
- TQStyleOption(TQTab* t) : def(FALSE), tb(t), cli(NULL) {}
- TQStyleOption(TQListViewItem* i) : def(FALSE), tb(NULL), li(i), cli(NULL) {}
- TQStyleOption(TQCheckListItem* i) : def(FALSE), tb(NULL), cli(i) {}
- TQStyleOption(TQt::ArrowType a) : def(FALSE), tb(NULL), i1((int)a), cli(NULL) {}
- TQStyleOption(const TQRect& r) : def(FALSE), tb(NULL), i1(r.x()), i2(r.y()), i3(r.width()), i4(r.height()), cli(NULL) {}
- TQStyleOption(TQWidget *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) {}
+ TQStyleOption(TQMenuItem* m) : def(FALSE), mi(m), tb(NULL), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQMenuItem* m, int in1) : def(FALSE), mi(m), tb(NULL), i1(in1), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQMenuItem* m, int in1, int in2) : def(FALSE), mi(m), tb(NULL), i1(in1), i2(in2), cli(NULL), tbh(NULL) {}
+ TQStyleOption(const TQColor& c) : def(FALSE), tb(NULL), cl(&c), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQTab* t) : def(FALSE), tb(t), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQListViewItem* i) : def(FALSE), tb(NULL), li(i), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQCheckListItem* i) : def(FALSE), tb(NULL), cli(i), tbh(NULL) {}
+ TQStyleOption(TQt::ArrowType a) : def(FALSE), tb(NULL), i1((int)a), cli(NULL), tbh(NULL) {}
+ TQStyleOption(const TQRect& r) : def(FALSE), tb(NULL), i1(r.x()), i2(r.y()), i3(r.width()), i4(r.height()), cli(NULL), tbh(NULL) {}
+ TQStyleOption(TQWidget *w) : def(FALSE), tb(NULL), cli(NULL), p1((void*)w), tbh(NULL) {}
bool isDefault() const { return def; }
@@ -109,6 +109,9 @@ public:
TQRect rect() const { return TQRect( i1, i2, i3, i4 ); }
TQWidget* widget() const { return (TQWidget*)p1; }
+ TQStyleOption(TQTab* t, TQTab* h) : def(FALSE), tb(t), cli(NULL), tbh(h) {}
+ TQTab* hoverTab() const { return tbh; }
+
private:
// NOTE: none of these components have constructors.
bool def;
@@ -121,6 +124,7 @@ private:
int i5, i6; // reserved
TQCheckListItem* cli;
void *p1, *p2, *p3, *p4; // reserved
+ TQTab* tbh;
// (padded to 64 bytes on some architectures)
};
@@ -129,6 +133,8 @@ class TQStyleHintReturn; // not defined yet
typedef TQMap<TQ_UINT32, TQSize> DialogButtonSizeMap;
typedef TQMap<TQ_INT32, TQ_INT32> TabIdentifierIndexMap;
+class TQStyleControlElementGenericWidgetData;
+
class TQStyleControlElementPopupMenuData {
public:
//
@@ -142,13 +148,6 @@ class TQStyleControlElementCheckListItemData {
int height;
};
-class TQStyleControlElementTabBarData {
- public:
- int tabCount;
- TQTabBar::Shape shape;
- TabIdentifierIndexMap identIndexMap;
-};
-
class TQStyleControlElementListViewData {
public:
bool rootDecorated;
@@ -200,7 +199,23 @@ class TQStyleControlElementGenericWidgetData {
TQFont font;
};
-class TQStyleControlElementData {
+class TQStyleControlElementTabBarData {
+ public:
+ int tabCount;
+ int currentTabIndex;
+ TQTabBar::Shape shape;
+ TabIdentifierIndexMap identIndexMap;
+ TQStyleControlElementGenericWidgetData cornerWidgets[4];
+
+ enum CornerWidgetLocation {
+ CWL_TopLeft = 0,
+ CWL_TopRight = 1,
+ CWL_BottomLeft = 2,
+ CWL_BottomRight = 3
+ };
+};
+
+class Q_EXPORT TQStyleControlElementData {
public:
TQStringList widgetObjectTypes;
bool allDataPopulated;
@@ -251,6 +266,10 @@ class TQStyleControlElementData {
TQ_UINT32 comboBoxLineEditFlags;
TQ_UINT32 frameStyle;
TQRect sliderRect;
+ TQPainter* activePainter;
+
+ public:
+ TQStyleControlElementData();
};
class Q_EXPORT TQStyleWidgetActionRequestData {
@@ -260,6 +279,7 @@ class Q_EXPORT TQStyleWidgetActionRequestData {
TQStyleWidgetActionRequestData(TQPalette palette, bool informWidgets = FALSE, const char* className = 0);
TQStyleWidgetActionRequestData(TQFont font, bool informWidgets = FALSE, const char* className = 0);
TQStyleWidgetActionRequestData(TQRect rect);
+ TQStyleWidgetActionRequestData(TQPaintEvent* paintEvent);
~TQStyleWidgetActionRequestData();
public:
bool bool1;
@@ -271,6 +291,7 @@ class Q_EXPORT TQStyleWidgetActionRequestData {
TQRect rect;
const char * cstr;
TQString string;
+ TQPaintEvent * paintEvent;
};
typedef TQStyleWidgetActionRequestData TQStyleApplicationActionRequestData;
@@ -309,6 +330,7 @@ public:
CEF_IsActiveWindow = 0x00200000,
CEF_IsTopLevel = 0x00400000,
CEF_IsVisible = 0x00800000,
+ CEF_HasMouse = 0x01000000
};
// New TQStyle API - most of these should probably be pure virtual
@@ -1094,7 +1116,10 @@ public:
WAR_SetBackgroundMode,
WAR_SetBackgroundOrigin,
WAR_SetFont,
- WAR_RepaintAllAccelerators
+ WAR_RepaintAllAccelerators,
+ WAR_SetDefault,
+ WAR_UnSetDefault,
+ WAR_SendPaintEvent
};
typedef bool (*WidgetActionRequestHook)(TQStyleControlElementData ceData, ControlElementFlags elementFlags, void* source, WidgetActionRequest request, TQStyleWidgetActionRequestData requestData);
diff --git a/src/kernel/qapplication.cpp b/src/kernel/qapplication.cpp
index 3dc3db748..71b87ffe0 100644
--- a/src/kernel/qapplication.cpp
+++ b/src/kernel/qapplication.cpp
@@ -2557,6 +2557,21 @@ bool TQApplication::event( TQEvent *e )
return TQObject::event(e);
}
+#define HOVER_SENSITIVE_WIDGET_SELECT if ( widget->inherits("TQPushButton") \
+ || widget->inherits("TQComboBox") \
+ || widget->inherits("TQSpinWidget") \
+ || widget->inherits("TQCheckBox") \
+ || widget->inherits("TQRadioButton") \
+ || widget->inherits("TQToolButton") \
+ || widget->inherits("TQSlider") \
+ || widget->inherits("TQScrollBar") \
+ || widget->inherits("TQTabBar") \
+ || widget->inherits("TQDockWindowHandle") \
+ || widget->inherits("TQSplitterHandle") )
+
+#define FOCUS_SENSITIVE_WIDGET_SELECT if ( widget->inherits("TQLineEdit") )
+#define FOCUS_SENSITIVE_PARENT_WIDGET_SELECT if ( widget->parentWidget() && widget->parentWidget()->inherits("TQSpinWidget") )
+
/*!\internal
Helper function called by notify()
@@ -2579,10 +2594,28 @@ bool TQApplication::internalNotify( TQObject *receiver, TQEvent * e)
TQWidget *widget = (TQWidget*)receiver;
// toggle HasMouse widget state on enter and leave
- if ( e->type() == TQEvent::Enter || e->type() == TQEvent::DragEnter )
+ if ( e->type() == TQEvent::Enter || e->type() == TQEvent::DragEnter ) {
widget->setWState( WState_HasMouse );
- else if ( e->type() == TQEvent::Leave || e->type() == TQEvent::DragLeave )
+ HOVER_SENSITIVE_WIDGET_SELECT {
+ widget->repaint(false);
+ }
+ }
+ else if ( e->type() == TQEvent::Leave || e->type() == TQEvent::DragLeave ) {
widget->clearWState( WState_HasMouse );
+ HOVER_SENSITIVE_WIDGET_SELECT {
+ widget->repaint(false);
+ }
+ }
+
+ // repaint information entry widgets on focus set/unset
+ if ( e->type() == TQEvent::FocusIn || e->type() == TQEvent::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() == TQEvent::MouseMove &&
diff --git a/src/kernel/qapplication_x11.cpp b/src/kernel/qapplication_x11.cpp
index aba4fcd50..e76dd1d72 100644
--- a/src/kernel/qapplication_x11.cpp
+++ b/src/kernel/qapplication_x11.cpp
@@ -5184,8 +5184,6 @@ bool TQETWidget::translateKeyEventInternal( const XEvent *event, int& count,
tqAddPostRoutine( deleteKeyDicts );
}
- TQWidget* tlw = topLevelWidget();
-
XKeyEvent xkeyevent = event->xkey;
// save the modifier state, we will use the keystate uint later by passing
@@ -5211,7 +5209,6 @@ bool TQETWidget::translateKeyEventInternal( const XEvent *event, int& count,
// Implementation for X11R5 and newer, using XIM
int keycode = event->xkey.keycode;
- Status status;
if ( type == TQEvent::KeyPress ) {
bool mb=FALSE;
@@ -5295,7 +5292,6 @@ bool TQETWidget::translateKeyEventInternal( const XEvent *event, int& count,
// and independent of whether char is signed or not.
textDict->replace( keycode, (void*)(long)(256+ascii) );
}
- tlw = 0;
} else {
key = (int)(long)keyDict->find( keycode );
if ( key )
diff --git a/src/kernel/qstyle.cpp b/src/kernel/qstyle.cpp
index 7aa144091..ef31c25ca 100644
--- a/src/kernel/qstyle.cpp
+++ b/src/kernel/qstyle.cpp
@@ -48,6 +48,7 @@
#include "ntqlayout.h"
#include "ntqlistview.h"
#include "ntqpopupmenu.h"
+#include "ntqpushbutton.h"
#include "ntqobjectlist.h"
#include "ntqwidgetlist.h"
@@ -2165,7 +2166,16 @@ bool TQStyle::eventFilter(TQObject *o, TQEvent *e) {
TQStyle* handler = m_objectEventSourceToHandlerMap[o];
TQStyleControlElementData ceData = m_objectEventSourceDataToHandlerMap[o];
ControlElementFlags elementFlags = m_objectEventSourceFlagsToHandlerMap[o];
- bool ret = handler->objectEventHandler(ceData, elementFlags, o, e);
+ bool ret;
+ TQWidget* w = dynamic_cast<TQWidget*>(o);
+ if ((w) && (e->type() == TQEvent::Paint)) {
+ TQPainter p(w);
+ ceData.activePainter = &p;
+ ret = handler->objectEventHandler(ceData, elementFlags, o, e);
+ }
+ else {
+ ret = handler->objectEventHandler(ceData, elementFlags, o, e);
+ }
if (ret) {
return ret;
}
@@ -2291,6 +2301,21 @@ bool TQStyle::widgetActionRequest( TQStyleControlElementData ceData, ControlElem
}
delete list;
}
+ else if (request == WAR_SetDefault) {
+ TQPushButton *button = dynamic_cast<TQPushButton*>(widget);
+ if (button) {
+ button->setDefault(TRUE);
+ }
+ }
+ else if (request == WAR_UnSetDefault) {
+ TQPushButton *button = dynamic_cast<TQPushButton*>(widget);
+ if (button) {
+ button->setDefault(FALSE);
+ }
+ }
+ else if (request == WAR_SendPaintEvent) {
+ static_cast<TQObject*>(widget)->event(requestData.paintEvent);
+ }
return true;
}
}
@@ -2395,6 +2420,10 @@ TQStyleWidgetActionRequestData::TQStyleWidgetActionRequestData(TQRect param) {
rect = param;
}
+TQStyleWidgetActionRequestData::TQStyleWidgetActionRequestData(TQPaintEvent* param) {
+ paintEvent = param;
+}
+
TQStyleWidgetActionRequestData::~TQStyleWidgetActionRequestData() {
//
}
@@ -2575,4 +2604,8 @@ TQPixmap TQStyle::stylePixmap(StylePixmap sp, const TQWidget *w, const TQStyleOp
\obsolete
*/
+TQStyleControlElementData::TQStyleControlElementData() {
+ activePainter = 0;
+}
+
#endif // QT_NO_STYLE