diff options
-rw-r--r-- | include/tools/wintypes.hxx | 2 | ||||
-rw-r--r-- | include/vcl/svapp.hxx | 2 | ||||
-rw-r--r-- | vcl/inc/salframe.hxx | 4 | ||||
-rw-r--r-- | vcl/inc/svdata.hxx | 4 | ||||
-rw-r--r-- | vcl/source/app/svapp.cxx | 4 | ||||
-rw-r--r-- | vcl/source/app/svdata.cxx | 8 | ||||
-rw-r--r-- | vcl/source/gdi/virdev.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/brdwin.cxx | 2 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 3 | ||||
-rw-r--r-- | vcl/unx/generic/window/salframe.cxx | 2 |
10 files changed, 20 insertions, 13 deletions
diff --git a/include/tools/wintypes.hxx b/include/tools/wintypes.hxx index fcccd9a0d0fa..1bc51788a572 100644 --- a/include/tools/wintypes.hxx +++ b/include/tools/wintypes.hxx @@ -229,6 +229,8 @@ WinBits const WB_NOINITIALSELECTION = SAL_CONST_INT64(0x001000000000); WinBits const WB_HIDESELECTION = SAL_CONST_INT64(0x002000000000); // DO NOT USE: 0x008000000000, that's WB_SYSTEMCHILDWINDOW +// tdf#144624: special bit used to skip assigning icon to virtual window +WinBits const WB_NOICON = SAL_CONST_INT64(0x200000000000); enum class WindowAlign { Left, Top, Right, Bottom }; diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx index 519aad8bb27b..e7b3c3b08433 100644 --- a/include/vcl/svapp.hxx +++ b/include/vcl/svapp.hxx @@ -824,7 +824,7 @@ public: @see GetFocusWindow */ - static OutputDevice* GetDefaultDevice(); + static OutputDevice* GetDefaultDevice(bool bUseIcon = true); /** Get the first top-level window of the application. diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx index 6525ab14b1c9..ac8840b437c7 100644 --- a/vcl/inc/salframe.hxx +++ b/vcl/inc/salframe.hxx @@ -80,6 +80,8 @@ enum class SalFrameStyleFlags INTRO = 0x00000100, // partial fullscreen: fullscreen on one monitor of a multimonitor display PARTIAL_FULLSCREEN = 0x00800000, + // tdf#144624: don't set icon + NOICON = 0x01000000, // system child window inside another SalFrame SYSTEMCHILD = 0x08000000, // plugged system child window @@ -91,7 +93,7 @@ enum class SalFrameStyleFlags }; namespace o3tl { - template<> struct typed_flags<SalFrameStyleFlags> : is_typed_flags<SalFrameStyleFlags, 0x788001ff> {}; + template<> struct typed_flags<SalFrameStyleFlags> : is_typed_flags<SalFrameStyleFlags, 0x798001ff> {}; }; // Extended frame style (sal equivalent to extended WinBits) diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx index d428b5b301a0..cadc35c1c067 100644 --- a/vcl/inc/svdata.hxx +++ b/vcl/inc/svdata.hxx @@ -428,8 +428,8 @@ css::uno::Reference<css::i18n::XCharacterClassification> const& ImplGetCharClass void ImplDeInitSVData(); VCL_PLUGIN_PUBLIC basegfx::SystemDependentDataManager& ImplGetSystemDependentDataManager(); -VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultWindow(); -vcl::Window* ImplGetDefaultContextWindow(); +VCL_PLUGIN_PUBLIC vcl::Window* ImplGetDefaultWindow(bool bUseIcon = true); +vcl::Window* ImplGetDefaultContextWindow(bool bUseIcon = true); const std::locale& ImplGetResLocale(); VCL_PLUGIN_PUBLIC OUString VclResId(TranslateId sContextAndId); DockingManager* ImplGetDockingManager(); diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx index 66c030dd5501..515c97ff93ba 100644 --- a/vcl/source/app/svapp.cxx +++ b/vcl/source/app/svapp.cxx @@ -1066,9 +1066,9 @@ vcl::Window* Application::GetFocusWindow() return ImplGetSVData()->mpWinData->mpFocusWin; } -OutputDevice* Application::GetDefaultDevice() +OutputDevice* Application::GetDefaultDevice(bool bUseIcon) { - return ImplGetDefaultWindow()->GetOutDev(); + return ImplGetDefaultWindow(bUseIcon)->GetOutDev(); } vcl::Window* Application::GetFirstTopLevelWindow() diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx index 61a766b17e53..c8b0c150297a 100644 --- a/vcl/source/app/svdata.cxx +++ b/vcl/source/app/svdata.cxx @@ -206,17 +206,17 @@ basegfx::SystemDependentDataManager& ImplGetSystemDependentDataManager() } /// Returns either the application window, or the default GL context window -vcl::Window* ImplGetDefaultWindow() +vcl::Window* ImplGetDefaultWindow(bool bUseIcon) { ImplSVData* pSVData = ImplGetSVData(); if (pSVData->maFrameData.mpAppWin) return pSVData->maFrameData.mpAppWin; else - return ImplGetDefaultContextWindow(); + return ImplGetDefaultContextWindow(bUseIcon); } /// returns the default window created to hold the persistent VCL GL context. -vcl::Window *ImplGetDefaultContextWindow() +vcl::Window *ImplGetDefaultContextWindow(bool bUseIcon) { ImplSVData* pSVData = ImplGetSVData(); @@ -231,7 +231,7 @@ vcl::Window *ImplGetDefaultContextWindow() { SAL_INFO( "vcl", "ImplGetDefaultWindow(): No AppWindow" ); - pSVData->mpDefaultWin = VclPtr<WorkWindow>::Create( nullptr, WB_DEFAULTWIN ); + pSVData->mpDefaultWin = VclPtr<WorkWindow>::Create( nullptr, bUseIcon ? WB_DEFAULTWIN : WB_DEFAULTWIN | WB_NOICON ); pSVData->mpDefaultWin->SetText( "VCL ImplGetDefaultWindow" ); } catch (const css::uno::Exception&) diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx index 77f364aded4d..c539f3d3dc2c 100644 --- a/vcl/source/gdi/virdev.cxx +++ b/vcl/source/gdi/virdev.cxx @@ -205,7 +205,7 @@ VirtualDevice::VirtualDevice(const OutputDevice* pCompDev, DeviceFormat eFormat, << ", " << static_cast<int>(eAlphaFormat) << ", " << static_cast<int>(eOutDevType) << " )" ); - ImplInitVirDev(pCompDev ? pCompDev : Application::GetDefaultDevice(), 0, 0); + ImplInitVirDev(pCompDev ? pCompDev : Application::GetDefaultDevice(false), 0, 0); } VirtualDevice::VirtualDevice(const SystemGraphicsData& rData, const Size &rSize, diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx index 95d508ce3597..7cd7bb4eaaf1 100644 --- a/vcl/source/window/brdwin.cxx +++ b/vcl/source/window/brdwin.cxx @@ -1499,7 +1499,7 @@ void ImplBorderWindow::ImplInit( vcl::Window* pParent, { // remove all unwanted WindowBits WinBits nOrgStyle = nStyle; - WinBits nTestStyle = (WB_MOVEABLE | WB_SIZEABLE | WB_CLOSEABLE | WB_STANDALONE | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_SYSTEMFLOATWIN | WB_INTROWIN | WB_DEFAULTWIN | WB_TOOLTIPWIN | WB_NOSHADOW | WB_OWNERDRAWDECORATION | WB_SYSTEMCHILDWINDOW | WB_POPUP); + WinBits nTestStyle = (WB_MOVEABLE | WB_SIZEABLE | WB_CLOSEABLE | WB_STANDALONE | WB_DIALOGCONTROL | WB_NODIALOGCONTROL | WB_SYSTEMFLOATWIN | WB_INTROWIN | WB_DEFAULTWIN | WB_TOOLTIPWIN | WB_NOSHADOW | WB_OWNERDRAWDECORATION | WB_SYSTEMCHILDWINDOW | WB_POPUP | WB_NOICON); if ( nTypeStyle & BorderWindowStyle::App ) nTestStyle |= WB_APP; nStyle &= nTestStyle; diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 3f4f76479483..e6ed7b3cf8b2 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -1032,6 +1032,9 @@ void Window::ImplInit( vcl::Window* pParent, WinBits nStyle, SystemParentData* p break; } + if( nStyle & WB_NOICON ) + nFrameStyle |= SalFrameStyleFlags::NOICON; + SalFrame* pParentFrame = nullptr; if ( pParent ) pParentFrame = pParent->mpWindowImpl->mpFrame; diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx index d08bd9dbe2c3..03b7f1bc47a2 100644 --- a/vcl/unx/generic/window/salframe.cxx +++ b/vcl/unx/generic/window/salframe.cxx @@ -561,7 +561,7 @@ void X11SalFrame::Init( SalFrameStyleFlags nSalFrameStyle, SalX11Screen nXScreen if( IsOverrideRedirect() ) Attributes.override_redirect = True; // default icon - if( !(nStyle_ & SalFrameStyleFlags::INTRO) ) + if( !(nStyle_ & SalFrameStyleFlags::INTRO) && !(nStyle_ & SalFrameStyleFlags::NOICON)) { bool bOk=false; try |