summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2014-08-12 15:07:51 +0200
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>2014-08-18 13:26:41 +0300
commite67118c80ad411ac46b7096aae2635510c80ea6d (patch)
tree15297809709849fa4166b76323a3be36e44be0d4
parent1046f121f774e9248260d2bdd244eca111773426 (diff)
downloadweston-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.c38
-rw-r--r--man/weston.ini.man5
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