determine if the user/application requested its initial position or not
Dana Jansens danakj@orodu.net
2 files changed,
14 insertions(+),
2 deletions(-)
M
src/client.cc
→
src/client.cc
@@ -54,7 +54,8 @@ " notify focus: \t%s\t\t urgent: \t%s\n"
" shaped: \t%s\t\t modal: \t%s\n" " shaded: \t%s\t\t iconic: \t%s\n" " vert maximized:\t%s\t\t horz maximized:\t%s\n" - " fullscreen: \t%s\t\t floating: \t%s\n", + " fullscreen: \t%s\t\t floating: \t%s\n" + " requested pos: \t%s\n", _window, _title.c_str(), _icon_title.c_str(),@@ -81,7 +82,8 @@ _iconic ? "yes" : "no",
_max_vert ? "yes" : "no", _max_horz ? "yes" : "no", _fullscreen ? "yes" : "no", - _floating ? "yes" : "no"); + _floating ? "yes" : "no", + _positioned ? "yes" : "no"); #endif }@@ -239,20 +241,26 @@ _max_x = _max_y = INT_MAX;
// get the hints from the window if (XGetWMNormalHints(otk::OBDisplay::display, _window, &size, &ret)) { + _positioned = (size.flags & (PPosition|USPosition)); + if (size.flags & PWinGravity) _gravity = size.win_gravity; + if (size.flags & PMinSize) { _min_x = size.min_width; _min_y = size.min_height; } + if (size.flags & PMaxSize) { _max_x = size.max_width; _max_y = size.max_height; } + if (size.flags & PBaseSize) { _base_x = size.base_width; _base_y = size.base_height; } + if (size.flags & PResizeInc) { _inc_x = size.width_inc; _inc_y = size.height_inc;
M
src/client.hh
→
src/client.hh
@@ -103,6 +103,10 @@ //! The state of the window, one of WithdrawnState, IconicState, or
//! NormalState 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