forked from aniani/vim
patch 8.2.2940: MS-Windows: cannot see the size when resizing
Problem: MS-Windows: cannot see the size of the text area when resizing the gvim window. Solution: Show a tooltip with the text size. (Ken Takata, closes #8326)
This commit is contained in:
@@ -2942,7 +2942,9 @@ gui_mswin_get_valid_dimensions(
|
|||||||
int w,
|
int w,
|
||||||
int h,
|
int h,
|
||||||
int *valid_w,
|
int *valid_w,
|
||||||
int *valid_h)
|
int *valid_h,
|
||||||
|
int *cols,
|
||||||
|
int *rows)
|
||||||
{
|
{
|
||||||
int base_width, base_height;
|
int base_width, base_height;
|
||||||
|
|
||||||
@@ -2957,10 +2959,10 @@ gui_mswin_get_valid_dimensions(
|
|||||||
+ gui_mswin_get_menu_height(FALSE)
|
+ gui_mswin_get_menu_height(FALSE)
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
*valid_w = base_width +
|
*cols = (w - base_width) / gui.char_width;
|
||||||
((w - base_width) / gui.char_width) * gui.char_width;
|
*rows = (h - base_height) / gui.char_height;
|
||||||
*valid_h = base_height +
|
*valid_w = base_width + *cols * gui.char_width;
|
||||||
((h - base_height) / gui.char_height) * gui.char_height;
|
*valid_h = base_height + *rows * gui.char_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -4480,6 +4482,46 @@ _OnWindowPosChanged(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static HWND hwndTip = NULL;
|
||||||
|
|
||||||
|
static void
|
||||||
|
show_sizing_tip(int cols, int rows)
|
||||||
|
{
|
||||||
|
TOOLINFOA ti = {sizeof(ti)};
|
||||||
|
char buf[32];
|
||||||
|
|
||||||
|
ti.hwnd = s_hwnd;
|
||||||
|
ti.uId = (UINT_PTR)s_hwnd;
|
||||||
|
ti.uFlags = TTF_SUBCLASS | TTF_IDISHWND;
|
||||||
|
ti.lpszText = buf;
|
||||||
|
sprintf(buf, "%dx%d", cols, rows);
|
||||||
|
if (hwndTip == NULL)
|
||||||
|
{
|
||||||
|
hwndTip = CreateWindowExA(0, TOOLTIPS_CLASSA, NULL,
|
||||||
|
WS_POPUP | TTS_ALWAYSTIP | TTS_NOPREFIX,
|
||||||
|
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
|
||||||
|
s_hwnd, NULL, GetModuleHandle(NULL), NULL);
|
||||||
|
SendMessage(hwndTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
|
||||||
|
SendMessage(hwndTip, TTM_TRACKACTIVATE, TRUE, (LPARAM)&ti);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SendMessage(hwndTip, TTM_UPDATETIPTEXT, 0, (LPARAM)&ti);
|
||||||
|
}
|
||||||
|
SendMessage(hwndTip, TTM_POPUP, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
destroy_sizing_tip(void)
|
||||||
|
{
|
||||||
|
if (hwndTip != NULL)
|
||||||
|
{
|
||||||
|
DestroyWindow(hwndTip);
|
||||||
|
hwndTip = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_DuringSizing(
|
_DuringSizing(
|
||||||
UINT fwSide,
|
UINT fwSide,
|
||||||
@@ -4488,10 +4530,11 @@ _DuringSizing(
|
|||||||
int w, h;
|
int w, h;
|
||||||
int valid_w, valid_h;
|
int valid_w, valid_h;
|
||||||
int w_offset, h_offset;
|
int w_offset, h_offset;
|
||||||
|
int cols, rows;
|
||||||
|
|
||||||
w = lprc->right - lprc->left;
|
w = lprc->right - lprc->left;
|
||||||
h = lprc->bottom - lprc->top;
|
h = lprc->bottom - lprc->top;
|
||||||
gui_mswin_get_valid_dimensions(w, h, &valid_w, &valid_h);
|
gui_mswin_get_valid_dimensions(w, h, &valid_w, &valid_h, &cols, &rows);
|
||||||
w_offset = w - valid_w;
|
w_offset = w - valid_w;
|
||||||
h_offset = h - valid_h;
|
h_offset = h - valid_h;
|
||||||
|
|
||||||
@@ -4508,6 +4551,8 @@ _DuringSizing(
|
|||||||
else if (fwSide == WMSZ_BOTTOM || fwSide == WMSZ_BOTTOMLEFT
|
else if (fwSide == WMSZ_BOTTOM || fwSide == WMSZ_BOTTOMLEFT
|
||||||
|| fwSide == WMSZ_BOTTOMRIGHT)
|
|| fwSide == WMSZ_BOTTOMRIGHT)
|
||||||
lprc->bottom -= h_offset;
|
lprc->bottom -= h_offset;
|
||||||
|
|
||||||
|
show_sizing_tip(cols, rows);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4648,6 +4693,10 @@ _WndProc(
|
|||||||
return 0L;
|
return 0L;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
case WM_EXITSIZEMOVE:
|
||||||
|
destroy_sizing_tip();
|
||||||
|
break;
|
||||||
|
|
||||||
case WM_SIZING: // HANDLE_MSG doesn't seem to handle this one
|
case WM_SIZING: // HANDLE_MSG doesn't seem to handle this one
|
||||||
return _DuringSizing((UINT)wParam, (LPRECT)lParam);
|
return _DuringSizing((UINT)wParam, (LPRECT)lParam);
|
||||||
|
|
||||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
2940,
|
||||||
/**/
|
/**/
|
||||||
2939,
|
2939,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user