Release 980913
Fri Sep 11 13:14:35 1998 Andreas Mohr <100.30936@germany.net>
* [files/file.c] [include/file.h]
Fixed SetFilePointer to allow negative positions as in DOS.
* [graphics/ddraw.c]
Added some methods to IDirect3D.
* [ole/compobj.c] [if1632/compobj.spec]
Added/implemented CoCreateStandardMalloc16,
CoGetClassObject, CoCreateInstance,
LookupETask, SetETask, CoGetState16.
* [loader/task.c]
MakeProcInstance: return 0 if func == NULL.
* [*/*] [tools/winapi-check]
Added zillions of missing WINAPI's and __cdecl's.
(oops, several caused by myself)
Wrote script for automated checking.
* [if1632/compobj.spec]
Many stub names.
* [misc/ddeml.c] [ole/compobj.c]
Some stubs.
Tue Sep 9 21:36:48 1998 Anders Carlsson <anders.carlsson@linux.nu>
* [dlls/comctl32/Makefile.in] [dlls/comctl32/commctrl.c]
[dlls/comctl32/tab.c] [include/commctrl.h] [include/tab.h]
Added preliminary tab control support.
Sat Sep 5 16:27:20 1998 Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>
* [graphics/psdrv/*]
More changes to the PostScript driver:
Implemented pens and solid brushes.
Colour/greyscale for fonts, pens and brushes.
To get coloured output you need to have *ColorDevice set to true
in your PPD, otherwise you'll get greyscale.
Landscape mode now works, as does non-A4 page sizes.
Encoding of fonts to ANSI is better, Symbol works again.
* [objects/dc.c] [include/gdi.h] [*/*]
Moved dc->w.{text,background}Pixel to X11DRV_PDEVICE where they
belong.
Sat Sep 5 05:12:09 1998 Ove Kaaven <ovek@arcticnet.no>
* [include/dosexe.h] [include/miscemu.h] [include/msdos.h]
[loader/dos/dosvm.c] [loader/dos/module.c] [msdos/dpmi.c]
[msdos/int2f.c] [msdos/interrupts.c]
Fixed portability. Adapted some code to make it easier to
integrate the DOS subsystem with the DPMI subsystem, made
the DPMI simulated real-mode interrupts be handled the V86
way. Added support for .COM files. Made int2f DPMI check
fail, to avoid pkunzip crashing in attempting to use DPMI.
Generally moved stuff around a little.
It is now technically possible to load several DOS programs
into the same memory space. Not tested, though.
Fri Sep 4 21:40:45 1998 Marcus Meissner <marcus@jet.franken.de>
* [if1632/kernel.spec]
Changed 500-53x stubnames accordingly to nt3.51 krnl386.exe.
* [win32/except.c]
Fixed one bad program behaviour, (deleting SEH while in
first walk). RtlUnwind is broken too I think (it should unwind
on success, not while walking the exception chain).
* [ole/ole2nls.c]
Get*DefaultLCID returns 0x400|id. expected by one application.
* [if1632/snoop.c]
Handle non-standard SP returns more graceful.
* [windows/class.c]
hinstances are mostly irrelevant for win32.
* [memory/string.c] [misc/registry.c]
lstrcmpi32W: use toupper for characters < 0x100. (speedup hack
for registry.c)
Some small speedup hacks for registry.c
Thu Sep 3 20:40:16 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [Makefile.in][configure][configure.in][dlls/Makefile.in]
[dlls/comctl32/Makefile.in]
Created dlls/comctl32 and moved the common controls stuff to it.
* [misc/version.c]
Removed COMCTL32_DllGetVersion. The fixed function is part
of the common controls stuff.
* [dlls/comctl32/*.c][include/commctrl.h]
Added structure size tests.
* [dlls/comctl32/toolbar.c]
Fixed a bug in TOOLBAR_GetMaxWidth().
* [dlls/comctl32/animate.c][include/animate.h]
[dlls/comctl32/comboex.c][include/comboex.h]
[dlls/comctl32/hotkey.c][include/hotkey.h]
[dlls/comctl32/listview.c][include/listview.h]
[dlls/comctl32/commctrl.c][include/commctrl.h]
New files. Added Animation, ComboBoxEx, Hotkey and
Listview control dummies.
* [dlls/comctl32/tooltips.c]
Fixed a display bug and font selection.
* [dlls/comctl32/comctl32undoc.c][include/commctrl.h]
Added missing DPA functions. Fixed bugs and published the
function prototypes.
* [documentation/common_controls]
Updated.
Wed Sep 2 15:43:45 1998 Patrik Stridvall <ps@leissner.se>
* [AUTHORS] [include/authors.h]
Added myself as a Wine author.
* [memory/virtual.c] [objects/dc.c]
Fixed runtime errors for Solaris.
* [misc/ddeml.c] [objects/gdiobj.c]
Minor fixes.
* [win32/device.c]
Added stubs for IFSMgr VxDCall and
a partial implementation of IFSMgr DeviceIo.
* [relay32/Makefile.in] [relay32/builtin32.c] [relay32/imm32.spec]
[relay32/msnet32.spec] [relay32/oledlg.spec]
Added new spec files for IMM32.DLL, MSNET32.DLL, OLEDLG.DLL.
* [misc/Makefile.in] [misc/imm.c] [include/imm.h]
Added news files for implementation of IMM32.DLL.
All functions return 0 as is correct for all Western Languages.
* [ole/Makefile.in] [ole/oledlg.c] [include/oledlg.h]
Added new files for implementation of OLEDLG.DLL.
Added stubs with FIXME:s for all functions.
Wed Sep 2 10:50:00 1998 Juergen Schmied <juergen.schmied@metronet.de>
* [dlls/shell32/contmenu.c][dlls/shell32/shellole.c]
[dlls/shell32/shlfolder.c][dlls/shell32/shlview.c]
[documentation/shell32][include/shell.h]
Clean up, bugfixes.
* [dlls/shell32/enumidlist.c]
Fileattributes implemented.
* [dlls/shell32/pidl.c]
Class pidlmgr splited into functions, structures changed,
some functions rewritten.
* [dlls/shell32/shell32_main.c]
Small changes and bugfixes SHGetFileInfoA, SHGetSpecialFolderLocation.
* [dlls/shell32/shellord.c][relay32/shell32.spec]
Parameter documented, implemented SHCloneSpecialIDList.
Stub improved ShellExecuteEx32A.
New stubs SHFind_InitMenuPopup, FileMenu_InitMenuPopup,
FileMenu_Create, FileMenu_TrackPopupMenuEx, SHWinHelp,
SHRunConrolPanel, DAD_ShowDragImage, FileMenu_Destroy,
SHGetDataFromIDListA, SHFileOperationA.
* [include/winnls.h][include/ole2nls.c]
TIME_FORCE24HOURFORMAT, TIME_NOTIMEMARKER implemented
in OLE_GetFormatA, GetTimeFormat32A.
* [win32/code_page.c]
WideCharToMultiByte: parameter checking and returning of strlen
implemented.
* [windows/keyboard.c][windows/defwnd.c]
Debug messages added.
* [windows/win.c]
WIN_SetWindowLong GWL_STYLE and GWL_EXSTYLE implemented.
* [controls/menu.c]
Missing line added.
* [include/winerror.h]
Macros for SUCCEEDED and FAILED added.
Mon Aug 31 00:55:31 1998 Ulrich Weigand <weigand@informatik.uni-erlangen.de>
* [loader/module.c]
Bugfix: LoadModule16 should *not* call LoadModule32.
* [files/dos_fs.c]
Bugfix: don't crash if given directory doesn't exist.
Sat Aug 29 15:00:49 1998 Turchanov Sergey <turchanov@usa.net>
* [include/mmsystem.h][multimedia/mmsystem.c][relay32/winmm.spec]
Almost completed implementation of [snd]PlaySound (except
flags SND_ALIAS_ID and SND_APPLICATION).
* [if1632/user.spec][windows/winpos.c]
Added SetWindowRgn16 stub.
Sat Aug 29 02:53:31 1998 Alexander Lukyanov <lav@long.yar.ru>
* [files/drive.c]
GetDriveType32A: return DRIVE_DOESNOTEXIST in case of non
existent drive.
* [msdos/int21.c]
INT21_FindFirstFCB: check drive validity to prevent oops.
* [win32/file.c]
CreateFile32A: duplicate STD_{INPUT,OUTPUT}_HANDLE.
* [files/dos_fs.c]
Make DOSFS_OpenDir treat "" as "/".
DOSFS_OpenDevice: duplicate STD_{INPUT,OUTPUT}_HANDLE.
* [windows/dialog.c]
GetNextDlgTabItem32: use last/first item instead of first/last
when hwndCtrl==0. This fixes initial focus.
Sat Aug 29 02:46:32 1998 Adrian Harvey <adrian@select.com.au>
* [include/process.h] [include/process.c]
Renamed PROCESS_SELF to CURRENT_PROCESS_PSEUDOHANDLE in line
with thread constant, and Win32 documentation (which calls it
a pseudohandle.) Made GetCurrentProcess actually use this
constant instead of the value.
* [include/process.h] [include/thread.h] [scheduler/thread.c]
[scheduler/process.c] [scheduler/handle.c]
Modify HANDLE_GetObjPtr to understand about
CURRENT_THREAD_PSEUDOHANDLE and CURRENT_PROCESS_PSEUDOHANDLE.
This allows DuplicateHandle to do the correct thing with these
handles. Removed now duplicate functionality from THREAD_GetPtr
and PROCESS_GetPtr.
* [loader/ne/segment.c]
Fixed two places where HFILE32s were being created and passed to
16-bit code. This should unbreak NE self-loading code.
Added two casts to remove compile time warnings.
Fri Aug 28 21:04:13 1998 Joseph Pranevich <knight@baltimore.wwaves.com>
* [msdos/dosmem.c] [msdos/int2f.c]
Added beginnings of DOS error table.
* [msdos/int1a.c]
Stub for subfunction 0xb0.
* [msdos/int10.c] [loader/dos/dosvm.c]
INT 10 support completely rewritten and lots of debugging
added. Now, DOS apps that use INT 10 to write to the screen will
work. (Beyond Zork does, at least. Somewhat.)
* [include/miscemu.h] [msdos/dosmem.c] [msdos/int21.c]
Another shot at getting MS's generic error message facility
right.
* [msdos/int21.c]
Command.Com wanted to set its own PSP address. I let it.
Wed Aug 26 12:26:20 1998 Matthew Toseland <Matthew.Toseland@btinternet.com>
* [include/file.h] [misc/lzexpand.c]
Fixed LZCopy16 by fixing HFILE16/HFILE32 convertor macros so don't
convert lzw handles.
Tue Aug 25 22:22:55 1998 Uwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
* [misc/registry.c]
In RegEnumvalue, ivalue == 0 is a legal request and should
return the first entry.
* [msdos/int21.c]
Add handling for Int21-48/49 in Win16. Makes blinker demo work.
* [windows/winproc.c]
Add Msg32A<->Msg32W translation for LB_ADDSTRING.
Tue Aug 25 21:03:31 1998 Kristian Nielsen <kristian.nielsen@risoe.dk>
* [windows/win.c]
Fix for SetParent(): MS Windows 3.11 does not clear the WS_CHILD
flag when a child window is reparented to the desktop window.
Mon Aug 24 20:55:22 1998 Berend Reitsma <berend at asset-control dot com>
* [controls/menu.c]
Menus created with SetMenuItemInfo and InsertMenuItem should
work now.
Sun Aug 23 23:23:23 1998 Alex Korobka <korobka@ams.sunysb.edu>
* [controls/combo.c]
Added CB_GETITEMHEIGHT.
* [windows/winpos.c]
WM_NCHITTEST, SWP_FRAMECHANGED bugfixes.
Sat Aug 22 21:15:29 1998 Alex Priem <alexp@sci.kun.nl>
* [files/profile.c] [include/windows.h]
Added GetPrivateProfileSectionNames[AW],GetPrivateProfileSectionW,
GetPrivateProfileStructW, GetProfileSectionW,
WriteProfileSection[AW], WritePrivateProfileStructW.
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 90796db..3939b38 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -97,7 +97,8 @@
sv->lpvtbl=&svvt;
sv->mpidl = ILClone(pidl);
-
+ sv->hMenu=0;
+
sv->pSFParent = pFolder;
if(sv->pSFParent)
sv->pSFParent->lpvtbl->fnAddRef(sv->pSFParent);
@@ -118,8 +119,8 @@
TRACE(shell,"%p\n",this);
- dwStyle = WS_TABSTOP | WS_VISIBLE |WS_CHILD | WS_BORDER | LVS_REPORT |
- LVS_SHAREIMAGELISTS | LVS_EDITLABELS ;
+ dwStyle = WS_TABSTOP | WS_VISIBLE | WS_CHILD | WS_BORDER |
+ LVS_ICON | LVS_SHAREIMAGELISTS | LVS_EDITLABELS ;
this->hWndList=CreateWindowEx32A( WS_EX_CLIENTEDGE,WC_LISTVIEW32A,NULL,dwStyle,
0,0,0,0,
@@ -143,7 +144,7 @@
int nColumn4=100;
BOOL32 ShellView_InitList(LPSHELLVIEW this)
-{ LV_COLUMN lvColumn;
+{ LVCOLUMN32A lvColumn;
CHAR szString[50];
TRACE(shell,"%p\n",this);
@@ -152,29 +153,32 @@
ListView_DeleteAllItems(this->hWndList); /*empty the list*/
//initialize the columns
- lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM;
+ lvColumn.mask = LVCF_FMT | LVCF_WIDTH | LVCF_SUBITEM;
+
lvColumn.fmt = LVCFMT_LEFT;
lvColumn.pszText = szString;
lvColumn.cx = nColumn1;
strcpy(szString,"File");
/*LoadString32A(shell32_hInstance, IDS_COLUMN1, szString, sizeof(szString));*/
- ListView_InsertColumn(this->hWndList, 0, &lvColumn);
+ ListView_InsertColumn32A(this->hWndList, 0, &lvColumn);
lvColumn.cx = nColumn2;
- strcpy(szString,"IDS_COLUMN2");
- ListView_InsertColumn(this->hWndList, 1, &lvColumn);
+ strcpy(szString,"COLUMN2");
+ ListView_InsertColumn32A(this->hWndList, 1, &lvColumn);
lvColumn.cx = nColumn3;
- strcpy(szString,"IDS_COLUMN3");
- ListView_InsertColumn(this->hWndList, 2, &lvColumn);
+ strcpy(szString,"COLUMN3");
+ ListView_InsertColumn32A(this->hWndList, 2, &lvColumn);
lvColumn.cx = nColumn4;
- strcpy(szString,"IDS_COLUMN4");
- ListView_InsertColumn(this->hWndList, 3, &lvColumn);
+ strcpy(szString,"COLUMN4");
+ ListView_InsertColumn32A(this->hWndList, 3, &lvColumn);
- ListView_SetImageList(this->hWndList, ShellBigIconList, LVSIL_SMALL);
-
+ ListView_SetImageList(this->hWndList, ShellSmallIconList, LVSIL_SMALL);
+ ListView_SetImageList(this->hWndList, ShellBigIconList, LVSIL_NORMAL);
+ ListView_SetBkColor(this->hWndList, 0x00800000 );
+
return TRUE;
}
/**************************************************************************
@@ -204,11 +208,11 @@
{ LPENUMIDLIST pEnumIDList;
LPITEMIDLIST pidl;
DWORD dwFetched;
- LV_ITEM lvItem;
+ LVITEM32A lvItem;
TRACE(shell,"%p\n",this);
- if(S_OK == this->pSFParent->lpvtbl->fnEnumObjects(this->pSFParent,this->hWnd, SHCONTF_NONFOLDERS | SHCONTF_FOLDERS, &pEnumIDList))
+ if(SUCCEEDED(this->pSFParent->lpvtbl->fnEnumObjects(this->pSFParent,this->hWnd, SHCONTF_NONFOLDERS | SHCONTF_FOLDERS, &pEnumIDList)))
{ SendMessage32A(this->hWndList, WM_SETREDRAW, FALSE, 0); /*turn the listview's redrawing off*/
while((S_OK == pEnumIDList->lpvtbl->fnNext(pEnumIDList,1, &pidl, &dwFetched)) && dwFetched)
@@ -219,7 +223,7 @@
lvItem.lParam = (LPARAM)ILClone(pidl); /*set the item's data*/
lvItem.pszText = LPSTR_TEXTCALLBACK32A; /*get text on a callback basis*/
lvItem.iImage = I_IMAGECALLBACK; /*get the image on a callback basis*/
- ListView_InsertItem(this->hWndList, &lvItem); /*add the item*/
+ ListView_InsertItem32A(this->hWndList, &lvItem); /*add the item*/
}
/*sort the items*/
@@ -267,9 +271,11 @@
{ CHAR szText[MAX_PATH];
MENUITEMINFO32A mii;
int nTools,i;
- HMENU32 hSubMenu = CreatePopupMenu32();
+ HMENU32 hSubMenu;
TRACE(shell,"(%p) stub\n",this);
+
+ hSubMenu = CreatePopupMenu32();
if(hSubMenu)
{ /*get the number of items in our global array*/
for(nTools = 0; g_Tools[nTools].idCommand != -1; nTools++){}
@@ -478,7 +484,7 @@
}
/**************************************************************************
-* CShellView::AddRemoveDockingWindow()
+* ShellView_AddRemoveDockingWindow()
*/
BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
{ TRACE(shell,"(%p)->(badd=0x%08x) stub\n",this,bAdd);
@@ -537,28 +543,6 @@
}
/**************************************************************************
-* ShellView_OnCommand()
-*/
-LRESULT ShellView_OnCommand(LPSHELLVIEW this,DWORD dwCmdID, DWORD dwCmd, HWND32 hwndCmd)
-{ TRACE(shell,"(%p)->(0x%08lx 0x%08lx 0x%08x) stub\n",this, dwCmdID, dwCmd, hwndCmd);
- switch(dwCmdID)
- { case IDM_VIEW_FILES:
- g_bViewKeys = ! g_bViewKeys;
- IShellView_Refresh(this);
- break;
-
- case IDM_VIEW_IDW:
- g_bShowIDW = ! g_bShowIDW;
- ShellView_AddRemoveDockingWindow(this, g_bShowIDW);
- break;
-
- case IDM_MYFILEITEM:
- MessageBeep32(MB_OK);
- break;
- }
- return 0;
-}
-/**************************************************************************
* ShellView_CanDoIDockingWindow()
*/
BOOL32 ShellView_CanDoIDockingWindow(LPSHELLVIEW this)
@@ -590,12 +574,12 @@
CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED));
if(ShellView_CanDoIDockingWindow(this))
- { EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_ENABLED);
- CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | (g_bShowIDW ? MF_CHECKED: MF_UNCHECKED));
+ { EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_ENABLED);
+ CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | (g_bShowIDW ? MF_CHECKED: MF_UNCHECKED));
}
else
{ EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
- CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
+ CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
}
return 0;
}
@@ -604,7 +588,7 @@
* ShellView_UpdateShellSettings()
**************************************************************************/
-typedef void (WINAPI *PFNSHGETSETTINGSPROC)(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
+typedef void (CALLBACK *PFNSHGETSETTINGSPROC)(LPSHELLFLAGSTATE lpsfs, DWORD dwMask);
void ShellView_UpdateShellSettings(LPSHELLVIEW this)
@@ -664,202 +648,239 @@
* ShellView_DoContextMenu()
*/
void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault)
-{ UINT32 uSelected = ListView_GetSelectedCount(this->hWndList);
+{ UINT32 uCommand, i, uSelected = ListView_GetSelectedCount(this->hWndList);
+ HMENU32 hMenu;
+ BOOL32 fExplore = FALSE;
+ HWND32 hwndTree = 0;
+ INT32 nMenuIndex;
LPITEMIDLIST *aSelectedItems;
- UINT32 i;
- LPCONTEXTMENU pContextMenu = NULL;
- LVITEM lvItem;
- UINT32 uCommand;
+ LVITEM32A lvItem;
MENUITEMINFO32A mii;
- int nMenuIndex;
- CMINVOKECOMMANDINFO cmi;
-
+ LPCONTEXTMENU pContextMenu = NULL;
+ CMINVOKECOMMANDINFO32 cmi;
+
TRACE(shell,"(%p)->(0x%08x 0x%08x 0x%08x) stub\n",this, x, y, fDefault);
aSelectedItems = (LPITEMIDLIST*)SHAlloc(uSelected * sizeof(LPITEMIDLIST));
if(aSelectedItems)
- { ZeroMemory(&lvItem, sizeof(lvItem));
+ { TRACE(shell,"-- aSelectedItems\n");
+ ZeroMemory(&lvItem, sizeof(lvItem));
lvItem.mask = LVIF_STATE | LVIF_PARAM;
lvItem.stateMask = LVIS_SELECTED;
lvItem.iItem = 0;
i = 0;
- while(ListView_GetItem(this->hWndList, &lvItem) && (i < uSelected))
- { if(lvItem.state & LVIS_SELECTED)
- { aSelectedItems[i] = (LPITEMIDLIST)lvItem.lParam;
- i++;
- }
- lvItem.iItem++;
- }
+ while(ListView_GetItem32A(this->hWndList, &lvItem) && (i < uSelected))
+ { if(lvItem.state & LVIS_SELECTED)
+ { aSelectedItems[i] = (LPITEMIDLIST)lvItem.lParam;
+ i++;
+ }
+ lvItem.iItem++;
+ }
this->pSFParent->lpvtbl->fnGetUIObjectOf(this->pSFParent, this->hWndParent, uSelected,
(LPCITEMIDLIST*)aSelectedItems, &IID_IContextMenu, NULL,(LPVOID*)&pContextMenu);
if(pContextMenu)
- { HMENU32 hMenu = CreatePopupMenu32();
+ { TRACE(shell,"-- pContextMenu\n");
+ hMenu = CreatePopupMenu32();
/* See if we are in Explore or Open mode. If the browser's tree is present,
then we are in Explore mode.*/
- BOOL32 fExplore = FALSE;
- HWND32 hwndTree = 0;
- if(S_OK==(this->pShellBrowser->lpvtbl->fnGetControlWindow(this->pShellBrowser,FCW_TREE, &hwndTree)) && hwndTree)
- { fExplore = TRUE;
- }
+ fExplore = FALSE;
+ hwndTree = 0;
+ if(SUCCEEDED(this->pShellBrowser->lpvtbl->fnGetControlWindow(this->pShellBrowser,FCW_TREE, &hwndTree)) && hwndTree)
+ { TRACE(shell,"-- fExplore\n");
+ fExplore = TRUE;
+ }
- if(hMenu && S_OK==(pContextMenu->lpvtbl->fnQueryContextMenu(pContextMenu,
+ if(hMenu && SUCCEEDED(pContextMenu->lpvtbl->fnQueryContextMenu(pContextMenu,
hMenu,0,MENU_OFFSET,MENU_MAX,CMF_NORMAL |
- (uSelected != 1 ? 0 : CMF_CANRENAME) | (fExplore ? CMF_EXPLORE : 0))))
- { if(fDefault)
- { uCommand = 0;
+ (uSelected != 1 ? 0 : CMF_CANRENAME) |
+ (fExplore ? CMF_EXPLORE : 0))))
+ { if(fDefault)
+ { TRACE(shell,"-- fDefault\n");
+ uCommand = 0;
- ZeroMemory(&mii, sizeof(mii));
- mii.cbSize = sizeof(mii);
- mii.fMask = MIIM_STATE | MIIM_ID;
+ ZeroMemory(&mii, sizeof(mii));
+ mii.cbSize = sizeof(mii);
+ mii.fMask = MIIM_STATE | MIIM_ID;
- nMenuIndex = 0;
+ nMenuIndex = 0;
- //find the default item in the menu
- while(GetMenuItemInfo32A(hMenu, nMenuIndex, TRUE, &mii))
- { if(mii.fState & MFS_DEFAULT)
- { uCommand = mii.wID;
- break;
- }
- nMenuIndex++;
- }
- }
- else
- { uCommand = TrackPopupMenu32( hMenu,TPM_LEFTALIGN | TPM_RETURNCMD,x,y,0,this->hWnd,NULL);
- }
+ /*find the default item in the menu*/
+ while(GetMenuItemInfo32A(hMenu, nMenuIndex, TRUE, &mii))
+ { if(mii.fState & MFS_DEFAULT)
+ { uCommand = mii.wID;
+ break;
+ }
+ nMenuIndex++;
+ }
+ }
+ else
+ { TRACE(shell,"-- ! fDefault\n");
+ uCommand = TrackPopupMenu32( hMenu,TPM_LEFTALIGN | TPM_RETURNCMD,x,y,0,this->hWnd,NULL);
+ }
- if(uCommand > 0)
- { ZeroMemory(&cmi, sizeof(cmi));
- cmi.cbSize = sizeof(cmi);
- cmi.hwnd = this->hWndParent;
- cmi.lpVerb = (LPCSTR)MAKEINTRESOURCE32A(uCommand - MENU_OFFSET);
- pContextMenu->lpvtbl->fnInvokeCommand(pContextMenu, &cmi);
- }
- DestroyMenu32(hMenu);
- }
- pContextMenu->lpvtbl->fnRelease(pContextMenu);
- }
- SHFree(aSelectedItems);
+ if(uCommand > 0)
+ { TRACE(shell,"-- ! uCommand\n");
+ ZeroMemory(&cmi, sizeof(cmi));
+ cmi.cbSize = sizeof(cmi);
+ cmi.hwnd = this->hWndParent;
+ cmi.lpVerb = (LPCSTR)MAKEINTRESOURCE32A(uCommand - MENU_OFFSET);
+ pContextMenu->lpvtbl->fnInvokeCommand(pContextMenu, &cmi);
+ }
+ DestroyMenu32(hMenu);
+ }
+ pContextMenu->lpvtbl->fnRelease(pContextMenu);
+ }
+ SHFree(aSelectedItems);
}
}
/**************************************************************************
+* ShellView_OnCommand()
+*/
+LRESULT ShellView_OnCommand(LPSHELLVIEW this,DWORD dwCmdID, DWORD dwCmd, HWND32 hwndCmd)
+{ TRACE(shell,"(%p)->(0x%08lx 0x%08lx 0x%08x) stub\n",this, dwCmdID, dwCmd, hwndCmd);
+ switch(dwCmdID)
+ { case IDM_VIEW_FILES:
+ g_bViewKeys = ! g_bViewKeys;
+ IShellView_Refresh(this);
+ break;
+
+ case IDM_VIEW_IDW:
+ g_bShowIDW = ! g_bShowIDW;
+ ShellView_AddRemoveDockingWindow(this, g_bShowIDW);
+ break;
+
+ case IDM_MYFILEITEM:
+ MessageBeep32(MB_OK);
+ break;
+
+ default:
+ FIXME(shell,"-- unknown command\n");
+ }
+ return 0;
+}
+
+/**************************************************************************
* ShellView_OnNotify()
*/
LRESULT ShellView_OnNotify(LPSHELLVIEW this, UINT32 CtlID, LPNMHDR lpnmh)
-{ NM_LISTVIEW *lpnmlv = (NM_LISTVIEW*)lpnmh;
- LV_DISPINFO *lpdi = (LV_DISPINFO *)lpnmh;
- LPITEMIDLIST pidl;
- DWORD dwCursor;
- STRRET str;
- UINT32 uFlags;
- IExtractIcon *pei;
+{ NM_LISTVIEW *lpnmlv = (NM_LISTVIEW*)lpnmh;
+ NMLVDISPINFO32A *lpdi = (NMLVDISPINFO32A *)lpnmh;
+ LPITEMIDLIST pidl;
+ DWORD dwCursor;
+ STRRET str;
+ UINT32 uFlags;
+ IExtractIcon *pei;
- TRACE(shell,"%p CtlID=%u lpnmh->code=%x\n",this,CtlID,lpnmh->code);
+ TRACE(shell,"%p CtlID=%u lpnmh->code=%x\n",this,CtlID,lpnmh->code);
- switch(lpnmh->code)
- { case NM_SETFOCUS:
- TRACE(shell,"NM_SETFOCUS %p\n",this);
- ShellView_OnSetFocus(this);
- break;
+ switch(lpnmh->code)
+ { case NM_SETFOCUS:
+ TRACE(shell,"NM_SETFOCUS %p\n",this);
+ ShellView_OnSetFocus(this);
+ break;
- case NM_KILLFOCUS:
- TRACE(shell,"NM_KILLFOCUS %p\n",this);
- ShellView_OnDeactivate(this);
- break;
+ case NM_KILLFOCUS:
+ TRACE(shell,"NM_KILLFOCUS %p\n",this);
+ ShellView_OnDeactivate(this);
+ break;
- case HDN_ENDTRACK:
- TRACE(shell,"HDN_ENDTRACK %p\n",this);
- /*nColumn1 = ListView_GetColumnWidth(this->hWndList, 0);
- nColumn2 = ListView_GetColumnWidth(this->hWndList, 1);*/
- return 0;
+ case HDN_ENDTRACK32A:
+ TRACE(shell,"HDN_ENDTRACK32A %p\n",this);
+ /*nColumn1 = ListView_GetColumnWidth(this->hWndList, 0);
+ nColumn2 = ListView_GetColumnWidth(this->hWndList, 1);*/
+ return 0;
- case LVN_DELETEITEM:
- TRACE(shell,"LVN_DELETEITEM %p\n",this);
- SHFree((LPITEMIDLIST)lpnmlv->lParam); /*delete the pidl because we made a copy of it*/
- break;
+ case LVN_DELETEITEM:
+ TRACE(shell,"LVN_DELETEITEM %p\n",this);
+ SHFree((LPITEMIDLIST)lpnmlv->lParam); /*delete the pidl because we made a copy of it*/
+ break;
#ifdef LVN_ITEMACTIVATE
- case LVN_ITEMACTIVATE:
-
-#else //LVN_ITEMACTIVATE
- case NM_DBLCLK:
- case NM_RETURN:
-#endif //LVN_ITEMACTIVATE
- TRACE(shell,"LVN_ITEMACTIVATE | NM_RETURN %p\n",this);
- ShellView_DoContextMenu(this, 0, 0, TRUE);
- return 0;
+ case LVN_ITEMACTIVATE:
+#else
+ case NM_DBLCLK:
+ case NM_RETURN:
+#endif
+ TRACE(shell,"LVN_ITEMACTIVATE | NM_RETURN %p\n",this);
+ ShellView_DoContextMenu(this, 0, 0, TRUE);
+ return 0;
- case LVN_GETDISPINFO:
- TRACE(shell,"LVN_GETDISPINFO %p\n",this);
- pidl = (LPITEMIDLIST)lpdi->item.lParam;
+ case NM_RCLICK:
+ TRACE(shell,"NM_RCLICK %p\n",this);
+ dwCursor = GetMessagePos();
+ ShellView_DoContextMenu(this, LOWORD(dwCursor), HIWORD(dwCursor), FALSE);
+
+ case LVN_GETDISPINFO32A:
+ TRACE(shell,"LVN_GETDISPINFO32A %p\n",this);
+ pidl = (LPITEMIDLIST)lpdi->item.lParam;
- if(lpdi->item.iSubItem) /*is the sub-item information being requested?*/
- { if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
- { if(PidlMgr_IsValue(NULL,pidl)) /*is this a value or a folder?*/
- { PidlMgr_GetDataText(NULL,this->mpidl, pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
- if(!*lpdi->item.pszText)
- sprintf(lpdi->item.pszText, "file attrib %u", lpdi->item.iSubItem );
- }
- else /*its a folder*/
- { sprintf(lpdi->item.pszText, "folder attrib %u", lpdi->item.iSubItem );
- }
- }
- }
- else /*the item text is being requested*/
- { if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
- { if(S_OK==this->pSFParent->lpvtbl->fnGetDisplayNameOf(this->pSFParent,pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &str))
- { if(STRRET_WSTR == str.uType)
- { WideCharToLocal32(lpdi->item.pszText, str.u.pOleStr, lpdi->item.cchTextMax);
- SHFree(str.u.pOleStr);
- }
- if(STRRET_CSTR == str.uType)
- { strncpy(lpdi->item.pszText, str.u.cStr, lpdi->item.cchTextMax);
- }
- }
- }
+ if(lpdi->item.iSubItem) /*is the sub-item information being requested?*/
+ { if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
+ { if(_ILIsValue(pidl)) /*is this a value or a folder?*/
+ { _ILGetDataText(this->mpidl, pidl, lpdi->item.pszText, lpdi->item.cchTextMax);
+ if(!*lpdi->item.pszText)
+ sprintf(lpdi->item.pszText, "file attrib %u", lpdi->item.iSubItem );
+ }
+ else /*its a folder*/
+ { sprintf(lpdi->item.pszText, "folder attrib %u", lpdi->item.iSubItem );
+ }
+ }
+ }
+ else /*the item text is being requested*/
+ { if(lpdi->item.mask & LVIF_TEXT) /*is the text being requested?*/
+ { if(SUCCEEDED(this->pSFParent->lpvtbl->fnGetDisplayNameOf(this->pSFParent,pidl, SHGDN_NORMAL | SHGDN_INFOLDER, &str)))
+ { if(STRRET_WSTR == str.uType)
+ { WideCharToLocal32(lpdi->item.pszText, str.u.pOleStr, lpdi->item.cchTextMax);
+ SHFree(str.u.pOleStr);
+ }
+ if(STRRET_CSTR == str.uType)
+ { strncpy(lpdi->item.pszText, str.u.cStr, lpdi->item.cchTextMax);
+ }
+ }
+ }
- if(lpdi->item.mask & LVIF_IMAGE) /*is the image being requested?*/
- { if(S_OK == (this->pSFParent->lpvtbl->fnGetUIObjectOf(this->pSFParent,this->hWnd,1,
- (LPCITEMIDLIST*)&pidl, (REFIID)&IID_IExtractIcon, NULL, (LPVOID*)&pei)))
- { //GetIconLoaction will give us the index into our image list
- pei->lpvtbl->fnGetIconLocation(pei, GIL_FORSHELL, NULL, 0, &lpdi->item.iImage, &uFlags);
- pei->lpvtbl->fnRelease(pei);
- }
- }
- }
- TRACE(shell,"-- text=%s image=%x\n",lpdi->item.pszText, lpdi->item.iImage);
- return 0;
+ if(lpdi->item.mask & LVIF_IMAGE) /*is the image being requested?*/
+ { if(SUCCEEDED(this->pSFParent->lpvtbl->fnGetUIObjectOf(this->pSFParent,this->hWnd,1,
+ (LPCITEMIDLIST*)&pidl, (REFIID)&IID_IExtractIcon, NULL, (LPVOID*)&pei)))
+ { //GetIconLoaction will give us the index into our image list
+ pei->lpvtbl->fnGetIconLocation(pei, GIL_FORSHELL, NULL, 0, &lpdi->item.iImage, &uFlags);
+ pei->lpvtbl->fnRelease(pei);
+ }
+ }
+ }
+ TRACE(shell,"-- text=%s image=%x\n",lpdi->item.pszText, lpdi->item.iImage);
+ return 0;
- case NM_RCLICK:
- TRACE(shell,"NM_RCLICK %p\n",this);
- dwCursor = GetMessagePos();
- ShellView_DoContextMenu(this, LOWORD(dwCursor), HIWORD(dwCursor), FALSE);
+ case NM_CLICK:
+ TRACE(shell,"NM_CLICK %p\n",this);
+ break;
- case NM_CLICK:
- TRACE(shell,"NM_CLICK %p\n",this);
- break;
+ case LVN_ITEMCHANGING:
+ TRACE(shell,"LVN_ITEMCHANGING %p\n",this);
+ break;
- case LVN_ITEMCHANGING:
- TRACE(shell,"LVN_ITEMCHANGING %p\n",this);
- break;
+ case LVN_ITEMCHANGED:
+ TRACE(shell,"LVN_ITEMCHANGED %p\n",this);
+ break;
- case NM_CUSTOMDRAW:
- TRACE(shell,"NM_CUSTOMDRAW %p\n",this);
- break;
+ case NM_CUSTOMDRAW:
+ TRACE(shell,"NM_CUSTOMDRAW %p\n",this);
+ break;
- default:
- WARN (shell,"-- WM_NOTIFY unhandled\n");
- return 0;
- }
- return 0;
+ default:
+ WARN (shell,"-- WM_NOTIFY unhandled\n");
+ return 0;
+ }
+ return 0;
}
/**************************************************************************
@@ -875,7 +896,8 @@
LRESULT CALLBACK ShellView_WndProc(HWND32 hWnd, UINT32 uMessage, WPARAM32 wParam, LPARAM lParam)
{ LPSHELLVIEW pThis = (LPSHELLVIEW)GetWindowLong32A(hWnd, GWL_USERDATA);
LPCREATESTRUCT32A lpcs;
-
+ DWORD dwCursor;
+
FIXME(shell,"(hwnd=%x msg=%x wparm=%x lparm=%lx)\n",hWnd, uMessage, wParam, lParam);
switch (uMessage)
@@ -970,6 +992,11 @@
case WM_PARENTNOTIFY:
TRACE(shell,"WM_PARENTNOTIFY\n");
+ if ( LOWORD(wParam) == WM_RBUTTONDOWN ) /* fixme: should not be handled here*/
+ { dwCursor = GetMessagePos();
+ ShellView_DoContextMenu(pThis, LOWORD(dwCursor), HIWORD(dwCursor), FALSE);
+ return TRUE;
+ }
break;
case WM_MOUSEACTIVATE:
@@ -1033,7 +1060,7 @@
return this->ref;
}
/**************************************************************************
-* IShellView::GetWindow
+* ShellView_GetWindow
*/
static HRESULT WINAPI IShellView_GetWindow(LPSHELLVIEW this,HWND32 * phWnd)
{ TRACE(shell,"(%p) stub\n",this);
@@ -1045,9 +1072,19 @@
{ FIXME(shell,"(%p) stub\n",this);
return E_NOTIMPL;
}
+/**************************************************************************
+* IShellView_TranslateAccelerator
+*
+* FIXME:
+* use the accel functions
+*/
static HRESULT WINAPI IShellView_TranslateAccelerator(LPSHELLVIEW this,LPMSG32 lpmsg)
-{ FIXME(shell,"(%p)->(%p) stub\n",this,lpmsg);
- return E_NOTIMPL;
+{ FIXME(shell,"(%p)->(%p: hwnd=%x msg=%x lp=%lx wp=%x) stub\n",this,lpmsg, lpmsg->hwnd, lpmsg->message, lpmsg->lParam, lpmsg->wParam);
+/* switch (lpmsg->message)
+ { case WM_RBUTTONDOWN:
+ return SendMessage32A ( lpmsg->hwnd, WM_NOTIFY, );
+ }*/
+ return S_FALSE;
}
static HRESULT WINAPI IShellView_EnableModeless(LPSHELLVIEW this,BOOL32 fEnable)
{ FIXME(shell,"(%p) stub\n",this);
@@ -1151,7 +1188,7 @@
IShellView_UIActivate(this, SVUIA_DEACTIVATE);
if(this->hMenu)
{ DestroyMenu32(this->hMenu);
- }
+ }
DestroyWindow32(this->hWnd);
this->pShellBrowser->lpvtbl->fnRelease(this->pShellBrowser);
return S_OK;