Bug#1034289: inkscape: canvas stops updating completely when trying to edit a text box

James Addison <[email protected]>
Newsgroups gmane.linux.debian.devel.gtk-gnome
Message-ID <168203762415.46013.2839663099033269955.reportbug__39993.5565002792$1682037940$gmane$org@frontier>
Source: inkscape
Followup-For: Bug #1034289
X-Debbugs-Cc: [email protected], [email protected]
Control: forwarded -1 https://gitlab.com/inkscape/inkscape/-/issues/3664

Dear Maintainer (and cc'ing the GTK-GNOME list),

Following on from Giuseppe's upstream link:

> Additional information: the issue I'm seeing seems to match upstream
> issue #3664
> https://gitlab.com/inkscape/inkscape/-/issues/3664

... to a further-upstream bug[1] in the GTK issue tracker, there's a reference
to GDK window repainting as the possible cause[2] (with a suggested fix).

The (untested) patch I've attached here applies the suggested change to
src:gtk+3.0 (and was created from version gtk+3.0-3.24.37 of it).

I don't yet have an environment prepared to build and test it, but will try to
create one soon.

Thanks,
James

[1] - https://gitlab.gnome.org/GNOME/gtk/-/issues/2560

[2] - https://gitlab.gnome.org/GNOME/gtk/-/issues/2560#note_757809
gdk_relax_window_frame_repainting.patch (text/plain, 1 KB)
Description: gdkwindow: allow frame paint events to occur for non-toplevel windows
 .
 Partially-reverts upstream commit fc569f1ac6ff108afc17f7f439480273826af3a6.
Author: James Addison <[email protected]>
Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/2560
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034289
Last-Update: 2023-04-21

--- gtk+3.0-3.24.37.orig/gdk/gdkwindow.c
+++ gtk+3.0-3.24.37/gdk/gdkwindow.c
@@ -3253,7 +3253,7 @@ gdk_window_begin_draw_frame (GdkWindow
       return NULL;
     }
 
-  if (gdk_window_has_native (window) && gdk_window_is_toplevel (window))
+  if (gdk_window_has_native (window))
     gdk_window_begin_paint_internal (window, region);
 
   impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
@@ -3307,7 +3307,7 @@ gdk_window_end_draw_frame (GdkWindow
       return;
     }
 
-  if (gdk_window_has_native (window) && gdk_window_is_toplevel (window))
+  if (gdk_window_has_native (window))
     gdk_window_end_paint_internal (window);
 
   impl_class = GDK_WINDOW_IMPL_GET_CLASS (window->impl);
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.