Problem: Athena and Motif: when maximized scrollbar position is wrong.
Solution: Implement the scrollbar padding functions. (closes #9712)
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
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4320,
/**/
4319,
/**/