Index: src/chext/MenuExt.h
===================================================================
diff -u -N -r2d7bee54f998ae8f5d4145a2cf3f4a589253016f -r633a533cb6e741d44fe28aa56339e1d2709b1b27
--- src/chext/MenuExt.h	(.../MenuExt.h)	(revision 2d7bee54f998ae8f5d4145a2cf3f4a589253016f)
+++ src/chext/MenuExt.h	(.../MenuExt.h)	(revision 633a533cb6e741d44fe28aa56339e1d2709b1b27)
@@ -20,11 +20,11 @@
 #define __MENUEXT_H_
 
 #include "resource.h"       // main symbols
-#include "../libchcore/TTaskDefinition.h"
+#include "TContextMenuHandler.h"
+#include "..\common\TShellExtMenuConfig.h"
+#include "TShellExtData.h"
 
-///////
-// globals
-void CutAmpersands(LPTSTR lpszString);
+class TShellMenuItem;
 
 /////////////////////////////////////////////////////////////////////////////
 // CMenuExt
@@ -60,30 +60,16 @@
 	STDMETHOD(HandleMenuMsg2)(UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* plResult);
 
 protected:
-	void DrawMenuItem(LPDRAWITEMSTRUCT lpdis);
-	void CreateShortcutsMenu(UINT uiIDBase, bool bOwnerDrawn);
+	HRESULT DrawMenuItem(LPDRAWITEMSTRUCT lpdis);
 
-protected:
-	chcore::TPathContainer m_vPaths;
+	HRESULT ReadShellConfig();
 
-	// for making sure DestroyMenu would be called
-	class CSubMenus
-	{
-	public:
-		CSubMenus() { hShortcuts[0]=NULL; hShortcuts[1]=NULL; hShortcuts[2]=NULL; };
-		void Destroy() { for (int i=0;i<3;i++) { if (hShortcuts[i] != NULL) DestroyMenu(hShortcuts[i]); } };
-		~CSubMenus() { Destroy(); };
+private:
+	TShellExtData m_tShellExtData;
 
-	public:
-		HMENU hShortcuts[3];
-	} m_mMenus;
+	TShellExtMenuConfig m_tShellExtMenuConfig;
+	TContextMenuHandler m_tContextMenuHandler;
 
-	bool m_bBackground;			// folder or folder background
-	bool m_bShowPasteOption;	// if the group of files have a files in it
-
-	UINT m_uiFirstID;		// first menu ID
-	bool m_bShown;			// have the menu been already shown ?
-
 	IShellExtControl* m_piShellExtControl;
 };