Work around a mysterious no-image zoom issue
This commit is contained in:
parent
8f98c623ee
commit
47b7600f5e
10
fiv-view.c
10
fiv-view.c
@ -506,8 +506,8 @@ fiv_view_realize(GtkWidget *widget)
|
|||||||
//
|
//
|
||||||
// It completely breaks the Quartz backend, so limit it to X11.
|
// It completely breaks the Quartz backend, so limit it to X11.
|
||||||
#ifdef GDK_WINDOWING_X11
|
#ifdef GDK_WINDOWING_X11
|
||||||
// FIXME: This causes some flicker while scrolling, because it disables
|
// Note that this disables double buffering, and sometimes causes artefacts,
|
||||||
// double buffering, see: https://gitlab.gnome.org/GNOME/gtk/-/issues/2560
|
// see: https://gitlab.gnome.org/GNOME/gtk/-/issues/2560
|
||||||
//
|
//
|
||||||
// If GTK+'s OpenGL integration fails to deliver, we need to use the window
|
// If GTK+'s OpenGL integration fails to deliver, we need to use the window
|
||||||
// directly, sidestepping the toolkit entirely.
|
// directly, sidestepping the toolkit entirely.
|
||||||
@ -647,6 +647,12 @@ set_scale_to_fit(FivView *self, bool scale_to_fit)
|
|||||||
static gboolean
|
static gboolean
|
||||||
set_scale(FivView *self, double scale, const GdkEvent *event)
|
set_scale(FivView *self, double scale, const GdkEvent *event)
|
||||||
{
|
{
|
||||||
|
// FIXME: Zooming to exactly 1:1 breaks rendering with some images
|
||||||
|
// when using a native X11 Window. This is a silly workaround.
|
||||||
|
GdkWindow *window = gtk_widget_get_window(GTK_WIDGET(self));
|
||||||
|
if (window && gdk_window_has_native(window) && scale == 1)
|
||||||
|
scale = 1.000000000000001;
|
||||||
|
|
||||||
if (self->scale == scale)
|
if (self->scale == scale)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user