Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sun, 25 Oct 2020 09:50:08 UTC Commit: 6673ea5b49260beffe2c258889f9bd1427f33bac https://github.com/geany/geany/commit/6673ea5b49260beffe2c258889f9bd1427f33b...
Log Message: ----------- Size symbols and fold margins proportional to line height
This makes those margin better adapt larger font sizes and zooms.
Fixes #1733.
Modified Paths: -------------- src/editor.c src/sciwrappers.c
Modified: src/editor.c 2 lines changed, 2 insertions(+), 0 deletions(-) =================================================================== @@ -1187,6 +1187,8 @@ static gboolean on_editor_notify(G_GNUC_UNUSED GObject *object, GeanyEditor *edi case SCN_ZOOM: /* recalculate line margin width */ sci_set_line_numbers(sci, editor_prefs.show_linenumber_margin); + sci_set_symbol_margin(sci, editor_prefs.show_markers_margin); + sci_set_folding_margin_visible(sci, editor_prefs.folding); break; } /* we always return FALSE here to let plugins handle the event too */
Modified: src/sciwrappers.c 25 lines changed, 23 insertions(+), 2 deletions(-) =================================================================== @@ -144,12 +144,31 @@ void sci_set_mark_long_lines(ScintillaObject *sci, gint type, gint column, const }
+/* compute margin width based on ratio of line height */ +static gint margin_width_from_line_height(ScintillaObject *sci, gdouble ratio, gint threshold) +{ + const gint line_height = SSM(sci, SCI_TEXTHEIGHT, 0, 0); + gint width; + + width = line_height * ratio; + /* round down to an even size */ + width = width - (width % 2); + /* if under threshold, just use the line height */ + if (width < threshold) + width = MIN(threshold, line_height); + + return width; +} + + /* symbol margin visibility */ void sci_set_symbol_margin(ScintillaObject *sci, gboolean set) { if (set) { - SSM(sci, SCI_SETMARGINWIDTHN, 1, 16); + const gint width = margin_width_from_line_height(sci, 0.88, 16); + + SSM(sci, SCI_SETMARGINWIDTHN, 1, width); SSM(sci, SCI_SETMARGINSENSITIVEN, 1, TRUE); } else @@ -165,7 +184,9 @@ void sci_set_folding_margin_visible(ScintillaObject *sci, gboolean set) { if (set) { - SSM(sci, SCI_SETMARGINWIDTHN, 2, 12); + const gint width = margin_width_from_line_height(sci, 0.66, 12); + + SSM(sci, SCI_SETMARGINWIDTHN, 2, width); SSM(sci, SCI_SETMARGINSENSITIVEN, 2, TRUE); } else
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).