diff --git a/modules/juce_audio_plugin_client/juce_audio_plugin_client_Unity.cpp b/modules/juce_audio_plugin_client/juce_audio_plugin_client_Unity.cpp index bc18cf33c8..4579aeffb1 100644 --- a/modules/juce_audio_plugin_client/juce_audio_plugin_client_Unity.cpp +++ b/modules/juce_audio_plugin_client/juce_audio_plugin_client_Unity.cpp @@ -273,6 +273,7 @@ private: //============================================================================== void setMinimised (bool) override {} bool isMinimised() const override { return false; } + bool isShowing() const override { return true; } void setFullScreen (bool) override {} bool isFullScreen() const override { return false; } bool setAlwaysOnTop (bool) override { return false; } diff --git a/modules/juce_gui_basics/components/juce_Component.cpp b/modules/juce_gui_basics/components/juce_Component.cpp index 1db1947129..f0e7723bc4 100644 --- a/modules/juce_gui_basics/components/juce_Component.cpp +++ b/modules/juce_gui_basics/components/juce_Component.cpp @@ -343,7 +343,7 @@ bool Component::isShowing() const return parentComponent->isShowing(); if (auto* peer = getPeer()) - return ! peer->isMinimised(); + return peer->isShowing(); return false; } diff --git a/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm b/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm index ae12c1d915..ed9cd36b1b 100644 --- a/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm +++ b/modules/juce_gui_basics/native/juce_NSViewComponentPeer_mac.mm @@ -465,6 +465,11 @@ public: return [window isMiniaturized]; } + bool isShowing() const override + { + return [window isVisible] && ! isMinimised(); + } + NSWindowCollectionBehavior getCollectionBehavior (bool forceFullScreen) const { if (forceFullScreen) diff --git a/modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm b/modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm index caa9a9bb69..1e0b0b073e 100644 --- a/modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm +++ b/modules/juce_gui_basics/native/juce_UIViewComponentPeer_ios.mm @@ -408,6 +408,7 @@ public: void setAlpha (float newAlpha) override; void setMinimised (bool) override {} bool isMinimised() const override { return false; } + bool isShowing() const override { return true; } void setFullScreen (bool shouldBeFullScreen) override; bool isFullScreen() const override { return fullScreen; } bool contains (Point localPos, bool trueIfInAChildWindow) const override; diff --git a/modules/juce_gui_basics/native/juce_Windowing_android.cpp b/modules/juce_gui_basics/native/juce_Windowing_android.cpp index 5deb88b15c..2da8fa6f36 100644 --- a/modules/juce_gui_basics/native/juce_Windowing_android.cpp +++ b/modules/juce_gui_basics/native/juce_Windowing_android.cpp @@ -1462,6 +1462,11 @@ public: return false; } + bool isShowing() const override + { + return true; + } + void setFullScreen (bool shouldBeFullScreen) override { if (shouldNavBarsBeHidden (shouldBeFullScreen)) diff --git a/modules/juce_gui_basics/native/juce_Windowing_linux.cpp b/modules/juce_gui_basics/native/juce_Windowing_linux.cpp index 51d0e34e14..599ac5e811 100644 --- a/modules/juce_gui_basics/native/juce_Windowing_linux.cpp +++ b/modules/juce_gui_basics/native/juce_Windowing_linux.cpp @@ -204,6 +204,11 @@ public: return XWindowSystem::getInstance()->isMinimised (windowH); } + bool isShowing() const override + { + return XWindowSystem::getInstance()->isMinimised (windowH); + } + void setFullScreen (bool shouldBeFullScreen) override { auto r = lastNonFullscreenBounds; // (get a copy of this before de-minimising) diff --git a/modules/juce_gui_basics/native/juce_Windowing_windows.cpp b/modules/juce_gui_basics/native/juce_Windowing_windows.cpp index 57eefd8a1f..def48bfb7d 100644 --- a/modules/juce_gui_basics/native/juce_Windowing_windows.cpp +++ b/modules/juce_gui_basics/native/juce_Windowing_windows.cpp @@ -1720,6 +1720,11 @@ public: return wp.showCmd == SW_SHOWMINIMIZED; } + bool isShowing() const override + { + return IsWindowVisible (hwnd) && ! isMinimised(); + } + void setFullScreen (bool shouldBeFullScreen) override { const ScopedValueSetter scope (shouldIgnoreModalDismiss, true); diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.h b/modules/juce_gui_basics/windows/juce_ComponentPeer.h index 2b4732a683..b39b604a96 100644 --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.h +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.h @@ -244,6 +244,9 @@ public: /** True if the window is currently minimised. */ virtual bool isMinimised() const = 0; + /** True if the window is being displayed on-screen. */ + virtual bool isShowing() const = 0; + /** Enable/disable fullscreen mode for the window. */ virtual void setFullScreen (bool shouldBeFullScreen) = 0;