import the lean explorer branch into the new repository
Added: branches/lean-explorer/
Added: branches/lean-explorer/Make-rosshell-MinGW
Added: branches/lean-explorer/Make-rosshell.mak
Added: branches/lean-explorer/Makefile
Added: branches/lean-explorer/Makefile-MinGW
Added: branches/lean-explorer/Makefile-precomp
Added: branches/lean-explorer/desktop/
Added: branches/lean-explorer/desktop/desktop.cpp
Added: branches/lean-explorer/desktop/desktop.h
Added: branches/lean-explorer/dialogs/
Added: branches/lean-explorer/dialogs/settings.cpp
Added: branches/lean-explorer/dialogs/settings.h
Added: branches/lean-explorer/explorer-jp.rc
Added: branches/lean-explorer/explorer.cpp
Added: branches/lean-explorer/explorer.dsp
Added: branches/lean-explorer/explorer.dsw
Added: branches/lean-explorer/explorer.h
Added: branches/lean-explorer/explorer.rc
Added: branches/lean-explorer/explorer_intres.h
Added: branches/lean-explorer/explorer_intres.rc
Added: branches/lean-explorer/externals.h
Added: branches/lean-explorer/globals.h
Added: branches/lean-explorer/make_explorer.dsp
Added: branches/lean-explorer/make_rosshell.dsp
Added: branches/lean-explorer/precomp.cpp
Added: branches/lean-explorer/precomp.h
Added: branches/lean-explorer/readme.txt
Added: branches/lean-explorer/res/
Added: branches/lean-explorer/res/action.ico
Added: branches/lean-explorer/res/appicon.ico
Added: branches/lean-explorer/res/apps.ico
Added: branches/lean-explorer/res/arrow.ico
Added: branches/lean-explorer/res/arrow_dwn.ico
Added: branches/lean-explorer/res/arrow_up.ico
Added: branches/lean-explorer/res/arrowsel.ico
Added: branches/lean-explorer/res/computer.ico
Added: branches/lean-explorer/res/config.ico
Added: branches/lean-explorer/res/documents.ico
Added: branches/lean-explorer/res/explorer.ico
Added: branches/lean-explorer/res/favorites.ico
Added: branches/lean-explorer/res/floating.ico
Added: branches/lean-explorer/res/folder.ico
Added: branches/lean-explorer/res/info.ico
Added: branches/lean-explorer/res/logoff.ico
Added: branches/lean-explorer/res/logov.bmp
Added: branches/lean-explorer/res/logov16.bmp
Added: branches/lean-explorer/res/logov256.bmp
Added: branches/lean-explorer/res/network.ico
Added: branches/lean-explorer/res/printer.ico
Added: branches/lean-explorer/res/reactos.ico
Added: branches/lean-explorer/res/ros-big.ico
Added: branches/lean-explorer/res/search-doc.ico
Added: branches/lean-explorer/res/search.ico
Added: branches/lean-explorer/res/startmenu.ico
Added: branches/lean-explorer/res/toolbar.bmp
Added: branches/lean-explorer/rosshell.dsp
Added: branches/lean-explorer/rosshell.dsw
Added: branches/lean-explorer/shell/
Added: branches/lean-explorer/shell/entries.cpp
Added: branches/lean-explorer/shell/entries.h
Added: branches/lean-explorer/shell/mainframe.cpp
Added: branches/lean-explorer/shell/mainframe.h
Added: branches/lean-explorer/shell/shellbrowser.cpp
Added: branches/lean-explorer/shell/shellbrowser.h
Added: branches/lean-explorer/shell/shellfs.cpp
Added: branches/lean-explorer/shell/startup.c
Added: branches/lean-explorer/taskbar/
Added: branches/lean-explorer/taskbar/desktopbar.cpp
Added: branches/lean-explorer/taskbar/desktopbar.h
Added: branches/lean-explorer/taskbar/quicklaunch.cpp
Added: branches/lean-explorer/taskbar/quicklaunch.h
Added: branches/lean-explorer/taskbar/startmenu.cpp
Added: branches/lean-explorer/taskbar/startmenu.h
Added: branches/lean-explorer/taskbar/taskbar.cpp
Added: branches/lean-explorer/taskbar/taskbar.h
Added: branches/lean-explorer/taskbar/traynotify.cpp
Added: branches/lean-explorer/taskbar/traynotify.h
Added: branches/lean-explorer/utility/
Added: branches/lean-explorer/utility/dragdropimpl.cpp
Added: branches/lean-explorer/utility/dragdropimpl.h
Added: branches/lean-explorer/utility/shellbrowserimpl.cpp
Added: branches/lean-explorer/utility/shellbrowserimpl.h
Added: branches/lean-explorer/utility/shellclasses.cpp
Added: branches/lean-explorer/utility/shellclasses.h
Added: branches/lean-explorer/utility/treedroptarget.h
Added: branches/lean-explorer/utility/utility.cpp
Added: branches/lean-explorer/utility/utility.h
Added: branches/lean-explorer/utility/window.cpp
Added: branches/lean-explorer/utility/window.h
Property changes on: branches/lean-explorer
___________________________________________________________________
Name: svn:ignore
   + *.coff
*.exe
*.d
*.o
*.sym
*.map
bin
Debug
Release
DRelease
UDebug
URelease
_NO_COMUTIL
doxy-doc
*.ncb
*.opt
*.aps
*.ncb
*.plg
*.suo
buildno.h
*.gch

Added: branches/lean-explorer/Make-rosshell-MinGW
--- branches/lean-explorer/Make-rosshell-MinGW	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/Make-rosshell-MinGW	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,82 @@
+#
+#  ReactOS lean shell
+#
+#  Make-rosshell.MinGW
+#
+#  MinGW Makefile with precompiled header support
+#
+
+CC = gcc
+CXX = g++
+LINK = g++
+
+CFLAGS	= -DWIN32 -DROSSHELL -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
+RCFLAGS	= -DWIN32 -DROSSHELL -D__WINDRES__
+LFLAGS	= -Wl,--subsystem,windows
+
+ifdef DEBUG
+CFLAGS	+= -D_DEBUG -g
+RCFLAGS	+= -D_DEBUG
+LFLAGS	+= -g
+else
+CFLAGS	+= -DNDEBUG -Os -D_NO_CONTEXT
+RCFLAGS	+= -DNDEBUG
+LFLAGS	+= -s
+endif
+
+ifndef UNICODE
+UNICODE = 1
+endif
+
+ifeq ($(UNICODE),1)
+CFLAGS	+= -DUNICODE
+# LFLAGS+= -Wl,--entry,_wWinMain@16
+endif
+
+CXXFLAGS = $(CFLAGS)
+
+EXEC_SUFFIX = .exe
+RES_SUFFIX = .coff
+
+VPATH = shell utility taskbar desktop dialogs
+
+PROGRAM = rosshell
+
+TARGET = $(PROGRAM)$(EXEC_SUFFIX)
+
+OBJECTS = \
+	startup.o \
+	shellclasses.o \
+	utility.o \
+	window.o \
+	dragdropimpl.o \
+	shellbrowserimpl.o \
+	explorer.o \
+	entries.o \
+	shellfs.o \
+	desktop.o \
+	desktopbar.o \
+	taskbar.o \
+	startmenu.o \
+	traynotify.o \
+	quicklaunch.o \
+	settings.o
+
+LIBS = gdi32 comctl32 ole32 uuid
+
+all: precomp.h.gch $(TARGET)
+
+precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
+	$(CXX) $(CFLAGS) precomp.h
+
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
+	$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
+
+$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
+	windres $(RCFLAGS) -o $@ explorer_intres.rc
+
+clean:
+	rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
+	desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
+
+ever:

Added: branches/lean-explorer/Make-rosshell.mak
--- branches/lean-explorer/Make-rosshell.mak	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/Make-rosshell.mak	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,147 @@
+#
+#  ReactOS lean shell
+#
+#  Makefile
+#
+
+# Windows is default host environment
+ifeq ($(HOST),)
+HOST = mingw32-windows
+endif
+
+ifeq ($(HOST),mingw32-linux)
+CC = mingw32-gcc
+CXX = mingw32-g++
+LINK = mingw32-g++
+RC = mingw32-windres
+CD_PREFIX := ./
+PREFIX = mingw32-
+EXE_POSTFIX :=
+EXE_PREFIX := ./
+endif
+
+ifeq ($(HOST),mingw32-windows)
+CC = gcc
+CXX = g++
+LINK = g++
+RC = windres
+CD_PREFIX := 
+PREFIX =
+EXE_PREFIX :=
+EXE_POSTFIX := .exe
+endif
+
+PATH_TO_TOP = ../../..
+TOOLS_PATH = $(PATH_TO_TOP)/tools
+
+ifndef UNICODE
+UNICODE = 1
+endif
+
+CFLAGS	= -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
+RCFLAGS	= -DWIN32 -D_ROS_ -D__WINDRES__
+LFLAGS	= -Wl,--subsystem,windows
+
+ifdef DEBUG
+CFLAGS	+= -D_DEBUG -g
+RCFLAGS	+= -D_DEBUG
+LFLAGS	+= -g
+else
+CFLAGS	+= -DNDEBUG -Os -D_NO_CONTEXT
+RCFLAGS	+= -DNDEBUG
+LFLAGS	+= -s
+endif
+
+ifeq ($(UNICODE),1)
+CFLAGS	+= -DUNICODE
+# LFLAGS+= -Wl,--entry,_wWinMain@16
+RCFLAGS += -DUNICODE
+endif
+
+CXXFLAGS = $(CFLAGS)
+
+EXEC_SUFFIX = .exe
+RES_SUFFIX = .coff
+
+VPATH = shell utility taskbar desktop dialogs
+
+PROGRAM = rosshell
+
+TARGET = $(PROGRAM)$(EXEC_SUFFIX)
+
+OBJECTS = \
+	startup.o \
+	shellclasses.o \
+	utility.o \
+	window.o \
+	dragdropimpl.o \
+	shellbrowserimpl.o \
+	explorer.o \
+	entries.o \
+	shellfs.o \
+	desktop.o \
+	desktopbar.o \
+	taskbar.o \
+	startmenu.o \
+	traynotify.o \
+	quicklaunch.o \
+	settings.o
+
+LIBS = gdi32 comctl32 ole32 uuid
+
+.PHONY: all depends implib clean install dist bootcd depends
+
+all: $(TARGET)
+
+ever:
+
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
+	$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
+
+$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
+	$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
+
+clean:
+	$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
+	desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
+
+# Use environment var ROS_INSTALL to override default install dir
+ifneq ($(ROS_INSTALL),)
+INSTALL_DIR = $(ROS_INSTALL)
+else
+ifeq ($(HOST),mingw32-windows)
+INSTALL_DIR = C:/reactos
+else
+INSTALL_DIR = $(PATH_TO_TOP)/reactos
+endif
+endif
+
+implib:
+
+install:
+	-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
+
+bootcd:
+
+
+# dependency scanning
+
+DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
+DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(DEP_FILES)
+endif
+
+ifeq ($(HOST),mingw32-windows)
+DEPENDS_EXE := ..\..\..\tools\depends
+else
+DEPENDS_EXE := $(TOOLS_PATH)/depends
+endif
+
+.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
+	$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
+
+.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
+	$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
+

Added: branches/lean-explorer/Makefile
--- branches/lean-explorer/Makefile	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/Makefile	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,149 @@
+#
+#  ReactOS lean shell
+#
+#  Makefile
+#
+
+# Windows is default host environment
+ifeq ($(HOST),)
+HOST = mingw32-windows
+endif
+
+ifeq ($(HOST),mingw32-linux)
+CC = mingw32-gcc
+CXX = mingw32-g++
+LINK = mingw32-g++
+RC = mingw32-windres
+CD_PREFIX := ./
+PREFIX = mingw32-
+EXE_POSTFIX :=
+EXE_PREFIX := ./
+endif
+
+ifeq ($(HOST),mingw32-windows)
+CC = gcc
+CXX = g++
+LINK = g++
+RC = windres
+CD_PREFIX := 
+PREFIX =
+EXE_PREFIX :=
+EXE_POSTFIX := .exe
+endif
+
+PATH_TO_TOP = ../../..
+TOOLS_PATH = $(PATH_TO_TOP)/tools
+
+ifndef UNICODE
+UNICODE = 1
+endif
+
+CFLAGS	= -I./ -DWIN32 -D_ROS_ -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall
+RCFLAGS	= -DWIN32 -D_ROS_ -D__WINDRES__
+LFLAGS	= -Wl,--subsystem,windows
+
+ifdef DEBUG
+CFLAGS	+= -D_DEBUG -g
+RCFLAGS	+= -D_DEBUG
+LFLAGS	+= -g
+else
+CFLAGS	+= -DNDEBUG -Os -D_NO_CONTEXT
+RCFLAGS	+= -DNDEBUG
+LFLAGS	+= -s
+endif
+
+ifeq ($(UNICODE),1)
+CFLAGS	+= -DUNICODE
+# LFLAGS+= -Wl,--entry,_wWinMain@16
+RCFLAGS += -DUNICODE
+endif
+
+CXXFLAGS = $(CFLAGS)
+
+EXEC_SUFFIX = .exe
+RES_SUFFIX = .coff
+
+VPATH = shell utility taskbar desktop dialogs
+
+PROGRAM = explorer
+
+TARGET = $(PROGRAM)$(EXEC_SUFFIX)
+
+OBJECTS = \
+	startup.o \
+	shellclasses.o \
+	utility.o \
+	window.o \
+	dragdropimpl.o \
+	shellbrowserimpl.o \
+	explorer.o \
+	entries.o \
+	shellfs.o \
+	mainframe.o \
+	shellbrowser.o \
+	desktop.o \
+	desktopbar.o \
+	taskbar.o \
+	startmenu.o \
+	traynotify.o \
+	quicklaunch.o \
+	settings.o
+
+LIBS = gdi32 comctl32 ole32 uuid
+
+.PHONY: all depends implib clean install dist bootcd depends
+
+all: $(TARGET)
+
+ever:
+
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
+	$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
+
+explorer$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
+	$(RC) $(RCFLAGS) -o $@ explorer_intres.rc
+
+clean:
+	$(TOOLS_PATH)/rdel $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
+	desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
+
+# Use environment var ROS_INSTALL to override default install dir
+ifneq ($(ROS_INSTALL),)
+INSTALL_DIR = $(ROS_INSTALL)
+else
+ifeq ($(HOST),mingw32-windows)
+INSTALL_DIR = C:/reactos
+else
+INSTALL_DIR = $(PATH_TO_TOP)/reactos
+endif
+endif
+
+implib:
+
+install:
+	-$(TOOLS_PATH)/rcopy $(TARGET) $(INSTALL_DIR)/$(TARGET)
+
+bootcd:
+
+
+# dependency scanning
+
+DEP_FILTERED := $(filter-out $(DEP_EXCLUDE_FILTER), $(OBJECTS:.o=.d))
+DEP_FILES := $(join $(dir $(DEP_FILTERED)), $(addprefix ., $(notdir $(DEP_FILTERED))))
+
+ifneq ($(MAKECMDGOALS),clean)
+-include $(DEP_FILES)
+endif
+
+ifeq ($(HOST),mingw32-windows)
+DEPENDS_EXE := ..\..\..\tools\depends
+else
+DEPENDS_EXE := $(TOOLS_PATH)/depends
+endif
+
+.%.d: %.c $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
+	$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
+
+.%.d: %.cpp $(PATH_TO_TOP)/tools/depends$(EXE_POSTFIX)
+	$(CC) $(CFLAGS) -M $< | $(DEPENDS_EXE) $(@D) $@
+
Property changes on: branches/lean-explorer/Makefile
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: branches/lean-explorer/Makefile-MinGW
--- branches/lean-explorer/Makefile-MinGW	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/Makefile-MinGW	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,80 @@
+#
+#  ReactOS lean explorer
+#
+#  Makefile-MinGW
+#
+
+CC = gcc
+CXX = g++
+LINK = g++
+
+CFLAGS	= -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
+RCFLAGS	= -DWIN32 -D__WINDRES__
+LFLAGS	= -Wl,--subsystem,windows
+
+ifdef DEBUG
+CFLAGS	+= -D_DEBUG -g
+RCFLAGS	+= -D_DEBUG
+LFLAGS	+= -g
+else
+CFLAGS	+= -DNDEBUG -Os -D_NO_CONTEXT
+RCFLAGS	+= -DNDEBUG
+LFLAGS	+= -s
+endif
+
+ifndef UNICODE
+UNICODE = 1
+endif
+
+ifeq ($(UNICODE),1)
+CFLAGS	+= -DUNICODE
+# LFLAGS+= -Wl,--entry,_wWinMain@16
+RCFLAGS += -DUNICODE
+endif
+
+CXXFLAGS = $(CFLAGS)
+
+EXEC_SUFFIX = .exe
+RES_SUFFIX = .coff
+
+VPATH = shell utility taskbar desktop dialogs
+
+PROGRAM = explorer
+
+TARGET = $(PROGRAM)$(EXEC_SUFFIX)
+
+OBJECTS = \
+	startup.o \
+	shellclasses.o \
+	utility.o \
+	window.o \
+	dragdropimpl.o \
+	shellbrowserimpl.o \
+	explorer.o \
+	entries.o \
+	shellfs.o \
+	mainframe.o \
+	shellbrowser.o \
+	desktop.o \
+	desktopbar.o \
+	taskbar.o \
+	startmenu.o \
+	traynotify.o \
+	quicklaunch.o \
+	settings.o
+
+LIBS = gdi32 comctl32 ole32 uuid
+
+all: $(TARGET)
+
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
+	$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
+
+$(PROGRAM)$(RES_SUFFIX): $(PROGRAM)_intres.rc res/*.bmp res/*.ico
+	windres $(RCFLAGS) -o $@ $(PROGRAM)_intres.rc
+
+clean:
+	rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) \
+	desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
+
+ever:
Property changes on: branches/lean-explorer/Makefile-MinGW
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: branches/lean-explorer/Makefile-precomp
--- branches/lean-explorer/Makefile-precomp	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/Makefile-precomp	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,84 @@
+#
+#  ReactOS lean explorer
+#
+#  Makefile-precomp
+#
+#  MinGW Makefile with precompiled header support
+#
+
+CC = gcc
+CXX = g++
+LINK = g++
+
+CFLAGS	= -DWIN32 -D_WIN32_IE=0x0501 -D_WIN32_WINNT=0x0501 -fexceptions -Wall -I.
+RCFLAGS	= -DWIN32 -D__WINDRES__
+LFLAGS	= -Wl,--subsystem,windows
+
+ifdef DEBUG
+CFLAGS	+= -D_DEBUG -g
+RCFLAGS	+= -D_DEBUG
+LFLAGS	+= -g
+else
+CFLAGS	+= -DNDEBUG -Os -D_NO_CONTEXT
+RCFLAGS	+= -DNDEBUG
+LFLAGS	+= -s
+endif
+
+ifndef UNICODE
+UNICODE = 1
+endif
+
+ifeq ($(UNICODE),1)
+CFLAGS	+= -DUNICODE
+# LFLAGS+= -Wl,--entry,_wWinMain@16
+endif
+
+CXXFLAGS = $(CFLAGS)
+
+EXEC_SUFFIX = .exe
+RES_SUFFIX = .coff
+
+VPATH = shell utility taskbar desktop dialogs
+
+PROGRAM = explorer
+
+TARGET = $(PROGRAM)$(EXEC_SUFFIX)
+
+OBJECTS = \
+	startup.o \
+	shellclasses.o \
+	utility.o \
+	window.o \
+	dragdropimpl.o \
+	shellbrowserimpl.o \
+	explorer.o \
+	entries.o \
+	shellfs.o \
+	mainframe.o \
+	shellbrowser.o \
+	desktop.o \
+	desktopbar.o \
+	taskbar.o \
+	startmenu.o \
+	traynotify.o \
+	quicklaunch.o \
+	settings.o
+
+LIBS = gdi32 comctl32 ole32 uuid
+
+all: precomp.h.gch $(TARGET)
+
+precomp.h.gch: *.h utility/*.h shell/*.h desktop/*.h
+	$(CXX) $(CFLAGS) precomp.h
+
+$(TARGET): $(OBJECTS) $(PROGRAM)$(RES_SUFFIX)
+	$(LINK) $(LFLAGS) -o $@ $^ $(addprefix -l,$(LIBS))
+
+$(PROGRAM)$(RES_SUFFIX): explorer_intres.rc res/*.bmp res/*.ico
+	windres $(RCFLAGS) -o $@ explorer_intres.rc
+
+clean:
+	rm -f $(TARGET) $(OBJECTS) $(PROGRAM)$(RES_SUFFIX) precomp.h.gch \
+	desktop/*.o dialogs/*.o shell/*.o taskbar/*.o utility/*.o
+
+ever:
Property changes on: branches/lean-explorer/Makefile-precomp
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + native

Added: branches/lean-explorer/desktop/desktop.cpp
--- branches/lean-explorer/desktop/desktop.cpp	2006-01-29 15:12:24 UTC (rev 32)
+++ branches/lean-explorer/desktop/desktop.cpp	2006-01-29 15:13:23 UTC (rev 33)
@@ -0,0 +1,558 @@
+/*
+ * Copyright 2003, 2004, 2005 Martin Fuchs
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+ //
+ // Explorer clone, lean version
+ //
+ // desktop.cpp
+ //
+ // Martin Fuchs, 09.08.2003
+ //
+
+
+#include "precomp.h"
+
+#include "../taskbar/desktopbar.h"
+#include "../taskbar/taskbar.h"	// for PM_GET_LAST_ACTIVE
+
+#include "../explorer_intres.h"
+
+
+static BOOL (WINAPI*SetShellWindow)(HWND);
+static BOOL (WINAPI*SetShellWindowEx)(HWND, HWND);
+
+
+Desktops::Desktops()
+ :	_current_desktop(0)
+{
+}
+
+Desktops::~Desktops()
+{
+	 // show all hidden windows
+	for(iterator it_dsk=begin(); it_dsk!=end(); ++it_dsk)
+		for(WindowSet::iterator it=it_dsk->_windows.begin(); it!=it_dsk->_windows.end(); ++it)
+			ShowWindowAsync(*it, SW_SHOW);
+}
+
+void Desktops::init()
+{
+	resize(DESKTOP_COUNT);
+}
+
+static BOOL CALLBACK SwitchDesktopEnumFct(HWND hwnd, LPARAM lparam)
+{
+	WindowSet& windows = *(WindowSet*)lparam;
+
+	if (IsWindowVisible(hwnd))
+		if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
+			windows.insert(hwnd);
+
+	return TRUE;
+}
+
+void Desktops::SwitchToDesktop(int idx)
+{
+	if (_current_desktop == idx)
+		return;
+
+	Desktop& old_desktop = (*this)[_current_desktop];
+	WindowSet& windows = old_desktop._windows;
+	Desktop& desktop = (*this)[idx];
+
+	windows.clear();
+
+	 // collect window handles of all other desktops
+	WindowSet other_wnds;
+	for(const_iterator it1=begin(); it1!=end(); ++it1)
+		for(WindowSet::const_iterator it2=it1->_windows.begin(); it2!=it1->_windows.end(); ++it2)
+			other_wnds.insert(*it2);
+
+	 // save currently visible application windows
+	EnumWindows(SwitchDesktopEnumFct, (LPARAM)&windows);
+
+	old_desktop._hwndForeground = (HWND)SendMessage(g_Globals._hwndDesktopBar, PM_GET_LAST_ACTIVE, 0, 0);
+
+	 // hide all windows of the previous desktop
+	for(WindowSet::iterator it=windows.begin(); it!=windows.end(); ++it)
+		ShowWindowAsync(*it, SW_HIDE);
+
+	 // show all windows of the new desktop
+	for(WindowSet::iterator it=desktop._windows.begin(); it!=desktop._windows.end(); ++it)
+		ShowWindowAsync(*it, SW_SHOW);
+
+	if (desktop._hwndForeground)
+		SetForegroundWindow(desktop._hwndForeground);
+
+	 // remove the window handles of the other desktops from what we found on the previous desktop
+	for(WindowSet::const_iterator it=other_wnds.begin(); it!=other_wnds.end(); ++it)
+		windows.erase(*it);
+
+	 // We don't need to store the window handles of what's now visible the now current desktop.
+	desktop._windows.clear();
+
+	_current_desktop = idx;
+}
+
+
+static BOOL CALLBACK MinimizeDesktopEnumFct(HWND hwnd, LPARAM lparam)
+{
+	list<MinimizeStruct>& minimized = *(list<MinimizeStruct>*)lparam;
+
+	if (IsWindowVisible(hwnd))
+		if (hwnd!=g_Globals._hwndDesktopBar && hwnd!=g_Globals._hwndDesktop)
+			if (!IsIconic(hwnd)) {
+				minimized.push_back(MinimizeStruct(hwnd, GetWindowStyle(hwnd)));
+				ShowWindowAsync(hwnd, SW_MINIMIZE);
+			}
+
+	return TRUE;
+}
+
+ /// minimize/restore all windows on the desktop
+void Desktops::ToggleMinimize()
+{
+	list<MinimizeStruct>& minimized = (*this)[_current_desktop]._minimized;
+
+	if (minimized.empty()) {
+		EnumWindows(MinimizeDesktopEnumFct, (LPARAM)&minimized);
+	} else {
+		for(list<MinimizeStruct>::const_iterator it=minimized.begin(); it!=minimized.end(); ++it)
+			ShowWindowAsync(it->first, it->second&WS_MAXIMIZE? SW_MAXIMIZE: SW_RESTORE);
+
+		minimized.clear();
+	}
+}
+
+
+BOOL IsAnyDesktopRunning()
+{
+	HINSTANCE hUser32 = GetModuleHandle(TEXT("user32"));
+
+	SetShellWindow = (BOOL(WINAPI*)(HWND)) GetProcAddress(hUser32, "SetShellWindow");
+	SetShellWindowEx = (BOOL(WINAPI*)(HWND,HWND)) GetProcAddress(hUser32, "SetShellWindowEx");
+
+	return GetShellWindow() != 0;
+}
+
+
+BackgroundWindow::BackgroundWindow(HWND hwnd)
+ :	super(hwnd)
+{
+	 // set background brush for the short moment of displaying the
+	 // background color while moving foreground windows
+	SetClassLong(hwnd, GCL_HBRBACKGROUND, COLOR_BACKGROUND+1);
+
+	_display_version = RegGetDWORDValue(HKEY_CURRENT_USER, TEXT("Control Panel\\Desktop"), TEXT("PaintDesktopVersion"), 1);
+}
+
+LRESULT BackgroundWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
+{
+	switch(nmsg) {
+	  case WM_ERASEBKGND:
+		DrawDesktopBkgnd((HDC)wparam);
+		return TRUE;
+
+	  case WM_MBUTTONDBLCLK:
+		explorer_show_frame(SW_SHOWNORMAL);
+		break;
+
+	  case PM_DISPLAY_VERSION:
+		if (lparam || wparam) {
+			DWORD or_mask = wparam;
+			DWORD reset_mask = LOWORD(lparam);
+			DWORD xor_mask = HIWORD(lparam);
+			_display_version = ((_display_version&~reset_mask) | or_mask) ^ xor_mask;
+			InvalidateRect(_hwnd, NULL, TRUE);
+		}
+		return _display_version;
+
+	  default:
+		return super::WndProc(nmsg, wparam, lparam);
+	}
+
+	return 0;
+}
+
+void BackgroundWindow::DrawDesktopBkgnd(HDC hdc)
+{
+	PaintDesktop(hdc);
+
+/* special solid background
+	HBRUSH bkgndBrush = CreateSolidBrush(RGB(0,32,160));	// dark blue
+	FillRect(hdc, &rect, bkgndBrush);
+	DeleteBrush(bkgndBrush);
+*/
+	if (_display_version) {
+		static const String s_bkgnd_txt = ResString(IDS_EXPLORER_VERSION_STR) + TEXT("\nby Martin Fuchs");
+
+		FmtString txt(s_bkgnd_txt, (LPCTSTR)ResString(IDS_VERSION_STR));
+		ClientRect rect(_hwnd);
+
+		rect.left = rect.right - 280;
+		rect.top = rect.bottom - 80 - DESKTOPBARBAR_HEIGHT;
+		rect.right = rect.left + 250;
+		rect.bottom = rect.top + 40;
+
+		BkMode bkMode(hdc, TRANSPARENT);
+
+		TextColor textColor(hdc, RGB(128,128,192));
+		DrawText(hdc, txt, -1, &rect, DT_RIGHT);
+
+		SetTextColor(hdc, RGB(255,255,255));
+		--rect.right;
+		++rect.top;
+		DrawText(hdc, txt, -1, &rect, DT_RIGHT);
+	}
+}
+
+
+DesktopWindow::DesktopWindow(HWND hwnd)
+ :	super(hwnd)
+{
+	_pShellView = NULL;
+}
+
+DesktopWindow::~DesktopWindow()
+{
+	if (_pShellView)
+		_pShellView->Release();
+}
+
+
+HWND DesktopWindow::Create()
+{
+	static IconWindowClass wcDesktop(TEXT("Progman"), IDI_REACTOS, CS_DBLCLKS);
+	/* (disabled because of small ugly temporary artefacts when hiding start menu)
+	wcDesktop.hbrBackground = (HBRUSH)(COLOR_BACKGROUND+1); */
+
+	int width = GetSystemMetrics(SM_CXSCREEN);
+	int height = GetSystemMetrics(SM_CYSCREEN);
+
+	HWND hwndDesktop = Window::Create(WINDOW_CREATOR(DesktopWindow),
+					WS_EX_TOOLWINDOW, wcDesktop, TEXT("Program Manager"), WS_POPUP|WS_VISIBLE|WS_CLIPCHILDREN,
+					0, 0, width, height, 0);
+
+	 // work around to display desktop bar in Wine
+	ShowWindow(GET_WINDOW(DesktopWindow, hwndDesktop)->_desktopBar, SW_SHOW);
+
+	 // work around for Windows NT, Win 98, ...
+	 // Without this the desktop has mysteriously only a size of 800x600 pixels.
+	MoveWindow(hwndDesktop, 0, 0, width, height, TRUE);
+
+	return hwndDesktop;
+}
+
+
+LRESULT	DesktopWindow::Init(LPCREATESTRUCT pcs)
+{
+	if (super::Init(pcs))
+		return 1;
+
+	HRESULT hr = GetDesktopFolder()->CreateViewObject(_hwnd, IID_IShellView, (void**)&_pShellView);
+/* also possible:
+	SFV_CREATE sfv_create;
+
+	sfv_create.cbSize = sizeof(SFV_CREATE);
+	sfv_create.pshf = GetDesktopFolder();
+	sfv_create.psvOuter = NULL;
+	sfv_create.psfvcb = NULL;
+
+	HRESULT hr = SHCreateShellFolderView(&sfv_create, &_pShellView);
+*/
+	HWND hWndView = 0;
+
+	if (SUCCEEDED(hr)) {
+		FOLDERSETTINGS fs;
+
+		fs.ViewMode = FVM_ICON;
+		fs.fFlags = FWF_DESKTOP|FWF_NOCLIENTEDGE|FWF_NOSCROLL|FWF_BESTFITWINDOW|FWF_SNAPTOGRID;	//|FWF_AUTOARRANGE;
+
+		ClientRect rect(_hwnd);
+
+		hr = _pShellView->CreateViewWindow(NULL, &fs, this, &rect, &hWndView);
+
+		///@todo use IShellBrowser::GetViewStateStream() to restore previous view state -> see SHOpenRegStream()
+
+		if (SUCCEEDED(hr)) {
+			g_Globals._hwndShellView = hWndView;
+
+			 // subclass shellview window
+			new DesktopShellView(hWndView, _pShellView);
+
+			_pShellView->UIActivate(SVUIA_ACTIVATE_FOCUS);
+
+		/*
+			IShellView2* pShellView2;
+
+			hr = _pShellView->QueryInterface(IID_IShellView2, (void**)&pShellView2);
+
+			SV2CVW2_PARAMS params;
+			params.cbSize = sizeof(SV2CVW2_PARAMS);
+			params.psvPrev = _pShellView;
+			params.pfs = &fs;
+			params.psbOwner = this;
+			params.prcView = &rect;
+			params.pvid = params.pvid;//@@
+
+			hr = pShellView2->CreateViewWindow2(&params);
+			params.pvid;
+		*/
+
+		/*
+			IFolderView* pFolderView;
+
+			hr = _pShellView->QueryInterface(IID_IFolderView, (void**)&pFolderView);
+
+			if (SUCCEEDED(hr)) {
+				hr = pFolderView->GetAutoArrange();
+				hr = pFolderView->SetCurrentViewMode(FVM_DETAILS);
+			}
+		*/
+		}
+	}
+
+	if (hWndView && SetShellWindowEx)
+		SetShellWindowEx(_hwnd, hWndView);
+	else if (SetShellWindow)
+		SetShellWindow(_hwnd);
+
+	 // create the explorer bar
+	_desktopBar = DesktopBar::Create();
+	g_Globals._hwndDesktopBar = _desktopBar;
+
+	return 0;
+}
+
+
+LRESULT DesktopWindow::WndProc(UINT nmsg, WPARAM wparam, LPARAM lparam)
+{
+	switch(nmsg) {
+	  case WM_LBUTTONDBLCLK:
+	  case WM_RBUTTONDBLCLK:
+	  case WM_MBUTTONDBLCLK:
+		explorer_show_frame(SW_SHOWNORMAL);
+		break;
+
+	  case WM_GETISHELLBROWSER:
+		return (LRESULT)static_cast<IShellBrowser*>(this);
+
+	  case WM_DESTROY:
+
+		///@todo use IShellBrowser::GetViewStateStream() and _pShellView->SaveViewState() to store view state
+		
+		if (SetShellWindow)
+			SetShellWindow(0);
+		break;
+
+	  case WM_CLOSE:
+		ShowExitWindowsDialog(_hwnd);
+		break;
+
+	  case WM_SYSCOMMAND:
+		if (wparam == SC_TASKLIST) {
+			if (_desktopBar)
+				SendMessage(_desktopBar, nmsg, wparam, lparam);
+		}
+		goto def;
+
+	  default: def:
+		return super::WndProc(nmsg, wparam, lparam);
+	}
+
+	return 0;
+}
+
+
+HRESULT DesktopWindow::OnDefaultCommand(LPIDA pida)
+{
+#ifndef ROSSHELL	// in shell-only-mode fall through and let shell32 handle the command
[truncated at 1000 lines; 18435 more skipped]