// XXX: transient_for, transients
//! The desktop on which the window resides (0xffffffff for all desktops)
- unsigned int _desktop;
+ unsigned long _desktop;
//! Normal window title
std::string _title; // XXX: Have to keep track if this string is Utf8 or not
//! Position and size of the window (relative to the root window)
otk::Rect _area;
+ //! Width of the border on the window.
+ /*!
+ The window manager will set this to 0 while the window is being managed,
+ but needs to restore it afterwards, so it is saved here.
+ */
+ int _border_width;
+
// size bounds
// if min > max, then the window is not resizable
int _min_x, _min_y; // minumum size
//! The state of the window, one of WithdrawnState, IconicState, or
//! NormalState
- long _state;
+ long _wmstate;
+ //! Was the window's position requested by the application? if not, we should
+ //! place the window ourselves when it first appears
+ bool _positioned;
+
//! Can the window receive input focus?
bool _can_focus;
//! Urgency flag
// XXX: motif decoration hints!
+ void getDesktop();
+ void getType();
+ void getArea();
+ void getState();
+ void getShaped();
+
void setWMState(long state);
void setDesktop(long desktop);
void setState(StateAction action, long data1, long data2);
-
+
+ void updateProtocols();
void updateNormalHints();
void updateWMHints();
+ // XXX: updateTransientFor();
void updateTitle();
void updateClass();
inline Window window() const { return _window; }
inline WindowType type() const { return _type; }
- inline unsigned int desktop() const { return _desktop; }
+ inline unsigned long desktop() const { return _desktop; }
inline const std::string &title() const { return _title; }
inline const std::string &iconTitle() const { return _title; }
inline const std::string &appName() const { return _app_name; }
void update(const XPropertyEvent &e);
void update(const XClientMessageEvent &e);
+
+ void setArea(const otk::Rect &area);
};
}