Update from qt3

pull/1/head
Timothy Pearson 13 years ago
parent 7331753040
commit b2c9e95e1a

@ -262,9 +262,22 @@ Atom qt_net_wm_state = 0;
Atom qt_net_wm_state_modal = 0; Atom qt_net_wm_state_modal = 0;
Atom qt_net_wm_state_max_v = 0; Atom qt_net_wm_state_max_v = 0;
Atom qt_net_wm_state_max_h = 0; Atom qt_net_wm_state_max_h = 0;
Atom qt_net_wm_state_fullscreen = 0; Atom qt_net_wm_state_fullscreen = 0;
Atom qt_net_wm_state_above = 0; Atom qt_net_wm_state_above = 0;
Atom qt_net_wm_window_type = 0; Atom qt_net_wm_action = 0;
Atom qt_net_wm_action_move = 0;
Atom qt_net_wm_action_resize = 0;
Atom qt_net_wm_action_minimize = 0;
Atom qt_net_wm_action_shade = 0;
Atom qt_net_wm_action_stick = 0;
Atom qt_net_wm_action_max_h = 0;
Atom qt_net_wm_action_max_v = 0;
Atom qt_net_wm_action_fullscreen = 0;
Atom qt_net_wm_action_change_desktop = 0;
Atom qt_net_wm_action_close = 0;
Atom qt_net_wm_action_above = 0;
Atom qt_net_wm_action_below = 0;
Atom qt_net_wm_window_type = 0;
Atom qt_net_wm_window_type_normal = 0; Atom qt_net_wm_window_type_normal = 0;
Atom qt_net_wm_window_type_dialog = 0; Atom qt_net_wm_window_type_dialog = 0;
Atom qt_net_wm_window_type_toolbar = 0; Atom qt_net_wm_window_type_toolbar = 0;
@ -2003,6 +2016,19 @@ void qt_init_internal( int *argcptr, char **argv,
qt_x11_intern_atom( "_NET_WM_STATE_MAXIMIZED_HORZ", &qt_net_wm_state_max_h ); qt_x11_intern_atom( "_NET_WM_STATE_MAXIMIZED_HORZ", &qt_net_wm_state_max_h );
qt_x11_intern_atom( "_NET_WM_STATE_FULLSCREEN", &qt_net_wm_state_fullscreen ); qt_x11_intern_atom( "_NET_WM_STATE_FULLSCREEN", &qt_net_wm_state_fullscreen );
qt_x11_intern_atom( "_NET_WM_STATE_ABOVE", &qt_net_wm_state_above ); qt_x11_intern_atom( "_NET_WM_STATE_ABOVE", &qt_net_wm_state_above );
qt_x11_intern_atom( "_NET_WM_ALLOWED_ACTIONS", &qt_net_wm_action );
qt_x11_intern_atom( "_NET_WM_ACTION_MOVE", &qt_net_wm_action_move );
qt_x11_intern_atom( "_NET_WM_ACTION_RESIZE", &qt_net_wm_action_resize );
qt_x11_intern_atom( "_NET_WM_ACTION_MINIMIZE", &qt_net_wm_action_minimize );
qt_x11_intern_atom( "_NET_WM_ACTION_SHADE", &qt_net_wm_action_shade );
qt_x11_intern_atom( "_NET_WM_ACTION_STICK", &qt_net_wm_action_stick );
qt_x11_intern_atom( "_NET_WM_ACTION_MAXIMIZE_HORZ", &qt_net_wm_action_max_h );
qt_x11_intern_atom( "_NET_WM_ACTION_MAXIMIZE_VERT", &qt_net_wm_action_max_v );
qt_x11_intern_atom( "_NET_WM_ACTION_FULLSCREEN", &qt_net_wm_action_fullscreen );
qt_x11_intern_atom( "_NET_WM_ACTION_CHANGE_DESKTOP", &qt_net_wm_action_change_desktop );
qt_x11_intern_atom( "_NET_WM_ACTION_CLOSE", &qt_net_wm_action_close );
qt_x11_intern_atom( "_NET_WM_ACTION_ABOVE", &qt_net_wm_action_above );
qt_x11_intern_atom( "_NET_WM_ACTION_BELOW", &qt_net_wm_action_below );
qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE", &qt_net_wm_window_type ); qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE", &qt_net_wm_window_type );
qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_NORMAL", &qt_net_wm_window_type_normal ); qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_NORMAL", &qt_net_wm_window_type_normal );
qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DIALOG", &qt_net_wm_window_type_dialog ); qt_x11_intern_atom( "_NET_WM_WINDOW_TYPE_DIALOG", &qt_net_wm_window_type_dialog );
@ -5167,7 +5193,7 @@ bool TQETWidget::translateKeyEventInternal( const XEvent *event, int& count,
uint keystate = event->xkey.state; uint keystate = event->xkey.state;
// remove the modifiers where mode_switch exists... HPUX machines seem // remove the modifiers where mode_switch exists... HPUX machines seem
// to have alt *AND* mode_switch both in Mod1Mask, which causes // to have alt *AND* mode_switch both in Mod1Mask, which causes
// XLookupString to return things like 'å' (aring) for ALT-A. This // XLookupString to return things like '<EFBFBD>' (aring) for ALT-A. This
// completely breaks modifiers. If we remove the modifier for Mode_switch, // completely breaks modifiers. If we remove the modifier for Mode_switch,
// then things work correctly... // then things work correctly...
xkeyevent.state &= ~qt_mode_switch_remove_mask; xkeyevent.state &= ~qt_mode_switch_remove_mask;

@ -168,6 +168,28 @@ public:
WState_HasMouse = 0x00800000 WState_HasMouse = 0x00800000
}; };
// NetWM flags; documented in qwidget.cpp
typedef uint NFlags;
// documented in qwidget.cpp
enum NETWMFlags {
#if defined(Q_WS_X11)
WX11DisableMove = 0x00000001,
WX11DisableClose = 0x00000002,
WX11DisableResize = 0x00000004,
WX11DisableMinimize = 0x00000008,
WX11DisableMaximize = 0x00000010,
WX11DisableShade = 0x00000020
#else
WX11DisableMove = 0x00000000,
WX11DisableClose = 0x00000000,
WX11DisableResize = 0x00000000,
WX11DisableMinimize = 0x00000000,
WX11DisableMaximize = 0x00000000,
WX11DisableShade = 0x00000000
#endif
};
// Widget flags2; documented in qwidget.cpp // Widget flags2; documented in qwidget.cpp
typedef uint WFlags; typedef uint WFlags;

@ -775,6 +775,25 @@ TQSize qt_naturalWidgetSize( TQWidget *w ) {
*/ */
/*!
\enum TQt::NETWMFlags
\keyword NETWM flag
This enum type is used to specify various NETWM properties
under X11 and similar systems.
The main types are
\value WX11DisableMove
\value WX11DisableClose
\value WX11DisableResize
\value WX11DisableMinimize
\value WX11DisableMaximize
\value WX11DisableShade
*/
/*! /*!
\enum TQt::WidgetState \enum TQt::WidgetState
@ -874,6 +893,7 @@ TQWidget::TQWidget( TQWidget *parent, const char *name, WFlags f )
winid = 0; // default attributes winid = 0; // default attributes
widget_state = 0; widget_state = 0;
widget_flags = f; widget_flags = f;
netwm_flags = 0;
focus_policy = 0; focus_policy = 0;
own_font = 0; own_font = 0;
own_palette = 0; own_palette = 0;

@ -455,6 +455,7 @@ public:
TQWidget * parentWidget( bool sameWindow = FALSE ) const; TQWidget * parentWidget( bool sameWindow = FALSE ) const;
WState testWState( WState s ) const; WState testWState( WState s ) const;
WFlags testWFlags( WFlags f ) const; WFlags testWFlags( WFlags f ) const;
NFlags testNFlags( NFlags f ) const;
static TQWidget * find( WId ); static TQWidget * find( WId );
static TQWidgetMapper *wmapper(); static TQWidgetMapper *wmapper();
@ -578,6 +579,9 @@ protected:
WFlags getWFlags() const; WFlags getWFlags() const;
virtual void setWFlags( WFlags ); virtual void setWFlags( WFlags );
void clearWFlags( WFlags n ); void clearWFlags( WFlags n );
NFlags getNFlags() const;
virtual void setNFlags( NFlags );
void clearNFlags( NFlags n );
virtual bool focusNextPrevChild( bool next ); virtual bool focusNextPrevChild( bool next );
@ -665,20 +669,25 @@ private:
void setBackgroundX11Relative(); void setBackgroundX11Relative();
#endif #endif
WId winid; WId winid;
uint widget_state; uint widget_state;
uint widget_flags; uint widget_flags;
uint focus_policy : 4; uint netwm_flags;
uint own_font :1; uint reserved_1;
uint own_palette :1; uint reserved_2;
uint sizehint_forced :1; uint reserved_3;
uint is_closing :1; uint reserved_4;
uint in_show : 1; uint focus_policy : 4;
uint in_show_maximized : 1; uint own_font :1;
uint fstrut_dirty : 1; uint own_palette :1;
uint im_enabled : 1; uint sizehint_forced :1;
TQRect crect; uint is_closing :1;
TQColor bg_col; uint in_show : 1;
uint in_show_maximized : 1;
uint fstrut_dirty : 1;
uint im_enabled : 1;
TQRect crect;
TQColor bg_col;
#ifndef QT_NO_PALETTE #ifndef QT_NO_PALETTE
TQPalette pal; TQPalette pal;
#endif #endif
@ -756,6 +765,8 @@ inline TQt::WState TQWidget::testWState( WState s ) const
inline TQt::WFlags TQWidget::testWFlags( WFlags f ) const inline TQt::WFlags TQWidget::testWFlags( WFlags f ) const
{ return (widget_flags & f); } { return (widget_flags & f); }
inline TQt::NFlags TQWidget::testNFlags( NFlags f ) const
{ return (netwm_flags & f); }
inline WId TQWidget::winId() const inline WId TQWidget::winId() const
{ return winid; } { return winid; }
@ -916,12 +927,21 @@ inline void TQWidget::clearWState( uint f )
inline TQt::WFlags TQWidget::getWFlags() const inline TQt::WFlags TQWidget::getWFlags() const
{ return widget_flags; } { return widget_flags; }
inline TQt::NFlags TQWidget::getNFlags() const
{ return netwm_flags; }
inline void TQWidget::setWFlags( WFlags f ) inline void TQWidget::setWFlags( WFlags f )
{ widget_flags |= f; } { widget_flags |= f; }
inline void TQWidget::setNFlags( NFlags f )
{ netwm_flags |= f; }
inline void TQWidget::clearWFlags( WFlags f ) inline void TQWidget::clearWFlags( WFlags f )
{ widget_flags &= ~f; } { widget_flags &= ~f; }
inline void TQWidget::clearNFlags( NFlags f )
{ netwm_flags &= ~f; }
inline void TQWidget::constPolish() const inline void TQWidget::constPolish() const
{ {
if ( !testWState(WState_Polished) ) { if ( !testWState(WState_Polished) ) {

@ -124,6 +124,19 @@ extern Atom qt_net_wm_state_max_h;
extern Atom qt_net_wm_state_fullscreen; extern Atom qt_net_wm_state_fullscreen;
extern Atom qt_net_wm_state_above; extern Atom qt_net_wm_state_above;
extern Atom qt_net_wm_state_stays_on_top; extern Atom qt_net_wm_state_stays_on_top;
extern Atom qt_net_wm_action;
extern Atom qt_net_wm_action_move;
extern Atom qt_net_wm_action_resize;
extern Atom qt_net_wm_action_minimize;
extern Atom qt_net_wm_action_shade;
extern Atom qt_net_wm_action_stick;
extern Atom qt_net_wm_action_max_h;
extern Atom qt_net_wm_action_max_v;
extern Atom qt_net_wm_action_fullscreen;
extern Atom qt_net_wm_action_change_desktop;
extern Atom qt_net_wm_action_close;
extern Atom qt_net_wm_action_above;
extern Atom qt_net_wm_action_below;
extern Atom qt_net_wm_window_type; extern Atom qt_net_wm_window_type;
extern Atom qt_net_wm_window_type_normal; extern Atom qt_net_wm_window_type_normal;
extern Atom qt_net_wm_window_type_dialog; extern Atom qt_net_wm_window_type_dialog;
@ -462,7 +475,16 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow)
// NET window states // NET window states
long net_winstates[6] = { 0, 0, 0, 0, 0, 0 }; long net_winstates[6] = { 0, 0, 0, 0, 0, 0 };
long net_winactions[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int curr_winstate = 0; int curr_winstate = 0;
int curr_winaction = 0;
// Add all default actions that cannot be turned off
net_winactions[curr_winaction++] = qt_net_wm_action_stick;
net_winactions[curr_winaction++] = qt_net_wm_action_fullscreen;
net_winactions[curr_winaction++] = qt_net_wm_action_change_desktop;
net_winactions[curr_winaction++] = qt_net_wm_action_above;
net_winactions[curr_winaction++] = qt_net_wm_action_below;
struct { struct {
ulong flags, functions, decorations; ulong flags, functions, decorations;
@ -475,6 +497,56 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow)
mwmhints.input_mode = 0L; mwmhints.input_mode = 0L;
mwmhints.status = 0L; mwmhints.status = 0L;
if ( testNFlags(WX11DisableResize) ) {
mwmhints.functions |= (1L << 1); // MWM_FUNC_RESIZE
mwmhints.functions |= (1L << 0); // MWM_FUNC_ALL
mwmhints.flags |= (1L << 0); // MWM_HINTS_FUNCTIONS
}
else {
net_winactions[curr_winaction++] = qt_net_wm_action_resize;
}
if ( testNFlags(WX11DisableMove) ) {
mwmhints.functions |= (1L << 2); // MWM_FUNC_MOVE
mwmhints.functions |= (1L << 0); // MWM_FUNC_ALL
mwmhints.flags |= (1L << 0); // MWM_HINTS_FUNCTIONS
}
else {
net_winactions[curr_winaction++] = qt_net_wm_action_move;
}
if ( testNFlags(WX11DisableMinimize) ) {
mwmhints.functions |= (1L << 3); // MWM_FUNC_MINIMIZE
mwmhints.functions |= (1L << 0); // MWM_FUNC_ALL
mwmhints.flags |= (1L << 0); // MWM_HINTS_FUNCTIONS
}
else {
net_winactions[curr_winaction++] = qt_net_wm_action_minimize;
}
if ( testNFlags(WX11DisableMaximize) ) {
mwmhints.functions |= (1L << 4); // MWM_FUNC_MAXIMIZE
mwmhints.functions |= (1L << 0); // MWM_FUNC_ALL
mwmhints.flags |= (1L << 0); // MWM_HINTS_FUNCTIONS
}
else {
net_winactions[curr_winaction++] = qt_net_wm_action_max_h;
net_winactions[curr_winaction++] = qt_net_wm_action_max_v;
}
if ( testNFlags(WX11DisableClose) ) {
mwmhints.functions |= (1L << 5); // MWM_FUNC_CLOSE
mwmhints.functions |= (1L << 0); // MWM_FUNC_ALL
mwmhints.flags |= (1L << 0); // MWM_HINTS_FUNCTIONS
}
else {
net_winactions[curr_winaction++] = qt_net_wm_action_close;
}
if ( ! testNFlags(WX11DisableShade) ) {
net_winactions[curr_winaction++] = qt_net_wm_action_shade;
}
if (topLevel && ! (desktop || popup)) { if (topLevel && ! (desktop || popup)) {
ulong wsa_mask = 0; ulong wsa_mask = 0;
@ -630,6 +702,13 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow)
else else
XDeleteProperty(dpy, id, qt_net_wm_state); XDeleteProperty(dpy, id, qt_net_wm_state);
// set _NET_WM_ALLOWED_ACTIONS
if (curr_winaction > 0)
XChangeProperty(dpy, id, qt_net_wm_action, XA_ATOM, 32, PropModeReplace,
(unsigned char *) net_winactions, curr_winaction);
else
XDeleteProperty(dpy, id, qt_net_wm_action);
// set _NET_WM_PID // set _NET_WM_PID
long curr_pid = getpid(); long curr_pid = getpid();
XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace,

@ -43,11 +43,11 @@
#define TQT_REAL_TQT 1 #define TQT_REAL_TQT 1
#define QT_VERSION_STR "3.3.8d" #define QT_VERSION_STR "3.4.0"
/* /*
QT_VERSION is (major << 16) + (minor << 8) + patch. QT_VERSION is (major << 16) + (minor << 8) + patch.
*/ */
#define QT_VERSION 0x030308 #define QT_VERSION 0x030400
/* /*
The operating system, must be one of: (Q_OS_x) The operating system, must be one of: (Q_OS_x)

Loading…
Cancel
Save