Diff

Differences From Artifact [dd8bf9422f]:

To Artifact [c54e86c87f]:


41
42
43
44
45
46
47


48
49
50
51
52
53
54
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
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 < 256) ? sesslist.nsessions : 256);
	     i < ((sesslist.nsessions <= MENU_SAVED_MAX+1) ? sesslist.nsessions
							   : MENU_SAVED_MAX+1);
	     i++)
	    AppendMenu(s, MF_ENABLED, IDM_SAVED_MIN + (16 * 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
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 ((lParam - IDM_SAVED_MIN) / 16 < sesslist.nsessions) {
			char *session =
		    if (sessno < sesslist.nsessions) {
			char *session = sesslist.sessions[sessno];
			    sesslist.sessions[(lParam - IDM_SAVED_MIN) / 16];
			cl = snewn(16 + strlen(session), char);
				       /* 8, but play safe */
			/* XXX spaces? quotes? "-load"? */
			if (!cl)
			    cl = NULL;    
				       /* not a very important failure mode */
			else {
			    sprintf(cl, "putty @%s", session);
			    freecl = TRUE;
			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
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) {
	    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