Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in 0.9.1, 0.9.1.1, and 0.9.2

stable shellext: move CShellExtCMenu::Initialize implementation into ContextMenu.cpp

Changeset af2e007ab035

Parent 6fde023ea22c

by Adrian Buehlmann

Changes to 2 files · Browse files at af2e007ab035 Showing diff from parent 6fde023ea22c Diff from another changeset...

 
748
749
750
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
@@ -748,3 +748,65 @@
  LaunchCommand(hgcmd, cwd);   InitStatus::check();  } + + +STDMETHODIMP CShellExtCMenu::Initialize( + LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hRegKey) +{ + TCHAR name[MAX_PATH+1]; + + TDEBUG_TRACE("CShellExtCMenu::Initialize"); + TDEBUG_TRACE(" pIDFolder: " << pIDFolder); + TDEBUG_TRACE(" pDataObj: " << pDataObj); + + myFolder.clear(); + myFiles.clear(); + + if (pDataObj) + { + FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; + STGMEDIUM stg = { TYMED_HGLOBAL }; + if (SUCCEEDED(pDataObj->GetData(&fmt, &stg)) && stg.hGlobal) + { + HDROP hDrop = (HDROP) GlobalLock(stg.hGlobal); + + if (hDrop) + { + UINT uNumFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); + TDEBUG_TRACE(" hDrop uNumFiles = " << uNumFiles); + for (UINT i = 0; i < uNumFiles; ++i) { + if (DragQueryFile(hDrop, i, name, MAX_PATH) > 0) + { + TDEBUG_TRACE(" DragQueryFile [" << i << "] = " << name); + myFiles.push_back(name); + } + } + } + else + { + TDEBUG_TRACE(" hDrop is NULL "); + } + + GlobalUnlock(stg.hGlobal); + if (stg.pUnkForRelease) + { + IUnknown* relInterface = (IUnknown*) stg.pUnkForRelease; + relInterface->Release(); + } + } + else + { + TDEBUG_TRACE(" pDataObj->GetData failed"); + } + } + + // if a directory background + if (pIDFolder) + { + SHGetPathFromIDList(pIDFolder, name); + TDEBUG_TRACE(" Folder " << name); + myFolder = name; + } + + return NOERROR; +}
 
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
 
263
264
265
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
@@ -263,65 +263,3 @@
  delete this;   return 0L;  } - - -STDMETHODIMP CShellExtCMenu::Initialize( - LPCITEMIDLIST pIDFolder, LPDATAOBJECT pDataObj, HKEY hRegKey) -{ - TCHAR name[MAX_PATH+1]; - - TDEBUG_TRACE("CShellExtCMenu::Initialize"); - TDEBUG_TRACE(" pIDFolder: " << pIDFolder); - TDEBUG_TRACE(" pDataObj: " << pDataObj); - - myFolder.clear(); - myFiles.clear(); - - if (pDataObj) - { - FORMATETC fmt = { CF_HDROP, NULL, DVASPECT_CONTENT, -1, TYMED_HGLOBAL }; - STGMEDIUM stg = { TYMED_HGLOBAL }; - if (SUCCEEDED(pDataObj->GetData(&fmt, &stg)) && stg.hGlobal) - { - HDROP hDrop = (HDROP) GlobalLock(stg.hGlobal); - - if (hDrop) - { - UINT uNumFiles = DragQueryFile(hDrop, 0xFFFFFFFF, NULL, 0); - TDEBUG_TRACE(" hDrop uNumFiles = " << uNumFiles); - for (UINT i = 0; i < uNumFiles; ++i) { - if (DragQueryFile(hDrop, i, name, MAX_PATH) > 0) - { - TDEBUG_TRACE(" DragQueryFile [" << i << "] = " << name); - myFiles.push_back(name); - } - } - } - else - { - TDEBUG_TRACE(" hDrop is NULL "); - } - - GlobalUnlock(stg.hGlobal); - if (stg.pUnkForRelease) - { - IUnknown* relInterface = (IUnknown*) stg.pUnkForRelease; - relInterface->Release(); - } - } - else - { - TDEBUG_TRACE(" pDataObj->GetData failed"); - } - } - - // if a directory background - if (pIDFolder) - { - SHGetPathFromIDList(pIDFolder, name); - TDEBUG_TRACE(" Folder " << name); - myFolder = name; - } - - return NOERROR; -}