}
static void
-menu_func(struct window *window, struct input *input, int index, void *data)
+menu_func(void *data, struct input *input, int index)
{
printf("Selected index %d from a panel menu.\n", index);
}
image = NULL;
if (background->image)
image = load_cairo_surface(background->image);
+ else if (background->color == 0)
+ image = load_cairo_surface(DATADIR "/weston/pattern.png");
if (image && background->type != -1) {
im_w = cairo_image_surface_get_width(image);
case BACKGROUND_SCALE:
cairo_matrix_init_scale(&matrix, sx, sy);
cairo_pattern_set_matrix(pattern, &matrix);
+ cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
break;
case BACKGROUND_SCALE_CROP:
s = (sx < sy) ? sx : sy;
cairo_matrix_init_translate(&matrix, tx, ty);
cairo_matrix_scale(&matrix, s, s);
cairo_pattern_set_matrix(pattern, &matrix);
+ cairo_pattern_set_extend(pattern, CAIRO_EXTEND_PAD);
break;
case BACKGROUND_TILE:
cairo_pattern_set_extend(pattern, CAIRO_EXTEND_REPEAT);
s = weston_config_get_section(desktop->config, "shell", NULL, NULL);
weston_config_section_get_string(s, "background-image",
- &background->image,
- DATADIR "/weston/pattern.png");
+ &background->image, NULL);
weston_config_section_get_uint(s, "background-color",
- &background->color, 0xff002244);
+ &background->color, 0);
weston_config_section_get_string(s, "background-type",
&type, "tile");
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);
{
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);
}
{
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);
}
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);