const otk::OBProperty *property = Openbox::instance->property();
// defaults to the current desktop
- _desktop = 0; // XXX: change this to the current desktop!
-
- property->get(_window, otk::OBProperty::net_wm_desktop,
- otk::OBProperty::Atom_Cardinal,
- &_desktop);
+ _desktop = Openbox::instance->screen(_screen)->desktop();
+
+ if (!property->get(_window, otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ (long unsigned*)&_desktop)) {
+ // make sure the hint exists
+ Openbox::instance->property()->set(_window,
+ otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ (unsigned)_desktop);
+ }
}
assert(target >= 0 || target == (signed)0xffffffff);
//assert(target == 0xffffffff || target < MAX);
- // XXX: move the window to the new desktop (and set root property)
+ if (!(target >= 0 || target == (signed)0xffffffff)) return;
+
_desktop = target;
+
+ Openbox::instance->property()->set(_window,
+ otk::OBProperty::net_wm_desktop,
+ otk::OBProperty::Atom_Cardinal,
+ (unsigned)_desktop);
+
+
+ // XXX: move the window to the new desktop
}
setDesktop(e.data.l[0]); // use the original event
} else if (e.message_type == property->atom(otk::OBProperty::net_wm_state)) {
// can't compress these
+#ifdef DEBUG
+ printf("net_wm_state for 0x%lx\n", _window);
+#endif
setState((StateAction)e.data.l[0], e.data.l[1], e.data.l[2]);
} else if (e.message_type ==
property->atom(otk::OBProperty::net_close_window)) {
+#ifdef DEBUG
+ printf("net_close_window for 0x%lx\n", _window);
+#endif
close();
} else if (e.message_type ==
property->atom(otk::OBProperty::net_active_window)) {
+#ifdef DEBUG
+ printf("net_active_window for 0x%lx\n", _window);
+#endif
focus();
Openbox::instance->screen(_screen)->restack(true, this); // raise
- } else {
}
}
void OBClient::focusHandler(const XFocusChangeEvent &e)
{
#ifdef DEBUG
- printf("FocusIn for 0x%lx\n", e.window);
+// printf("FocusIn for 0x%lx\n", e.window);
#endif // DEBUG
OtkEventHandler::focusHandler(e);
void OBClient::unfocusHandler(const XFocusChangeEvent &e)
{
#ifdef DEBUG
- printf("FocusOut for 0x%lx\n", e.window);
+// printf("FocusOut for 0x%lx\n", e.window);
#endif // DEBUG
OtkEventHandler::unfocusHandler(e);
frame->unfocus();
_focused = false;
- if (Openbox::instance->focusedClient() == this) {
- printf("UNFOCUSED!\n");
- Openbox::instance->setFocusedClient(this);
- }
+ if (Openbox::instance->focusedClient() == this)
+ Openbox::instance->setFocusedClient(0);
}
Openbox::instance->screen(_screen)->unmanageWindow(this);
}
-
-void OBClient::mapRequestHandler(const XMapRequestEvent &e)
-{
- printf("\nMAP REQUEST\n\n");
-
- otk::OtkEventHandler::mapRequestHandler(e);
-
- if (_shaded)
- shade(false);
- // XXX: uniconify the window
- focus();
-}
-
}