On Wed, Feb 26, 2014 at 03:53:11PM +0100, Manuel Bachmann wrote: > Temporarily show minimized surfaces when switching between > surfaces with the keyboard. If the final selected one was > minimized, it will be restored. > > Signed-off-by: Manuel Bachmann <manuel.bachm...@open.eurogiciel.org>
Thanks, both patches applied. Kristian > --- > desktop-shell/shell.c | 25 +++++++++++++++++++++++++ > 1 file changed, 25 insertions(+) > > diff --git a/desktop-shell/shell.c b/desktop-shell/shell.c > index 8ad528e..fb87587 100644 > --- a/desktop-shell/shell.c > +++ b/desktop-shell/shell.c > @@ -5179,6 +5179,7 @@ struct switcher { > struct weston_surface *current; > struct wl_listener listener; > struct weston_keyboard_grab grab; > + struct wl_array minimized_array; > }; > > static void > @@ -5189,6 +5190,16 @@ switcher_next(struct switcher *switcher) > struct shell_surface *shsurf; > struct workspace *ws = get_current_workspace(switcher->shell); > > + /* temporary re-display minimized surfaces */ > + struct weston_view *tmp; > + struct weston_view **minimized; > + wl_list_for_each_safe(view, tmp, > &switcher->shell->minimized_layer.view_list, layer_link) { > + wl_list_remove(&view->layer_link); > + wl_list_insert(&ws->layer.view_list, &view->layer_link); > + minimized = wl_array_add(&switcher->minimized_array, sizeof > *minimized); > + *minimized = view; > + } > + > wl_list_for_each(view, &ws->layer.view_list, layer_link) { > shsurf = get_shell_surface(view->surface); > if (shsurf && > @@ -5260,6 +5271,19 @@ switcher_destroy(struct switcher *switcher) > weston_keyboard_end_grab(keyboard); > if (keyboard->input_method_resource) > keyboard->grab = &keyboard->input_method_grab; > + > + /* re-hide surfaces that were temporary shown during the switch */ > + struct weston_view **minimized; > + wl_array_for_each(minimized, &switcher->minimized_array) { > + /* with the exception of the current selected */ > + if ((*minimized)->surface != switcher->current) { > + wl_list_remove(&(*minimized)->layer_link); > + > wl_list_insert(&switcher->shell->minimized_layer.view_list, > &(*minimized)->layer_link); > + weston_view_damage_below(*minimized); > + } > + } > + wl_array_release(&switcher->minimized_array); > + > free(switcher); > } > > @@ -5312,6 +5336,7 @@ switcher_binding(struct weston_seat *seat, uint32_t > time, uint32_t key, > switcher->current = NULL; > switcher->listener.notify = switcher_handle_surface_destroy; > wl_list_init(&switcher->listener.link); > + wl_array_init(&switcher->minimized_array); > > restore_all_output_modes(shell->compositor); > lower_fullscreen_layer(switcher->shell); > -- > 1.7.10.4 > > _______________________________________________ > wayland-devel mailing list > wayland-devel@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list wayland-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/wayland-devel