fix a few taskbar context menu bugs including Bugzilla entry 720
Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp
Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.h

Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp
--- trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp	2005-10-17 12:23:19 UTC (rev 18515)
+++ trunk/reactos/subsys/system/explorer/taskbar/taskbar.cpp	2005-10-17 12:41:52 UTC (rev 18516)
@@ -194,7 +194,7 @@
 		Point pt(lparam);
 		ScreenToClient(_htoolbar, &pt);
 
-		if ((HWND)wparam==_htoolbar && SendMessage(_htoolbar, TB_HITTEST, 0, (LPARAM)&pt)>0)
+		if ((HWND)wparam==_htoolbar && SendMessage(_htoolbar, TB_HITTEST, 0, (LPARAM)&pt)>=0)
 			break;	// avoid displaying context menu for application button _and_ desktop bar at the same time
 
 		goto def;}
@@ -258,7 +258,7 @@
 				(it=_map.find_id(btninfo.idCommand))!=_map.end()) {
 				//TaskBarEntry& entry = it->second;
 
-				ActivateApp(it, false);
+				ActivateApp(it, false, false);	// don't restore minimized windows on right button click
 
 #ifndef __MINGW32__	// SHRestricted() missing in MinGW (as of 29.10.2003)
 				static DynamicFct<DWORD(STDAPICALLTYPE*)(RESTRICTIONS)> pSHRestricted(TEXT("SHELL32"), "SHRestricted");
@@ -277,7 +277,7 @@
 }
 
 
-void TaskBar::ActivateApp(TaskBarMap::iterator it, bool can_minimize)
+void TaskBar::ActivateApp(TaskBarMap::iterator it, bool can_minimize, bool can_restore)
 {
 	HWND hwnd = it->first;
 
@@ -285,7 +285,7 @@
 						(hwnd==GetForegroundWindow() || hwnd==_last_foreground_wnd);
 
 	 // switch to selected application window
-	if (!minimize_it)
+	if (can_restore && !minimize_it)
 		if (IsIconic(hwnd))
 			PostMessage(hwnd, WM_SYSCOMMAND, SC_RESTORE, 0);
 
@@ -312,8 +312,10 @@
 		GetCursorPos(&pt);
 		int cmd = TrackPopupMenu(hmenu, TPM_LEFTBUTTON|TPM_RIGHTBUTTON|TPM_RETURNCMD, pt.x, pt.y, 0, _hwnd, NULL);
 
-		if (cmd)
+		if (cmd) {
+			ActivateApp(it, false, false);	// reactivate window after the context menu has closed
 			PostMessage(it->first, WM_SYSCOMMAND, cmd, 0);
+		}
 	}
 }
 

Modified: trunk/reactos/subsys/system/explorer/taskbar/taskbar.h
--- trunk/reactos/subsys/system/explorer/taskbar/taskbar.h	2005-10-17 12:23:19 UTC (rev 18515)
+++ trunk/reactos/subsys/system/explorer/taskbar/taskbar.h	2005-10-17 12:41:52 UTC (rev 18516)
@@ -94,7 +94,7 @@
 	int		Command(int id, int code);
 	int		Notify(int id, NMHDR* pnmh);
 
-	void	ActivateApp(TaskBarMap::iterator it, bool can_minimize=true);
+	void	ActivateApp(TaskBarMap::iterator it, bool can_minimize=true, bool can_restore=true);
 	void	ShowAppSystemMenu(TaskBarMap::iterator it);
 
 	static BOOL CALLBACK EnumWndProc(HWND hwnd, LPARAM lparam);