Browse Source

Add support for SHAddToRecentDocs on windows with app model id

9.0
Mark Roszko 4 months ago
parent
commit
ce1f3b8819
  1. 3
      kicad/kicad_manager_frame.cpp
  2. 2
      libs/kiplatform/include/kiplatform/environment.h
  3. 5
      libs/kiplatform/os/apple/environment.mm
  4. 2
      libs/kiplatform/os/unix/app.cpp
  5. 5
      libs/kiplatform/os/unix/environment.cpp
  6. 21
      libs/kiplatform/os/windows/environment.cpp

3
kicad/kicad_manager_frame.cpp

@ -43,6 +43,7 @@
#include <policy_keys.h>
#include <gestfich.h>
#include <kiplatform/app.h>
#include <kiplatform/environment.h>
#include <kiplatform/policy.h>
#include <build_version.h>
#include <kiway.h>
@ -852,6 +853,8 @@ void KICAD_MANAGER_FRAME::LoadProject( const wxFileName& aProjectFileName )
KIPLATFORM::APP::RegisterApplicationRestart( aProjectFileName.GetFullPath() );
m_openSavedWindows = true;
KIPLATFORM::ENV::AddToRecentDocs( aProjectFileName.GetFullPath() );
}

2
libs/kiplatform/include/kiplatform/environment.h

@ -130,5 +130,7 @@ namespace KIPLATFORM
* @returns the command line string used to launch the process
*/
wxString GetCommandLineStr();
void AddToRecentDocs( const wxString &aPath );
}
}

5
libs/kiplatform/os/apple/environment.mm

@ -135,4 +135,9 @@ void KIPLATFORM::ENV::SetAppDetailsForWindow( wxWindow* aWindow, const wxString&
wxString KIPLATFORM::ENV::GetCommandLineStr()
{
return wxEmptyString;
}
void KIPLATFORM::ENV::AddToRecentDocs( const wxString& aPath )
{
}

2
libs/kiplatform/os/unix/app.cpp

@ -99,4 +99,4 @@ void KIPLATFORM::APP::ForceTimerMessagesToBeCreatedIfNecessary()
void KIPLATFORM::APP::AddDynamicLibrarySearchPath( const wxString& aPath )
{
}
}

5
libs/kiplatform/os/unix/environment.cpp

@ -144,4 +144,9 @@ void KIPLATFORM::ENV::SetAppDetailsForWindow( wxWindow* aWindow, const wxString&
wxString KIPLATFORM::ENV::GetCommandLineStr()
{
return wxEmptyString;
}
void KIPLATFORM::ENV::AddToRecentDocs( const wxString& aPath )
{
}

21
libs/kiplatform/os/windows/environment.cpp

@ -40,6 +40,7 @@
#endif
#include <winhttp.h>
#include <shlobj_core.h>
#include <Softpub.h>
#include <wincrypt.h>
#include <wintrust.h>
@ -481,4 +482,24 @@ void KIPLATFORM::ENV::SetAppDetailsForWindow( wxWindow* aWindow, const wxString&
wxString KIPLATFORM::ENV::GetCommandLineStr()
{
return ::GetCommandLine();
}
void KIPLATFORM::ENV::AddToRecentDocs( const wxString& aPath )
{
IShellItem* psi = nullptr;
HRESULT hr = SHCreateItemFromParsingName( aPath.wc_str(), NULL, IID_PPV_ARGS( &psi ) );
if( SUCCEEDED( hr ) )
{
wxString appID = GetAppUserModelId();
SHARDAPPIDINFO info;
info.psi = psi;
info.pszAppID = appID.wc_str();
::SHAddToRecentDocs( SHARD_APPIDINFO, &info );
psi->Release();
}
::SHAddToRecentDocs( SHARD_PATHW, aPath.wc_str() );
}
Loading…
Cancel
Save