1
0
forked from aniani/vim

patch 8.2.1228: scrollbars not flush against the window edges when maximised

Problem:    Scrollbars not flush against the window edges when maximised.
Solution:   Add padding. (Ken Takata, closes #5602, closes #6466)
This commit is contained in:
Bram Moolenaar
2020-07-17 20:43:43 +02:00
parent f5be8cdb77
commit 203ec7760d
16 changed files with 144 additions and 2 deletions

View File

@@ -1418,11 +1418,13 @@ gui_position_components(int total_width UNUSED)
if (gui.which_scrollbars[SBAR_BOTTOM])
gui_mch_set_scrollbar_pos(&gui.bottom_sbar,
text_area_x,
text_area_y + text_area_height,
text_area_y + text_area_height
+ gui_mch_get_scrollbar_ypadding(),
text_area_width,
gui.scrollbar_height);
gui.left_sbar_x = 0;
gui.right_sbar_x = text_area_x + text_area_width;
gui.right_sbar_x = text_area_x + text_area_width
+ gui_mch_get_scrollbar_xpadding();
--hold_gui_events;
}

View File

@@ -1889,6 +1889,22 @@ gui_mch_set_scrollbar_pos(
XtManageChild(sb->id);
}
int
gui_mch_get_scrollbar_xpadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
int
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
void
gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
{

View File

@@ -1008,6 +1008,22 @@ gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)
gtk_form_move_resize(GTK_FORM(gui.formwin), sb->id, x, y, w, h);
}
int
gui_mch_get_scrollbar_xpadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
int
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
/*
* Take action upon scrollbar dragging.
*/

View File

@@ -3665,6 +3665,22 @@ 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
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
void
gui_mch_create_scrollbar(
scrollbar_T *sb,

View File

@@ -4992,6 +4992,22 @@ gui_mch_set_scrollbar_pos(
#endif
}
int
gui_mch_get_scrollbar_xpadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
int
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
void
gui_mch_create_scrollbar(
scrollbar_T *sb,

View File

@@ -1743,6 +1743,22 @@ 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
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
void
gui_mch_enable_scrollbar(scrollbar_T *sb, int flag)
{

View File

@@ -1758,6 +1758,22 @@ gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h)
PtSetResource(sb->id, Pt_ARG_AREA, &area, 0);
}
int
gui_mch_get_scrollbar_xpadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
int
gui_mch_get_scrollbar_ypadding(void)
{
// TODO: Calculate the padding for adjust scrollbar position when the
// Window is maximized.
return 0;
}
void
gui_mch_create_scrollbar(scrollbar_T *sb, int orient)
{

View File

@@ -1412,6 +1412,34 @@ gui_mch_set_scrollbar_pos(
SWP_NOZORDER | SWP_NOACTIVATE | SWP_SHOWWINDOW);
}
int
gui_mch_get_scrollbar_xpadding(void)
{
RECT rcTxt, rcWnd;
int xpad;
GetWindowRect(s_textArea, &rcTxt);
GetWindowRect(s_hwnd, &rcWnd);
xpad = rcWnd.right - rcTxt.right - gui.scrollbar_width
- GetSystemMetrics(SM_CXFRAME)
- GetSystemMetrics(SM_CXPADDEDBORDER);
return (xpad < 0) ? 0 : xpad;
}
int
gui_mch_get_scrollbar_ypadding(void)
{
RECT rcTxt, rcWnd;
int ypad;
GetWindowRect(s_textArea, &rcTxt);
GetWindowRect(s_hwnd, &rcWnd);
ypad = rcWnd.bottom - rcTxt.bottom - gui.scrollbar_height
- GetSystemMetrics(SM_CYFRAME)
- GetSystemMetrics(SM_CXPADDEDBORDER);
return (ypad < 0) ? 0 : ypad;
}
void
gui_mch_create_scrollbar(
scrollbar_T *sb,

View File

@@ -21,6 +21,8 @@ void gui_mch_show_popupmenu(vimmenu_T *menu);
void gui_mch_def_colors(void);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, long val, long size, long max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);

View File

@@ -9,6 +9,8 @@ void gui_mch_menu_set_tip(vimmenu_T *menu);
void gui_mch_destroy_menu(vimmenu_T *menu);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, long val, long size, long max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);
char_u *gui_mch_browse(int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter);

View File

@@ -33,6 +33,8 @@ void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, int val, int size, int max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);

View File

@@ -36,6 +36,8 @@ void gui_mch_set_text_area_pos(int x, int y, int w, int h);
void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, long val, long size, long max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);
int gui_mch_adjust_charheight(void);

View File

@@ -23,6 +23,8 @@ void gui_mch_show_popupmenu(vimmenu_T *menu);
void gui_mch_def_colors(void);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, long val, long size, long max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);

View File

@@ -18,6 +18,8 @@ void gui_mch_set_foreground(void);
void gui_mch_settitle(char_u *title, char_u *icon);
void gui_mch_set_scrollbar_thumb(scrollbar_T *sb, int val, int size, int max);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_destroy_scrollbar(scrollbar_T *sb);

View File

@@ -14,6 +14,8 @@ void gui_mch_set_winpos(int x, int y);
void gui_mch_set_text_area_pos(int x, int y, int w, int h);
void gui_mch_enable_scrollbar(scrollbar_T *sb, int flag);
void gui_mch_set_scrollbar_pos(scrollbar_T *sb, int x, int y, int w, int h);
int gui_mch_get_scrollbar_xpadding(void);
int gui_mch_get_scrollbar_ypadding(void);
void gui_mch_create_scrollbar(scrollbar_T *sb, int orient);
int gui_mch_adjust_charheight(void);
GuiFont gui_mch_get_font(char_u *name, int giveErrorIfMissing);

View File

@@ -754,6 +754,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1228,
/**/
1227,
/**/