if (otk::Property::get(_window, otk::Property::atoms.net_wm_desktop,
otk::Property::atoms.cardinal,
if (otk::Property::get(_window, otk::Property::atoms.net_wm_desktop,
otk::Property::atoms.cardinal,
if (otk::Property::get(_window, otk::Property::atoms.net_wm_window_type,
otk::Property::atoms.atom, &num, &val)) {
// use the first value that we know about in the array
if (otk::Property::get(_window, otk::Property::atoms.net_wm_window_type,
otk::Property::atoms.atom, &num, &val)) {
// use the first value that we know about in the array
if (otk::Property::get(_window, otk::Property::atoms.net_wm_state,
otk::Property::atoms.atom, &num, &state)) {
if (otk::Property::get(_window, otk::Property::atoms.net_wm_state,
otk::Property::atoms.atom, &num, &state)) {
Pixmap *data;
if (otk::Property::get(_window, otk::Property::atoms.kwm_win_icon,
otk::Property::atoms.kwm_win_icon, &num, &data)) {
Pixmap *data;
if (otk::Property::get(_window, otk::Property::atoms.kwm_win_icon,
otk::Property::atoms.kwm_win_icon, &num, &data)) {
- if (!(action == State_Add || action == State_Remove ||
- action == State_Toggle))
+ if (!(action == otk::Property::atoms.net_wm_state_add ||
+ action == otk::Property::atoms.net_wm_state_remove ||
+ action == otk::Property::atoms.net_wm_state_toggle))
return; // an invalid action was passed to the client message, ignore it
for (int i = 0; i < 2; ++i) {
return; // an invalid action was passed to the client message, ignore it
for (int i = 0; i < 2; ++i) {
e.data.l[0] == 2 ? "Toggle" : "INVALID"),
e.data.l[1], e.data.l[2], _window);
#endif
e.data.l[0] == 2 ? "Toggle" : "INVALID"),
e.data.l[1], e.data.l[2], _window);
#endif
} else if (e.message_type == otk::Property::atoms.net_close_window) {
#ifdef DEBUG
printf("net_close_window for 0x%lx\n", _window);
} else if (e.message_type == otk::Property::atoms.net_close_window) {
#ifdef DEBUG
printf("net_close_window for 0x%lx\n", _window);
+ } else if (e.message_type == otk::Property::atoms.openbox_restack_window) {
+#ifdef DEBUG
+ printf("openbox_restack_window for 0x%lx\n", _window);
+#endif
+ if (e.data.l[0] == 0)
+ openbox->screen(_screen)->raiseWindow(this);
+ else if (e.data.l[0] == 1)
+ openbox->screen(_screen)->lowerWindow(this);
{
if (!(_functions & Func_Move)) return;
frame->frameGravity(x, y); // get the client's position based on x,y for the
// frame
{
if (!(_functions & Func_Move)) return;
frame->frameGravity(x, y); // get the client's position based on x,y for the
// frame
- XEvent event;
- event.type = ConfigureNotify;
- event.xconfigure.display = **otk::display;
- event.xconfigure.event = _window;
- event.xconfigure.window = _window;
+ if (final) {
+ XEvent event;
+ event.type = ConfigureNotify;
+ event.xconfigure.display = **otk::display;
+ event.xconfigure.event = _window;
+ event.xconfigure.window = _window;
- // root window coords with border in mind
- event.xconfigure.x = x - _border_width + frame->size().left;
- event.xconfigure.y = y - _border_width + frame->size().top;
+ // root window coords with border in mind
+ event.xconfigure.x = x - _border_width + frame->size().left;
+ event.xconfigure.y = y - _border_width + frame->size().top;
- event.xconfigure.width = _area.width();
- event.xconfigure.height = _area.height();
- event.xconfigure.border_width = _border_width;
- event.xconfigure.above = frame->plate();
- event.xconfigure.override_redirect = False;
- XSendEvent(event.xconfigure.display, event.xconfigure.window, False,
- StructureNotifyMask, &event);
+ event.xconfigure.width = _area.width();
+ event.xconfigure.height = _area.height();
+ event.xconfigure.border_width = _border_width;
+ event.xconfigure.above = frame->plate();
+ event.xconfigure.override_redirect = False;
+ XSendEvent(event.xconfigure.display, event.xconfigure.window, False,
+ StructureNotifyMask, &event);
- printf("Sent synthetic ConfigureNotify %d,%d %d,%d to 0x%lx\n",
- event.xconfigure.x, event.xconfigure.y, event.xconfigure.width,
- event.xconfigure.height, event.xconfigure.window);
+ printf("Sent synthetic ConfigureNotify %d,%d %d,%d to 0x%lx\n",
+ event.xconfigure.x, event.xconfigure.y, event.xconfigure.width,
+ event.xconfigure.height, event.xconfigure.window);
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &readdim)) {
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &readdim)) {
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &dimensions)) {
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &dimensions)) {
if (dir == 0 || dir == 1) { // horz
x = (signed int)dimensions[0];
w = (signed int)dimensions[2];
if (dir == 0 || dir == 1) { // horz
x = (signed int)dimensions[0];
w = (signed int)dimensions[2];
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &dimensions)) {
if (otk::Property::get(_window, otk::Property::atoms.openbox_premax,
otk::Property::atoms.cardinal, &n,
(long unsigned**) &dimensions)) {