diff options
-rw-r--r-- | fpicker/source/odma/ODMAFilePicker.cxx | 17 | ||||
-rw-r--r-- | ucb/source/ucp/odma/odma_provider.cxx | 17 |
2 files changed, 32 insertions, 2 deletions
diff --git a/fpicker/source/odma/ODMAFilePicker.cxx b/fpicker/source/odma/ODMAFilePicker.cxx index 09eb01b7372d..2fe531015bd8 100644 --- a/fpicker/source/odma/ODMAFilePicker.cxx +++ b/fpicker/source/odma/ODMAFilePicker.cxx @@ -96,6 +96,21 @@ void SAL_CALL ODMAFilePicker::setTitle( const ::rtl::OUString& aTitle ) xExecutableDialog->setTitle( aTitle); } +inline bool is_current_process_window(HWND hwnd) +{ + DWORD pid; + GetWindowThreadProcessId(hwnd, &pid); + return (pid == GetCurrentProcessId()); +} + +HWND choose_parent_window() +{ + HWND hwnd_parent = GetForegroundWindow(); + if (!is_current_process_window(hwnd_parent)) + hwnd_parent = GetDesktopWindow(); + return hwnd_parent; +} + sal_Int16 SAL_CALL ODMAFilePicker::execute( ) throw (RuntimeException) { @@ -104,7 +119,7 @@ sal_Int16 SAL_CALL ODMAFilePicker::execute( ) WORD count = 0; DWORD flags; - status = NODMRegisterApp( &handle, ODM_API_VERSION, "sodma", (DWORD) GetActiveWindow( ), NULL ); + status = NODMRegisterApp( &handle, ODM_API_VERSION, "sodma", (DWORD) choose_parent_window( ), NULL ); if (status == ODM_SUCCESS) { if (m_nDialogKind == OPEN) diff --git a/ucb/source/ucp/odma/odma_provider.cxx b/ucb/source/ucp/odma/odma_provider.cxx index 5415afb9ec9c..5c4e67884d11 100644 --- a/ucb/source/ucp/odma/odma_provider.cxx +++ b/ucb/source/ucp/odma/odma_provider.cxx @@ -79,11 +79,26 @@ ContentProvider::~ContentProvider() } } // ----------------------------------------------------------------------------- +inline bool is_current_process_window(HWND hwnd) +{ + DWORD pid; + GetWindowThreadProcessId(hwnd, &pid); + return (pid == GetCurrentProcessId()); +} + +HWND choose_parent_window() +{ + HWND hwnd_parent = GetForegroundWindow(); + if (!is_current_process_window(hwnd_parent)) + hwnd_parent = GetDesktopWindow(); + return hwnd_parent; +} + ODMHANDLE ContentProvider::getHandle() { if(!m_aOdmHandle) { - ODMSTATUS odm = NODMRegisterApp(&m_aOdmHandle,ODM_API_VERSION,ODMA_ODMA_REGNAME,NULL,NULL); + ODMSTATUS odm = NODMRegisterApp(&m_aOdmHandle,ODM_API_VERSION,ODMA_ODMA_REGNAME,(DWORD) choose_parent_window( ),NULL); switch(odm) { case ODM_SUCCESS: |