diff options
author | qsmodo <75080827+qsmodo@users.noreply.github.com> | 2022-02-07 15:57:50 +0000 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-02-07 15:57:50 +0000 |
commit | 28f1a51bde36e2770dd54c9e2ae69a26cafa5a64 (patch) | |
tree | 13ffaea9fbf64f42af13e039f2adcc5f4922d110 /src | |
parent | 4e713bafc0ae191b1830e3cd3c323ebd695bc3a1 (diff) |
patch 8.2.4320: Athena and Motif: when maximized scrollbar position is wrongv8.2.4320
Problem: Athena and Motif: when maximized scrollbar position is wrong.
Solution: Implement the scrollbar padding functions. (closes #9712)
Diffstat (limited to 'src')
-rw-r--r-- | src/gui_athena.c | 22 | ||||
-rw-r--r-- | src/gui_motif.c | 22 | ||||
-rw-r--r-- | src/version.c | 2 |
3 files changed, 34 insertions, 12 deletions
diff --git a/src/gui_athena.c b/src/gui_athena.c index db13bd34f7..6cbabf81d2 100644 --- a/src/gui_athena.c +++ b/src/gui_athena.c @@ -1894,17 +1894,27 @@ gui_mch_set_scrollbar_pos( int gui_mch_get_scrollbar_xpadding(void) { - // TODO: Calculate the padding for adjust scrollbar position when the - // Window is maximized. - return 0; + int xpad; + Dimension tw, ww; + Position tx; + + XtVaGetValues(textArea, XtNwidth, &tw, XtNx, &tx, NULL); + XtVaGetValues(vimShell, XtNwidth, &ww, NULL); + xpad = ww - tw - tx - gui.scrollbar_width; + return (xpad < 0) ? 0 : xpad; } int gui_mch_get_scrollbar_ypadding(void) { - // TODO: Calculate the padding for adjust scrollbar position when the - // Window is maximized. - return 0; + int ypad; + Dimension th, wh; + Position ty; + + XtVaGetValues(textArea, XtNheight, &th, XtNy, &ty, NULL); + XtVaGetValues(vimShell, XtNheight, &wh, NULL); + ypad = wh - th - ty - gui.scrollbar_height; + return (ypad < 0) ? 0 : ypad; } void diff --git a/src/gui_motif.c b/src/gui_motif.c index 8328045bab..ef3747d8d2 100644 --- a/src/gui_motif.c +++ b/src/gui_motif.c @@ -1745,17 +1745,27 @@ gui_mch_set_scrollbar_pos( int gui_mch_get_scrollbar_xpadding(void) { - // TODO: Calculate the padding for adjust scrollbar position when the - // Window is maximized. - return 0; + int xpad; + Dimension tw, ww; + Position tx; + + XtVaGetValues(textArea, XtNwidth, &tw, XtNx, &tx, NULL); + XtVaGetValues(vimShell, XtNwidth, &ww, NULL); + xpad = ww - tw - tx - gui.scrollbar_width; + return (xpad < 0) ? 0 : xpad; } int gui_mch_get_scrollbar_ypadding(void) { - // TODO: Calculate the padding for adjust scrollbar position when the - // Window is maximized. - return 0; + int ypad; + Dimension th, wh; + Position ty; + + XtVaGetValues(textArea, XtNheight, &th, XtNy, &ty, NULL); + XtVaGetValues(vimShell, XtNheight, &wh, NULL); + ypad = wh - th - ty - gui.scrollbar_height; + return (ypad < 0) ? 0 : ypad; } void diff --git a/src/version.c b/src/version.c index 3535adbeef..4fdeb2fdeb 100644 --- a/src/version.c +++ b/src/version.c @@ -747,6 +747,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 4320, +/**/ 4319, /**/ 4318, |