diff options
| -rw-r--r-- | data/rc.xml | 3 | ||||
| -rw-r--r-- | openbox/client.c | 84 | ||||
| -rw-r--r-- | openbox/screen.c | 7 |
3 files changed, 50 insertions, 44 deletions
diff --git a/data/rc.xml b/data/rc.xml index fa673c8d..6292f9c5 100644 --- a/data/rc.xml +++ b/data/rc.xml @@ -503,7 +503,8 @@ </menu> <!-- this section is commented out.. remove this and the ending comment if you - want to use it --> + want to use it + <applications> <!-- the name or the class can be set, or both. this is used to match windows when they appear. role can optionally be set as well, to diff --git a/openbox/client.c b/openbox/client.c index 68dfedce..358b4455 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -735,11 +735,13 @@ static ObAppSettings *client_get_settings_state(ObClient *self) if (app->name && !g_pattern_match(app->name, strlen(self->name), self->name, NULL)) match = FALSE; - if (app->class && - !g_pattern_match(app->class, strlen(self->class),self->class,NULL)) + else if (app->class && + !g_pattern_match(app->class, + strlen(self->class), self->class, NULL)) match = FALSE; - if (app->role && - !g_pattern_match(app->role, strlen(self->role), self->role, NULL)) + else if (app->role && + !g_pattern_match(app->role, + strlen(self->role), self->role, NULL)) match = FALSE; if (match) { @@ -751,46 +753,44 @@ static ObAppSettings *client_get_settings_state(ObClient *self) } } - if (settings) { - if (settings->shade != -1) - self->shaded = !!settings->shade; - if (settings->decor != -1) - self->undecorated = !settings->decor; - if (settings->iconic != -1) - self->iconic = !!settings->iconic; - if (settings->skip_pager != -1) - self->skip_pager = !!settings->skip_pager; - if (settings->skip_taskbar != -1) - self->skip_taskbar = !!settings->skip_taskbar; + if (settings->shade != -1) + self->shaded = !!settings->shade; + if (settings->decor != -1) + self->undecorated = !settings->decor; + if (settings->iconic != -1) + self->iconic = !!settings->iconic; + if (settings->skip_pager != -1) + self->skip_pager = !!settings->skip_pager; + if (settings->skip_taskbar != -1) + self->skip_taskbar = !!settings->skip_taskbar; - if (settings->max_vert != -1) - self->max_vert = !!settings->max_vert; - if (settings->max_horz != -1) - self->max_horz = !!settings->max_horz; + if (settings->max_vert != -1) + self->max_vert = !!settings->max_vert; + if (settings->max_horz != -1) + self->max_horz = !!settings->max_horz; - if (settings->fullscreen != -1) - self->fullscreen = !!settings->fullscreen; + if (settings->fullscreen != -1) + self->fullscreen = !!settings->fullscreen; - if (settings->desktop) { - if (settings->desktop == DESKTOP_ALL) - self->desktop = settings->desktop; - else if (settings->desktop > 0 && - settings->desktop <= screen_num_desktops) - self->desktop = settings->desktop - 1; - } + if (settings->desktop) { + if (settings->desktop == DESKTOP_ALL) + self->desktop = settings->desktop; + else if (settings->desktop > 0 && + settings->desktop <= screen_num_desktops) + self->desktop = settings->desktop - 1; + } - if (settings->layer == -1) { - self->below = TRUE; - self->above = FALSE; - } - else if (settings->layer == 0) { - self->below = FALSE; - self->above = FALSE; - } - else if (settings->layer == 1) { - self->below = FALSE; - self->above = TRUE; - } + if (settings->layer == -1) { + self->below = TRUE; + self->above = FALSE; + } + else if (settings->layer == 0) { + self->below = FALSE; + self->above = FALSE; + } + else if (settings->layer == 1) { + self->below = FALSE; + self->above = TRUE; } return settings; } @@ -2957,6 +2957,10 @@ void client_iconify(ObClient *self, gboolean iconic, gboolean curdesk, /* move up the transient chain as far as possible first */ self = client_search_top_normal_parent(self); client_iconify_recursive(self, iconic, curdesk, hide_animation); + + /* try focus the window that was de-iconified if focusNew is on */ + if (!iconic && config_focus_new) + client_focus(self); } } diff --git a/openbox/screen.c b/openbox/screen.c index 4ad46af7..26920f40 100644 --- a/openbox/screen.c +++ b/openbox/screen.c @@ -215,7 +215,6 @@ gboolean screen_annex() (wm_supported_pos - prop_atoms_start) - 1; i = 0; supported = g_new(gulong, num_support); - supported[i++] = prop_atoms.net_supporting_wm_check; supported[i++] = prop_atoms.net_wm_full_placement; supported[i++] = prop_atoms.net_current_desktop; supported[i++] = prop_atoms.net_number_of_desktops; @@ -257,8 +256,6 @@ gboolean screen_annex() supported[i++] = prop_atoms.net_wm_action_fullscreen; supported[i++] = prop_atoms.net_wm_action_change_desktop; supported[i++] = prop_atoms.net_wm_action_close; - supported[i++] = prop_atoms.net_wm_action_above; - supported[i++] = prop_atoms.net_wm_action_below; supported[i++] = prop_atoms.net_wm_state; supported[i++] = prop_atoms.net_wm_state_modal; supported[i++] = prop_atoms.net_wm_state_maximized_vert; @@ -284,6 +281,10 @@ gboolean screen_annex() supported[i++] = prop_atoms.net_wm_sync_request_counter; #endif + supported[i++] = prop_atoms.net_supporting_wm_check; + supported[i++] = prop_atoms.net_wm_action_above; + supported[i++] = prop_atoms.net_wm_action_below; + supported[i++] = prop_atoms.kde_wm_change_state; supported[i++] = prop_atoms.kde_net_wm_frame_strut; supported[i++] = prop_atoms.kde_net_wm_window_type_override; |
