diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2014-08-12 15:07:51 +0200 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2014-08-18 13:26:41 +0300 |
commit | e67118c80ad411ac46b7096aae2635510c80ea6d (patch) | |
tree | 15297809709849fa4166b76323a3be36e44be0d4 | |
parent | 1046f121f774e9248260d2bdd244eca111773426 (diff) | |
download | weston-e67118c80ad411ac46b7096aae2635510c80ea6d.tar.gz |
desktop-shell: add option to avoid creating the panel
This option is so we can disable showing any panel at all. The default
is to continue showing the panel and no example is added to weston.ini
because it's an uncommon request.
Tested-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
-rw-r--r-- | clients/desktop-shell.c | 38 | ||||
-rw-r--r-- | man/weston.ini.man | 5 |
2 files changed, 36 insertions, 7 deletions
diff --git a/clients/desktop-shell.c b/clients/desktop-shell.c index 73b21346..db4a1fd7 100644 --- a/clients/desktop-shell.c +++ b/clients/desktop-shell.c @@ -1130,7 +1130,8 @@ static void output_destroy(struct output *output) { background_destroy(output->background); - panel_destroy(output->panel); + if (output->panel) + panel_destroy(output->panel); wl_output_destroy(output->output); wl_list_remove(&output->link); @@ -1160,7 +1161,8 @@ output_handle_geometry(void *data, { struct output *output = data; - window_set_buffer_transform(output->panel->window, transform); + if (output->panel) + window_set_buffer_transform(output->panel->window, transform); window_set_buffer_transform(output->background->window, transform); } @@ -1187,7 +1189,8 @@ output_handle_scale(void *data, { struct output *output = data; - window_set_buffer_scale(output->panel->window, scale); + if (output->panel) + window_set_buffer_scale(output->panel->window, scale); window_set_buffer_scale(output->background->window, scale); } @@ -1198,15 +1201,36 @@ static const struct wl_output_listener output_listener = { output_handle_scale }; +static int +want_panel(struct desktop *desktop) +{ + struct weston_config_section *s; + char *location = NULL; + int ret = 1; + + s = weston_config_get_section(desktop->config, "shell", NULL, NULL); + weston_config_section_get_string(s, "panel-location", + &location, "top"); + + if (strcmp(location, "top") != 0) + ret = 0; + + free(location); + + return ret; +} + static void output_init(struct output *output, struct desktop *desktop) { struct wl_surface *surface; - output->panel = panel_create(desktop); - surface = window_get_wl_surface(output->panel->window); - desktop_shell_set_panel(desktop->shell, - output->output, surface); + if (want_panel(desktop)) { + output->panel = panel_create(desktop); + surface = window_get_wl_surface(output->panel->window); + desktop_shell_set_panel(desktop->shell, + output->output, surface); + } output->background = background_create(desktop); surface = window_get_wl_surface(output->background->window); diff --git a/man/weston.ini.man b/man/weston.ini.man index 3d8eef90..22f9f0dd 100644 --- a/man/weston.ini.man +++ b/man/weston.ini.man @@ -186,6 +186,11 @@ digit pairs are in order transparency, red, green, and blue. Examples: .fi .RE .TP 7 +.BI "panel-location=" top +sets the location of the panel (string). Can be +.B top, +.B none. +.TP 7 .BI "locking=" true enables screen locking (boolean). .TP 7 |