diff --git a/modules/juce_gui_extra/misc/juce_SplashScreen.cpp b/modules/juce_gui_extra/misc/juce_SplashScreen.cpp index 0375c37a19..2188c6acd7 100644 --- a/modules/juce_gui_extra/misc/juce_SplashScreen.cpp +++ b/modules/juce_gui_extra/misc/juce_SplashScreen.cpp @@ -31,25 +31,40 @@ SplashScreen::SplashScreen (const String& title, const Image& image, bool useDro jassert (backgroundImage.isValid()); setOpaque (! backgroundImage.hasAlphaChannel()); - makeVisible (image.getWidth(), image.getHeight(), useDropShadow); + + #if JUCE_IOS || JUCE_ANDROID + const bool useFullScreen = true; + #else + const bool useFullScreen = false; + #endif + + makeVisible (image.getWidth(), image.getHeight(), useDropShadow, useFullScreen); } SplashScreen::SplashScreen (const String& title, int width, int height, bool useDropShadow) : Component (title), clickCountToDelete (0) { - makeVisible (width, height, useDropShadow); + makeVisible (width, height, useDropShadow, false); } -void SplashScreen::makeVisible (int w, int h, bool useDropShadow) +void SplashScreen::makeVisible (int w, int h, bool useDropShadow, bool fullscreen) { clickCountToDelete = Desktop::getInstance().getMouseButtonClickCounter(); creationTime = Time::getCurrentTime(); + const Rectangle screenSize = Desktop::getInstance().getDisplays().getMainDisplay().userArea; + const int width = (fullscreen ? screenSize.getWidth() : w); + const int height = (fullscreen ? screenSize.getHeight() : h); + setAlwaysOnTop (true); setVisible (true); - centreWithSize (w, h); + centreWithSize (width, height); addToDesktop (useDropShadow ? ComponentPeer::windowHasDropShadow : 0); + + if (fullscreen) + getPeer()->setFullScreen (true); + toFront (false); } @@ -69,10 +84,7 @@ void SplashScreen::deleteAfterDelay (RelativeTime timeout, bool removeOnMouseCli void SplashScreen::paint (Graphics& g) { g.setOpacity (1.0f); - - g.drawImage (backgroundImage, - 0, 0, getWidth(), getHeight(), - 0, 0, backgroundImage.getWidth(), backgroundImage.getHeight()); + g.drawImage (backgroundImage, getLocalBounds().toFloat(), RectanglePlacement (RectanglePlacement::fillDestination)); } void SplashScreen::timerCallback() diff --git a/modules/juce_gui_extra/misc/juce_SplashScreen.h b/modules/juce_gui_extra/misc/juce_SplashScreen.h index ae2b77bf84..d65d136ab0 100644 --- a/modules/juce_gui_extra/misc/juce_SplashScreen.h +++ b/modules/juce_gui_extra/misc/juce_SplashScreen.h @@ -146,7 +146,7 @@ private: int clickCountToDelete; void timerCallback() override; - void makeVisible (int w, int h, bool shadow); + void makeVisible (int w, int h, bool shadow, bool fullscreen); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SplashScreen) };