CREATE_(OB_CONFIG_FILE);
CREATE_(OB_WM_ACTION_UNDECORATE);
CREATE_(OB_WM_STATE_UNDECORATED);
++ ++ CREATE_(OB_WM_STATE_LOCKED);
++++ CREATE_(OB_LAST_DESKTOP);
CREATE_(OB_CONTROL);
CREATE_(OB_VERSION);
CREATE_(OB_APP_ROLE);
/* Openbox specific atoms */
++++ OBT_PROP_OB_FOCUS,
OBT_PROP_OB_WM_ACTION_UNDECORATE,
OBT_PROP_OB_WM_STATE_UNDECORATED,
++ ++ OBT_PROP_OB_WM_STATE_LOCKED,
OBT_PROP_OPENBOX_PID, /* this is depreecated in favour of ob_control */
OBT_PROP_OB_THEME,
OBT_PROP_OB_CONFIG_FILE,
menu_clear_entries(menu);
--- - for (desktop = 0; desktop < screen_num_desktops; desktop++) {
+++ + for (desktop_it = 0; desktop_it < screen_num_desktops; desktop_it++) {
gboolean empty = TRUE;
gboolean onlyiconic = TRUE;
++++ gboolean noicons = TRUE;
+++ +
+++ + desktop = desktop_it;
+++ + if (desktop == 0)
+++ + desktop = screen_desktop;
+++ + else if (desktop <= screen_desktop)
+++ + desktop -= 1;
menu_add_separator(menu, SEPARATOR, screen_desktop_names[desktop]);
for (it = focus_order; it; it = g_list_next(it)) {
ob_debug_type(OB_DEBUG_APP_BUGS,
"_NET_ACTIVE_WINDOW message for window %s is "
"missing source indication", client->title);
- if (!client->locked)
- client_activate(client, FALSE, FALSE, TRUE, TRUE,
- (e->xclient.data.l[0] == 0 ||
- e->xclient.data.l[0] == 2));
+ /* TODO(danakj) This should use
+ (e->xclient.data.l[0] == 0 ||
+ e->xclient.data.l[0] == 2)
+ to determine if a user requested the activation, however GTK+
+ applications seem unable to make this distinction ever
+ (including panels such as xfce4-panel and gnome-panel).
+ So we are left just assuming all activations are from the user.
+ */
+ client_activate(client, FALSE, FALSE, TRUE, TRUE, TRUE);
++++ } else if (msgtype == OBT_PROP_ATOM(OB_FOCUS)) {
++++ client_focus(client);
} else if (msgtype == OBT_PROP_ATOM(NET_WM_MOVERESIZE)) {
ob_debug("net_wm_moveresize for 0x%lx direction %d",
client->window, e->xclient.data.l[2]);
supported[i++] = OBT_PROP_ATOM(KDE_NET_WM_FRAME_STRUT);
supported[i++] = OBT_PROP_ATOM(KDE_NET_WM_WINDOW_TYPE_OVERRIDE);
++++ supported[i++] = OBT_PROP_ATOM(OB_FOCUS);
supported[i++] = OBT_PROP_ATOM(OB_WM_ACTION_UNDECORATE);
supported[i++] = OBT_PROP_ATOM(OB_WM_STATE_UNDECORATED);
++ ++ supported[i++] = OBT_PROP_ATOM(OB_WM_STATE_LOCKED);
supported[i++] = OBT_PROP_ATOM(OPENBOX_PID);
supported[i++] = OBT_PROP_ATOM(OB_THEME);
supported[i++] = OBT_PROP_ATOM(OB_CONFIG_FILE);
/* this calls screen_update_areas(), which we need ! */
dock_configure();
++++ edges_configure();
---- for (it = client_list; it; it = g_list_next(it)) {
---- client_move_onscreen(it->data, FALSE);
---- client_reconfigure(it->data, FALSE);
---- }
++++ // bug: this is done in screen_update_areas() already
++++ // for (it = client_list; it; it = g_list_next(it)) {
++++ // client_move_onscreen(it->data, FALSE);
++++ // client_reconfigure(it->data, FALSE);
++++ // }
}
void screen_set_num_desktops(guint num)