terminal: Handle output transform

We pick the highest scale of any output the terminal is on, and the
transform from the last one it entered.
dev
Alexander Larsson 12 years ago committed by Kristian Høgsberg
parent d68f523f30
commit de79dd0485
  1. 13
      clients/terminal.c

@ -933,7 +933,7 @@ redraw_handler(struct widget *widget, void *data)
surface = window_get_surface(terminal->window); surface = window_get_surface(terminal->window);
widget_get_allocation(terminal->widget, &allocation); widget_get_allocation(terminal->widget, &allocation);
cr = cairo_create(surface); cr = widget_cairo_create(terminal->widget);
cairo_rectangle(cr, allocation.x, allocation.y, cairo_rectangle(cr, allocation.x, allocation.y,
allocation.width, allocation.height); allocation.width, allocation.height);
cairo_clip(cr); cairo_clip(cr);
@ -2517,6 +2517,16 @@ motion_handler(struct widget *widget,
return CURSOR_IBEAM; return CURSOR_IBEAM;
} }
static void
output_handler(struct window *window, struct output *output, int enter,
void *data)
{
if (enter)
window_set_buffer_transform(window, output_get_transform(output));
window_set_buffer_scale(window, window_get_output_scale(window));
window_schedule_redraw(window);
}
static struct terminal * static struct terminal *
terminal_create(struct display *display) terminal_create(struct display *display)
{ {
@ -2549,6 +2559,7 @@ terminal_create(struct display *display)
window_set_keyboard_focus_handler(terminal->window, window_set_keyboard_focus_handler(terminal->window,
keyboard_focus_handler); keyboard_focus_handler);
window_set_fullscreen_handler(terminal->window, fullscreen_handler); window_set_fullscreen_handler(terminal->window, fullscreen_handler);
window_set_output_handler(terminal->window, output_handler);
window_set_close_handler(terminal->window, close_handler); window_set_close_handler(terminal->window, close_handler);
widget_set_redraw_handler(terminal->widget, redraw_handler); widget_set_redraw_handler(terminal->widget, redraw_handler);

Loading…
Cancel
Save