Diff

Differences From Artifact [dd8bf9422f]:

To Artifact [c54e86c87f]:


41
42
43
44
45
46
47


48
49
50
51
52
53
54
#define IDM_SESSLGE   0x0270	       /* log end */

#define IDM_SPECIAL_MIN 0x0400
#define IDM_SPECIAL_MAX 0x0800

#define IDM_SAVED_MIN 0x1000
#define IDM_SAVED_MAX 0x2000



#define WM_IGNORE_CLIP (WM_XUSER + 2)
#define WM_FULLSCR_ON_MAX (WM_XUSER + 3)
#define WM_AGENT_CALLBACK (WM_XUSER + 4)

/* Needed for Chinese support and apparently not always defined. */
#ifndef VK_PROCESSKEY







>
>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#define IDM_SESSLGE   0x0270	       /* log end */

#define IDM_SPECIAL_MIN 0x0400
#define IDM_SPECIAL_MAX 0x0800

#define IDM_SAVED_MIN 0x1000
#define IDM_SAVED_MAX 0x2000
/* Maximum number of sessions on saved-session submenu */
#define MENU_SAVED_MAX (IDM_SAVED_MAX-IDM_SAVED_MIN)

#define WM_IGNORE_CLIP (WM_XUSER + 2)
#define WM_FULLSCR_ON_MAX (WM_XUSER + 3)
#define WM_AGENT_CALLBACK (WM_XUSER + 4)

/* Needed for Chinese support and apparently not always defined. */
#ifndef VK_PROCESSKEY
704
705
706
707
708
709
710

711
712

713
714
715
716
717
718
719
720
721

	popup_menus[SYSMENU].menu = GetSystemMenu(hwnd, FALSE);
	popup_menus[CTXMENU].menu = CreatePopupMenu();
	AppendMenu(popup_menus[CTXMENU].menu, MF_ENABLED, IDM_PASTE, "&Paste");

	s = CreateMenu();
	get_sesslist(&sesslist, TRUE);

	for (i = 1;
	     i < ((sesslist.nsessions < 256) ? sesslist.nsessions : 256);

	     i++)
	    AppendMenu(s, MF_ENABLED, IDM_SAVED_MIN + (16 * i),
		       sesslist.sessions[i]);

	for (j = 0; j < lenof(popup_menus); j++) {
	    m = popup_menus[j].menu;

	    AppendMenu(m, MF_SEPARATOR, 0, 0);
	    popup_menus[j].specials_submenu_pos = GetMenuItemCount(m);







>

|
>

|







706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725

	popup_menus[SYSMENU].menu = GetSystemMenu(hwnd, FALSE);
	popup_menus[CTXMENU].menu = CreatePopupMenu();
	AppendMenu(popup_menus[CTXMENU].menu, MF_ENABLED, IDM_PASTE, "&Paste");

	s = CreateMenu();
	get_sesslist(&sesslist, TRUE);
	/* skip sesslist.sessions[0] == Default Settings */
	for (i = 1;
	     i < ((sesslist.nsessions <= MENU_SAVED_MAX+1) ? sesslist.nsessions
							   : MENU_SAVED_MAX+1);
	     i++)
	    AppendMenu(s, MF_ENABLED, IDM_SAVED_MIN + i-1,
		       sesslist.sessions[i]);

	for (j = 0; j < lenof(popup_menus); j++) {
	    m = popup_menus[j].menu;

	    AppendMenu(m, MF_SEPARATOR, 0, 0);
	    popup_menus[j].specials_submenu_pos = GetMenuItemCount(m);
1879
1880
1881
1882
1883
1884
1885

1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
			    *p = cfg;  /* structure copy */
			    UnmapViewOfFile(p);
			}
		    }
		    sprintf(c, "putty &%p", filemap);
		    cl = c;
		} else if (wParam == IDM_SAVEDSESS) {

		    if ((lParam - IDM_SAVED_MIN) / 16 < sesslist.nsessions) {
			char *session =
			    sesslist.sessions[(lParam - IDM_SAVED_MIN) / 16];
			cl = snewn(16 + strlen(session), char);
				       /* 8, but play safe */
			if (!cl)
			    cl = NULL;    
				       /* not a very important failure mode */
			else {
			    sprintf(cl, "putty @%s", session);
			    freecl = TRUE;
			}
		    } else
			break;
		} else
		    cl = NULL;

		GetModuleFileName(NULL, b, sizeof(b) - 1);
		si.cb = sizeof(si);







>
|
|
<
<
|
<
<
<
<
|
|
<







1883
1884
1885
1886
1887
1888
1889
1890
1891
1892


1893




1894
1895

1896
1897
1898
1899
1900
1901
1902
			    *p = cfg;  /* structure copy */
			    UnmapViewOfFile(p);
			}
		    }
		    sprintf(c, "putty &%p", filemap);
		    cl = c;
		} else if (wParam == IDM_SAVEDSESS) {
		    unsigned int sessno = lParam - IDM_SAVED_MIN + 1;
		    if (sessno < sesslist.nsessions) {
			char *session = sesslist.sessions[sessno];


			/* XXX spaces? quotes? "-load"? */




			cl = dupprintf("putty @%s", session);
			freecl = TRUE;

		    } else
			break;
		} else
		    cl = NULL;

		GetModuleFileName(NULL, b, sizeof(b) - 1);
		si.cb = sizeof(si);
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
	    if( lParam == 0 )
		PostMessage(hwnd, WM_CHAR, ' ', 0);
	    break;
	  case IDM_FULLSCREEN:
	    flip_full_screen();
	    break;
	  default:
	    if (wParam >= IDM_SAVED_MIN && wParam <= IDM_SAVED_MAX) {
		SendMessage(hwnd, WM_SYSCOMMAND, IDM_SAVEDSESS, wParam);
	    }
	    if (wParam >= IDM_SPECIAL_MIN && wParam <= IDM_SPECIAL_MAX) {
		int i = (wParam - IDM_SPECIAL_MIN) / 0x10;
		/*
		 * Ensure we haven't been sent a bogus SYSCOMMAND
		 * which would cause us to reference invalid memory







|







2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
	    if( lParam == 0 )
		PostMessage(hwnd, WM_CHAR, ' ', 0);
	    break;
	  case IDM_FULLSCREEN:
	    flip_full_screen();
	    break;
	  default:
	    if (wParam >= IDM_SAVED_MIN && wParam < IDM_SAVED_MAX) {
		SendMessage(hwnd, WM_SYSCOMMAND, IDM_SAVEDSESS, wParam);
	    }
	    if (wParam >= IDM_SPECIAL_MIN && wParam <= IDM_SPECIAL_MAX) {
		int i = (wParam - IDM_SPECIAL_MIN) / 0x10;
		/*
		 * Ensure we haven't been sent a bogus SYSCOMMAND
		 * which would cause us to reference invalid memory