Hi

On Sun, Dec 19, 2021 at 6:33 AM Alexander Orzechowski <
orzechowski.alexan...@gmail.com> wrote:

> In these cases, we only care about the size of the virtual console
> itself. Previously, these calculations were made using the size of
> the entire window, which would include the size of the virtual console
> plus all the ui elements around it.
>
> Signed-off-by: Alexander Orzechowski <orzechowski.alexan...@gmail.com>
>

It's not obvious to me that the drawing area doesn't have its own window.

Nonetheless, it is better to use the allocated size.

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>

---
>  ui/gtk.c | 26 ++++++++++----------------
>  1 file changed, 10 insertions(+), 16 deletions(-)
>
> diff --git a/ui/gtk.c b/ui/gtk.c
> index 428f02f2df..824334ff3d 100644
> --- a/ui/gtk.c
> +++ b/ui/gtk.c
> @@ -340,8 +340,8 @@ static void gd_update_full_redraw(VirtualConsole *vc)
>  {
>      GtkWidget *area = vc->gfx.drawing_area;
>      int ww, wh;
> -    ww = gdk_window_get_width(gtk_widget_get_window(area));
> -    wh = gdk_window_get_height(gtk_widget_get_window(area));
> +    ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
> +    wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
>  #if defined(CONFIG_OPENGL)
>      if (vc->gfx.gls && gtk_use_gl_area) {
>          gtk_gl_area_queue_render(GTK_GL_AREA(vc->gfx.drawing_area));
> @@ -387,7 +387,6 @@ static void gd_update(DisplayChangeListener *dcl,
>                        int x, int y, int w, int h)
>  {
>      VirtualConsole *vc = container_of(dcl, VirtualConsole, gfx.dcl);
> -    GdkWindow *win;
>      int x1, x2, y1, y2;
>      int mx, my;
>      int fbw, fbh;
> @@ -414,12 +413,8 @@ static void gd_update(DisplayChangeListener *dcl,
>      fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x;
>      fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y;
>
> -    win = gtk_widget_get_window(vc->gfx.drawing_area);
> -    if (!win) {
> -        return;
> -    }
> -    ww = gdk_window_get_width(win);
> -    wh = gdk_window_get_height(win);
> +    ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
> +    wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
>
>      mx = my = 0;
>      if (ww > fbw) {
> @@ -788,8 +783,8 @@ static gboolean gd_draw_event(GtkWidget *widget,
> cairo_t *cr, void *opaque)
>      fbw = surface_width(vc->gfx.ds);
>      fbh = surface_height(vc->gfx.ds);
>
> -    ww = gdk_window_get_width(gtk_widget_get_window(widget));
> -    wh = gdk_window_get_height(gtk_widget_get_window(widget));
> +    ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
> +    wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
>
>      if (s->full_screen) {
>          vc->gfx.scale_x = (double)ww / fbw;
> @@ -838,7 +833,6 @@ static gboolean gd_motion_event(GtkWidget *widget,
> GdkEventMotion *motion,
>  {
>      VirtualConsole *vc = opaque;
>      GtkDisplayState *s = vc->s;
> -    GdkWindow *window;
>      int x, y;
>      int mx, my;
>      int fbh, fbw;
> @@ -851,10 +845,10 @@ static gboolean gd_motion_event(GtkWidget *widget,
> GdkEventMotion *motion,
>      fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x;
>      fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y;
>
> -    window = gtk_widget_get_window(vc->gfx.drawing_area);
> -    ww = gdk_window_get_width(window);
> -    wh = gdk_window_get_height(window);
> -    ws = gdk_window_get_scale_factor(window);
> +    ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
> +    wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
> +    ws = gdk_window_get_scale_factor(
> +            gtk_widget_get_window(vc->gfx.drawing_area));
>
>      mx = my = 0;
>      if (ww > fbw) {
> --
> 2.34.1
>
>
>

-- 
Marc-André Lureau

Reply via email to