new option to open explorer subfolders in separate windows
Modified: trunk/reactos/subsys/system/explorer/dialogs/settings.cpp
Modified: trunk/reactos/subsys/system/explorer/explorer-cfg-template.xml
Modified: trunk/reactos/subsys/system/explorer/explorer-cz.rc
Modified: trunk/reactos/subsys/system/explorer/explorer-en.rc
Modified: trunk/reactos/subsys/system/explorer/explorer-es.rc
Modified: trunk/reactos/subsys/system/explorer/explorer-ru.rc
Modified: trunk/reactos/subsys/system/explorer/explorer-sv.rc
Modified: trunk/reactos/subsys/system/explorer/resource.h
Modified: trunk/reactos/subsys/system/explorer/shell/mainframe.cpp
Modified: trunk/reactos/subsys/system/explorer/shell/mainframe.h

Modified: trunk/reactos/subsys/system/explorer/dialogs/settings.cpp
--- trunk/reactos/subsys/system/explorer/dialogs/settings.cpp	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/dialogs/settings.cpp	2005-10-02 11:40:41 UTC (rev 18209)
@@ -238,10 +238,13 @@
 
 	XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
 	bool mdi = XMLBool(explorer_options, "mdi", true);
+	bool separateFolders = XMLBool(explorer_options, "separate-folders", true);
 
 	int id = mdi? IDC_MDI: IDC_SDI;
 	CheckDlgButton(hwnd, id, BST_CHECKED);
 	SetFocus(GetDlgItem(hwnd, id));
+
+	CheckDlgButton(hwnd, IDC_SEPARATE_SUBFOLDERS, separateFolders?BST_CHECKED:BST_UNCHECKED);
 }
 
 int	MdiSdiDlg::Command(int id, int code)
@@ -250,8 +253,12 @@
 		switch(id) {
 		  case IDOK: {
 			bool mdi = IsDlgButtonChecked(_hwnd, IDC_MDI)==BST_CHECKED;
+			bool separateFolders = IsDlgButtonChecked(_hwnd, IDC_SEPARATE_SUBFOLDERS)==BST_CHECKED;
+
 			XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
+
 			XMLBoolRef(explorer_options, "mdi") = mdi;
+			XMLBoolRef(explorer_options, "separate-folders") = separateFolders;
 		  } // fall through
 
 		  case IDCANCEL:

Modified: trunk/reactos/subsys/system/explorer/explorer-cfg-template.xml
--- trunk/reactos/subsys/system/explorer/explorer-cfg-template.xml	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-cfg-template.xml	2005-10-02 11:40:41 UTC (rev 18209)
@@ -2,14 +2,13 @@
 <explorer-cfg>
   <general>
     <look-and-feel name="classic"/>
-	<explorer mdi="true"/>
+	<explorer mdi="true" separate-folders="true"/>
 	<language name="EN"/>
   </general>
 
   <desktop>
     <icon-alignment algorithm="simple" start="left-top" direction="horizontal"/>
   </desktop>
-
   <desktopbar>
     <options show-clock="true"/>
     <positions>

Modified: trunk/reactos/subsys/system/explorer/explorer-cz.rc
--- trunk/reactos/subsys/system/explorer/explorer-cz.rc	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-cz.rc	2005-10-02 11:40:41 UTC (rev 18209)
@@ -362,7 +362,7 @@
     PUSHBUTTON      "&ZruÜit",IDCANCEL,151,153,50,14
 END
 
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "Volba MDI / SDI m¾du"
@@ -371,15 +371,18 @@
     LTEXT           "ProsÝm zvolte si Vßmi up°ednost?ovan² zp¨sob zobrazenÝ oken pr¨zkumnÝka:",
                     IDC_STATIC,7,7,160,8
     CONTROL         "&MDI (Mnoho dokumentov² interface)",IDC_MDI,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
+    CONTROL         "&SDI (Jedno dokumentov² interface)",IDC_SDI,"Button",
+                    BS_AUTORADIOBUTTON,7,62,115,10
     CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
-    CONTROL         "&SDI (Jedno dokumentov² interface)",IDC_SDI,"Button",
-                    BS_AUTORADIOBUTTON,7,53,115,10
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
+    CONTROL         "Open Subfolders in s&eparate windows",
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,7,90,135,10
     LTEXT           "Toto nastavenÝ bude pou×ito jako implicitnÝ pro vÜechny okna pr¨zkumnÝka.",
-                    IDC_STATIC,7,76,174,22
-    DEFPUSHBUTTON   "&Nastavit",IDOK,29,105,50,14,WS_GROUP
-    PUSHBUTTON      "&ZruÜit",IDCANCEL,106,105,50,14
+                    IDC_STATIC,7,111,174,22
+    DEFPUSHBUTTON   "&Nastavit",IDOK,29,136,50,14,WS_GROUP
+    PUSHBUTTON      "&ZruÜit",IDCANCEL,106,136,50,14
 END
 
 

Modified: trunk/reactos/subsys/system/explorer/explorer-en.rc
--- trunk/reactos/subsys/system/explorer/explorer-en.rc	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-en.rc	2005-10-02 11:40:41 UTC (rev 18209)
@@ -360,24 +360,27 @@
     PUSHBUTTON      "&Cancel",IDCANCEL,151,153,50,14
 END
 
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "Choose MDI / SDI mode"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     LTEXT           "Please select your prefered explorer user interface:",
                     IDC_STATIC,7,7,160,8
     CONTROL         "&MDI (multiple document interface)",IDC_MDI,"Button",
                     BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
-    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
     CONTROL         "&SDI (single document interface)",IDC_SDI,"Button",
                     BS_AUTORADIOBUTTON,7,62,115,10
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
+    CONTROL         "Open Subfolders in s&eparate windows",
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,7,90,135,10
     LTEXT           "This setting will be used as default for all explorer windows in the future.",
-                    IDC_STATIC,7,91,174,22
-    DEFPUSHBUTTON   "&OK",IDOK,29,117,50,14,WS_GROUP
-    PUSHBUTTON      "&Cancel",IDCANCEL,106,117,50,14
+                    IDC_STATIC,7,111,174,22
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP
+    PUSHBUTTON      "&Cancel",IDCANCEL,106,136,50,14
 END
 
 

Modified: trunk/reactos/subsys/system/explorer/explorer-es.rc
--- trunk/reactos/subsys/system/explorer/explorer-es.rc	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-es.rc	2005-10-02 11:40:41 UTC (rev 18209)
@@ -360,22 +360,27 @@
     PUSHBUTTON      "&Cancelar",IDCANCEL,151,153,50,14
 END
 
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "Elegir modo MDI / SDI"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     LTEXT           "Por favor, seleccione su interfaz de usuario preferida para el explorador:",
                     IDC_STATIC,7,7,170,18
     CONTROL         "&MDI (Multiple Document Interface)",IDC_MDI,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,123,10
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,123,10
     CONTROL         "&SDI (Single Document Interface)",IDC_SDI,"Button",
-                    BS_AUTORADIOBUTTON,7,53,116,10
+                    BS_AUTORADIOBUTTON,7,62,116,10
+    CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
+    CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
+    CONTROL         "Open Subfolders in s&eparate windows",
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,7,90,135,10
     LTEXT           "Esta configuraci¾n se usarß por defecto y apartir de ahora para todas las ventanas del explorador.",
-                    IDC_STATIC,7,76,174,22
-    DEFPUSHBUTTON   "&Aceptar",IDOK,29,105,50,14,WS_GROUP
-    PUSHBUTTON      "&Cancelar",IDCANCEL,106,105,50,14
+                    IDC_STATIC,7,111,174,22
+    DEFPUSHBUTTON   "&Aceptar",IDOK,29,136,50,14,WS_GROUP
+    PUSHBUTTON      "&Cancelar",IDCANCEL,106,136,50,14
 END
 
 

Modified: trunk/reactos/subsys/system/explorer/explorer-ru.rc
--- trunk/reactos/subsys/system/explorer/explorer-ru.rc	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-ru.rc	2005-10-02 11:40:41 UTC (rev 18209)
@@ -330,7 +330,7 @@
     PUSHBUTTON      "&д­ÓÔÛÓ",254,158,42,47,14
 END
 
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "?¹ßÕ­Þ?Õ ­ÕµÞý MDI / SDI"
@@ -339,15 +339,18 @@
     LTEXT           "?¹ßÕ­Þ?Õ ÝÓÞ߯ÙÕÕ ´­Õõ´¯¸?Þ?ÕÙ³Ý¹Ú õÙ  ÔÓ±\nÔÞõ ´­¯Ô¯õÝÞÛÓ:",
                     IDC_STATIC,7,7,171,17
     CONTROL         "&MDI (ýݯүõ¯Û¾ýÕÝ?Ý¹Ú Ý?Õ­¶ÕÚ±)",IDC_MDI,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,136,10
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,136,10
+    CONTROL         "&SDI (¯õݯõ¯Û¾ýÕÝ?Ý¹Ú ÞÝ?Õ­¶ÕÚ±)",IDC_SDI,"Button",
+                    BS_AUTORADIOBUTTON,7,62,134,10
     CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
-    CONTROL         "&SDI (¯õݯõ¯Û¾ýÕÝ?Ý¹Ú ÞÝ?Õ­¶ÕÚ±)",IDC_SDI,"Button",
-                    BS_AUTORADIOBUTTON,7,53,134,10
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
+    CONTROL         "Open Subfolders in s&eparate windows",
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,7,90,135,10
     LTEXT           "¦?Þ ÝÓ±?­¯ÚÛÞ ß¾õ¾? Þ±´¯Ù³þ¯ÔÓÝݹ, ÛÓÛ þÝÓ¸ÕÝÞÕ ´¯ ¾ý¯Ù¸ÓÝÞ? õÙ  Ô±Õ§ ¯Û¯Ý ´­¯Ô¯õÝÞÛÓ Ô ß¾õ¾¨Õý.",
-                    IDC_STATIC,7,76,174,26
-    DEFPUSHBUTTON   "&OK",IDOK,29,105,50,14,WS_GROUP
-    PUSHBUTTON      "&Cancel",IDCANCEL,106,105,50,14
+                    IDC_STATIC,7,107,174,26
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP
+    PUSHBUTTON      "&Cancel",IDCANCEL,106,136,50,14
 END
 
 IDD_NOTIFYAREA DIALOGEX 0, 0, 208, 174

Modified: trunk/reactos/subsys/system/explorer/explorer-sv.rc
--- trunk/reactos/subsys/system/explorer/explorer-sv.rc	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/explorer-sv.rc	2005-10-02 11:40:41 UTC (rev 18209)
@@ -397,23 +397,26 @@
     PUSHBUTTON      "&Avbryt",IDCANCEL,151,153,50,14
 END
 
-IDD_MDI_SDI DIALOGEX 0, 0, 194, 138
+IDD_MDI_SDI DIALOGEX 0, 0, 194, 157
 STYLE WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
 EXSTYLE WS_EX_APPWINDOW
 CAPTION "Võlj MDI / SDI Lõge"
-FONT 8, "MS Sans Serif", 0, 0, 0x1
+FONT 8, "MS Sans Serif"
 BEGIN
     LTEXT           "Võlj det grõnssnitt du f÷redrar:",IDC_STATIC,7,7,160,8
     CONTROL         "&MDI (multiple document interface)",IDC_MDI,"Button",
-                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,30,121,10
+                    BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,7,31,121,10
+    CONTROL         "&SDI (single document interface)",IDC_SDI,"Button",
+                    BS_AUTORADIOBUTTON,7,62,115,10
     CONTROL         170,IDC_STATIC,"Static",SS_BITMAP,145,23,15,13
-    CONTROL         "&SDI (single document interface)",IDC_SDI,"Button",
-                    BS_AUTORADIOBUTTON,7,53,115,10
     CONTROL         171,IDC_STATIC,"Static",SS_BITMAP,145,57,15,13
+    CONTROL         "Open Subfolders in s&eparate windows",
+                    IDC_SEPARATE_SUBFOLDERS,"Button",BS_AUTOCHECKBOX | 
+                    WS_TABSTOP,7,90,135,10
     LTEXT           "Den hõr instõllningen kommer att gõlla som standard i alla nya explorer-f÷nster.",
-                    IDC_STATIC,7,76,174,22
-    DEFPUSHBUTTON   "&OK",IDOK,29,105,50,14,WS_GROUP
-    PUSHBUTTON      "&Avbryt",IDCANCEL,106,105,50,14
+                    IDC_STATIC,7,107,174,22
+    DEFPUSHBUTTON   "&OK",IDOK,29,136,50,14,WS_GROUP
+    PUSHBUTTON      "&Avbryt",IDCANCEL,106,136,50,14
 END
 
 

Modified: trunk/reactos/subsys/system/explorer/resource.h
--- trunk/reactos/subsys/system/explorer/resource.h	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/resource.h	2005-10-02 11:40:41 UTC (rev 18209)
@@ -164,6 +164,7 @@
 #define IDC_WIN_VERSION                 1030
 #define IDC_MDI                         1030
 #define IDC_SDI                         1031
+#define IDC_SEPARATE_SUBFOLDERS         1034
 #define ID_REFRESH                      1704
 #define ID_ABOUT_WINEFILE               1705
 #define IDS_VERSION_STR                 5000
@@ -221,7 +222,7 @@
 #ifndef APSTUDIO_READONLY_SYMBOLS
 #define _APS_NEXT_RESOURCE_VALUE        169
 #define _APS_NEXT_COMMAND_VALUE         40024
-#define _APS_NEXT_CONTROL_VALUE         1034
+#define _APS_NEXT_CONTROL_VALUE         1035
 #define _APS_NEXT_SYMED_VALUE           101
 #endif
 #endif

Modified: trunk/reactos/subsys/system/explorer/shell/mainframe.cpp
--- trunk/reactos/subsys/system/explorer/shell/mainframe.cpp	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/shell/mainframe.cpp	2005-10-02 11:40:41 UTC (rev 18209)
@@ -103,17 +103,24 @@
 		if (SUCCEEDED(hr))
 			if (attribs & SFGAO_FOLDER) {
 				try {
+					XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
+
+					bool mdi = XMLBool(explorer_options, "mdi", true);
+					bool separateFolders = XMLBool(explorer_options, "separate-folders", true);
+
 					ShellPath pidl_abs = ShellPath(pidl).create_absolute_pidl(parent_pidl);
 
-					if (hFrameWnd) {
-						if (SendMessage(hFrameWnd, PM_OPEN_WINDOW, OWM_PIDL, (LPARAM)(LPCITEMIDLIST)pidl_abs))
+					if (hFrameWnd && (mdi || !separateFolders)) {
+						int flags = OWM_PIDL;
+
+						if (separateFolders)
+							flags |= OWM_SEPARATE;
+
+						if (SendMessage(hFrameWnd, PM_OPEN_WINDOW, flags, (LPARAM)(LPCITEMIDLIST)pidl_abs))
 							++cnt;
 					} else {
 						HWND hwnd;
 #ifndef _NO_MDI
-						XMLPos explorer_options = g_Globals.get_cfg("general/explorer");
-						bool mdi = XMLBool(explorer_options, "mdi", true);
-
 						if (mdi)
 							hwnd = MDIMainFrame::Create(pidl_abs, 0);
 						else
@@ -900,7 +907,9 @@
 LRESULT MDIMainFrame::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
 {
 	switch(nmsg) {
-	  case PM_OPEN_WINDOW: {CONTEXT("MDIMainFrame PM_OPEN_WINDOW");
+	  case PM_OPEN_WINDOW: {
+		CONTEXT("MDIMainFrame PM_OPEN_WINDOW");
+
 		TCHAR buffer[MAX_PATH];
 		LPCTSTR path;
 		ShellPath shell_path = DesktopFolderPath();
@@ -940,11 +949,11 @@
 			 // Shell Namespace as default view
 			ShellChildWndInfo create_info(_hmdiclient, path, shell_path);
 
-			create_info._pos.showCmd = SW_SHOWMAXIMIZED;
-			create_info._pos.rcNormalPosition.left = 0;
-			create_info._pos.rcNormalPosition.top = 0;
-			create_info._pos.rcNormalPosition.right = 600;
-			create_info._pos.rcNormalPosition.bottom = 280;
+			create_info._pos.showCmd = wparam&OWM_SEPARATE? SW_SHOWNORMAL: SW_SHOWMAXIMIZED;
+			create_info._pos.rcNormalPosition.left = CW_USEDEFAULT;
+			create_info._pos.rcNormalPosition.top = CW_USEDEFAULT;
+			create_info._pos.rcNormalPosition.right = CW_USEDEFAULT;
+			create_info._pos.rcNormalPosition.bottom = CW_USEDEFAULT;
 
 			create_info._open_mode = (OPEN_WINDOW_MODE)wparam;
 
@@ -1421,7 +1430,9 @@
 		}
 		break;
 
-	  case PM_OPEN_WINDOW: {CONTEXT("SDIMainFrame PM_OPEN_WINDOW");
+	  case PM_OPEN_WINDOW: {
+		CONTEXT("SDIMainFrame PM_OPEN_WINDOW");
+
 		TCHAR buffer[MAX_PATH];
 		LPCTSTR path;
 		ShellPath shell_path = DesktopFolderPath();
@@ -1449,9 +1460,10 @@
 				*buffer = '\0';
 
 			path = buffer;
+			shell_path = path;
 		}
 
-		jump_to(shell_path, (OPEN_WINDOW_MODE)wparam);
+		jump_to(shell_path, (OPEN_WINDOW_MODE)wparam);	//@todo content of 'path' not used any more
 		return TRUE;}	// success
 
 	  default: def:

Modified: trunk/reactos/subsys/system/explorer/shell/mainframe.h
--- trunk/reactos/subsys/system/explorer/shell/mainframe.h	2005-10-02 10:33:25 UTC (rev 18208)
+++ trunk/reactos/subsys/system/explorer/shell/mainframe.h	2005-10-02 11:40:41 UTC (rev 18209)
@@ -27,7 +27,7 @@
 
 
 #define	PM_OPEN_WINDOW			(WM_APP+0x07)
-enum OPEN_WINDOW_MODE {OWM_EXPLORE=1, OWM_DETAILS=2, OWM_PIDL=4};
+enum OPEN_WINDOW_MODE {OWM_EXPLORE=1, OWM_DETAILS=2, OWM_PIDL=4, OWM_SEPARATE=8};
 
 
  /// Explorer frame window base class