[gnome-builder] libide/sourceview: fix zoom after large zoom out
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] libide/sourceview: fix zoom after large zoom out
- Date: Sun, 2 Oct 2022 01:17:19 +0000 (UTC)
commit d9fdb7e8230cad34a856a1e74ea4d45df8bdc1a3
Author: Christian Hergert <chergert redhat com>
Date: Sat Oct 1 18:17:12 2022 -0700
libide/sourceview: fix zoom after large zoom out
We need to maintain font_scale specifically because it's relative to the
scale of the font description. Therefore, just special case the zoom in.
Fixes #1836
src/libide/sourceview/ide-source-view.c | 24 ++++++++++++++++++++++--
1 file changed, 22 insertions(+), 2 deletions(-)
---
diff --git a/src/libide/sourceview/ide-source-view.c b/src/libide/sourceview/ide-source-view.c
index f1d1088d5..9d93a4617 100644
--- a/src/libide/sourceview/ide-source-view.c
+++ b/src/libide/sourceview/ide-source-view.c
@@ -962,8 +962,28 @@ ide_source_view_set_font_scale (IdeSourceView *self,
if (self->font_scale != font_scale)
{
+ /* If we're zooming in from zoom out, make sure we're actually
+ * making progress zooming.
+ */
+ if (self->font_scale < 0 && self->font_scale+1 == font_scale)
+ {
+ int size = pango_font_description_get_size (self->font_desc) / PANGO_SCALE;
+
+ if (self->font_scale <= -size)
+ {
+ /* We want to make progress, and -size that requires
+ * incrementing twice.
+ */
+ self->font_scale = -size + 1 + 1;
+ goto update;
+ }
+ }
+
self->font_scale = font_scale;
+
+ update:
ide_source_view_update_css (self);
+
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_FONT_SCALE]);
g_object_notify_by_pspec (G_OBJECT (self), properties [PROP_ZOOM_LEVEL]);
}
@@ -1003,9 +1023,9 @@ ide_source_view_zoom (IdeSourceView *self,
g_assert (IDE_IS_SOURCE_VIEW (self));
if (amount == 0)
- self->font_scale = 0;
+ ide_source_view_set_font_scale (self, 0);
else
- self->font_scale += amount;
+ ide_source_view_set_font_scale (self, self->font_scale + amount);
ide_source_view_update_css (self);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]