0
0
mirror of https://github.com/vim/vim.git synced 2025-09-30 04:44:14 -04:00

updated for version 7.0c10

This commit is contained in:
Bram Moolenaar
2006-04-05 20:41:53 +00:00
parent e2f98b95c8
commit 910f66f90c
128 changed files with 11811 additions and 2961 deletions

View File

@@ -727,6 +727,33 @@ _WndProc(
}
return MyWindowProc(hwnd, uMsg, wParam, lParam);
}
case WM_LBUTTONDBLCLK:
{
/*
* If the user double clicked the tabline, create a new tab
*/
if (gui_mch_showing_tabline())
{
POINT pt;
RECT rect;
GetCursorPos((LPPOINT)&pt);
GetWindowRect(s_textArea, &rect);
if (pt.y < rect.top)
{
char_u string[3];
string[0] = CSI;
string[1] = KS_TABMENU;
string[2] = KE_FILLER;
add_to_input_buf(string, 3);
string[0] = 0;
string[1] = (char_u)(long)TABLINE_MENU_NEW;
add_to_input_buf_csi(string, 2);
}
}
return MyWindowProc(hwnd, uMsg, wParam, lParam);
}
#endif
case WM_QUERYENDSESSION: /* System wants to go down. */
@@ -1152,7 +1179,7 @@ gui_mch_init(void)
* Otherwise only characters in the active codepage will work. */
if (GetClassInfoW(s_hinst, szVimWndClassW, &wndclassw) == 0)
{
wndclassw.style = 0;
wndclassw.style = CS_DBLCLKS;
wndclassw.lpfnWndProc = _WndProc;
wndclassw.cbClsExtra = 0;
wndclassw.cbWndExtra = 0;
@@ -1183,7 +1210,7 @@ gui_mch_init(void)
if (GetClassInfo(s_hinst, szVimWndClass, &wndclass) == 0)
{
wndclass.style = 0;
wndclass.style = CS_DBLCLKS;
wndclass.lpfnWndProc = _WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = 0;
@@ -1412,11 +1439,13 @@ gui_mch_set_shellsize(int width, int height,
int win_xpos, win_ypos;
WINDOWPLACEMENT wndpl;
/* try to keep window completely on screen */
/* get size of the screen work area (excludes taskbar, appbars) */
/* Try to keep window completely on screen. */
/* Get position of the screen work area. This is the part that is not
* used by the taskbar or appbars. */
get_work_area(&workarea_rect);
/* get current posision of our window */
/* Get current posision of our window. Note that the .left and .top are
* relative to the work area. */
wndpl.length = sizeof(WINDOWPLACEMENT);
GetWindowPlacement(s_hwnd, &wndpl);
@@ -1442,28 +1471,21 @@ gui_mch_set_shellsize(int width, int height,
#endif
;
/* if the window is going off the screen, move it on to the screen */
if ((direction & RESIZE_HOR) && win_xpos + win_width > workarea_rect.right)
win_xpos = workarea_rect.right - win_width;
/* If the window is going off the screen, move it on to the screen.
* win_xpos and win_ypos are relative to the workarea. */
if ((direction & RESIZE_HOR)
&& workarea_rect.left + win_xpos + win_width > workarea_rect.right)
win_xpos = workarea_rect.right - win_width - workarea_rect.left;
if ((direction & RESIZE_HOR) && win_xpos < workarea_rect.left)
win_xpos = workarea_rect.left;
if ((direction & RESIZE_HOR) && win_xpos < 0)
win_xpos = 0;
if ((direction & RESIZE_VERT)
&& win_ypos + win_height > workarea_rect.bottom)
win_ypos = workarea_rect.bottom - win_height;
&& workarea_rect.top + win_ypos + win_height > workarea_rect.bottom)
win_ypos = workarea_rect.bottom - win_height - workarea_rect.top;
if ((direction & RESIZE_VERT) && win_ypos < workarea_rect.top)
win_ypos = workarea_rect.top;
/* When the taskbar is placed on the left or top of the screen,
* SetWindowPlacement() adds its width or height automatically, compensate
* for that. When the offset is over 400 it's probably something else,
* skip it then (just in case). */
if (workarea_rect.left > 0 && workarea_rect.left < 400)
win_xpos -= workarea_rect.left;
if (workarea_rect.top > 0 && workarea_rect.top < 400)
win_ypos -= workarea_rect.top;
if ((direction & RESIZE_VERT) && win_ypos < 0)
win_ypos = 0;
wndpl.rcNormalPosition.left = win_xpos;
wndpl.rcNormalPosition.right = win_xpos + win_width;
@@ -2290,13 +2312,13 @@ gui_mch_get_screen_dimensions(int *screen_w, int *screen_h)
get_work_area(&workarea_rect);
*screen_w = workarea_rect.right
*screen_w = workarea_rect.right - workarea_rect.left
- GetSystemMetrics(SM_CXFRAME) * 2;
/* FIXME: dirty trick: Because the gui_get_base_height() doesn't include
* the menubar for MSwin, we subtract it from the screen height, so that
* the window size can be made to fit on the screen. */
*screen_h = workarea_rect.bottom
*screen_h = workarea_rect.bottom - workarea_rect.top
- GetSystemMetrics(SM_CYFRAME) * 2
- GetSystemMetrics(SM_CYCAPTION)
#ifdef FEAT_MENU
@@ -3956,11 +3978,24 @@ get_toolbar_bitmap(vimmenu_T *menu)
static void
initialise_tabline(void)
{
# ifdef USE_SYSMENU_FONT
LOGFONT lfSysmenu;
# endif
InitCommonControls();
s_tabhwnd = CreateWindow(WC_TABCONTROL, "", WS_CHILD|TCS_FOCUSNEVER,
s_tabhwnd = CreateWindow(WC_TABCONTROL, "Vim tabline",
WS_CHILD|TCS_FOCUSNEVER,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, s_hwnd, NULL, s_hinst, NULL);
# ifdef USE_SYSMENU_FONT
if (gui_w32_get_menu_font(&lfSysmenu) == OK)
{
HFONT font = CreateFontIndirect(&lfSysmenu);
SendMessage(s_tabhwnd, WM_SETFONT, (WPARAM) font, TRUE);
}
# endif
}
#endif