globally remove all trailing whitespace from ardour code base.
[ardour.git] / gtk2_ardour / splash.cc
index ee0566a9100f6d94653456316830ed87806fafb9..2b28ff4953d6d262373db4e5566e6aaf55f07ebe 100644 (file)
@@ -48,7 +48,7 @@ Splash::Splash ()
        
        std::string splash_file;
 
        
        std::string splash_file;
 
-       if (!find_file_in_search_path (ardour_data_search_path(), "splash.png", splash_file)) {
+       if (!find_file (ardour_data_search_path(), "splash.png", splash_file)) {
                 cerr << "Cannot find splash screen image file\n";
                throw failed_constructor();
        }
                 cerr << "Cannot find splash screen image file\n";
                throw failed_constructor();
        }
@@ -100,14 +100,18 @@ Splash::~Splash ()
 void
 Splash::pop_back_for (Gtk::Window& win)
 {
 void
 Splash::pop_back_for (Gtk::Window& win)
 {
-#ifdef __APPLE__
+#if defined  __APPLE__ || defined PLATFORM_WINDOWS
         /* April 2013: window layering on OS X is a bit different to X Window. at present,
            the "restack()" functionality in GDK will only operate on windows in the same
            "level" (e.g. two normal top level windows, or two utility windows) and will not
         /* April 2013: window layering on OS X is a bit different to X Window. at present,
            the "restack()" functionality in GDK will only operate on windows in the same
            "level" (e.g. two normal top level windows, or two utility windows) and will not
-           work across them. The splashscreen is on its own "StatusWindowLevel" so restacking 
+           work across them. The splashscreen is on its own "StatusWindowLevel" so restacking
            is not going to work.
 
            So for OS X, we just hide ourselves.
            is not going to work.
 
            So for OS X, we just hide ourselves.
+
+                                        Oct 2014: The Windows situation is similar, although it should be possible
+                                        to play tricks with gdk's set_type_hint() or directly hack things using
+                                        SetWindowLong() and UpdateLayeredWindow()
         */
         (void) win;
         hide();
         */
         (void) win;
         hide();
@@ -121,12 +125,10 @@ void
 Splash::pop_front ()
 {
 
 Splash::pop_front ()
 {
 
-#ifdef __APPLE__
+#if defined  __APPLE__ || defined PLATFORM_WINDOWS
         if (get_window()) {
                 show ();
         }
         if (get_window()) {
                 show ();
         }
-#else
-       set_keep_above (true);
 #endif
 }
 
 #endif
 }
 
@@ -142,11 +144,11 @@ bool
 Splash::on_button_release_event (GdkEventButton* ev)
 {
        RefPtr<Gdk::Window> window = get_window();
 Splash::on_button_release_event (GdkEventButton* ev)
 {
        RefPtr<Gdk::Window> window = get_window();
-        
+
         if (!window || ev->window != window->gobj()) {
                 return false;
         }
         if (!window || ev->window != window->gobj()) {
                 return false;
         }
-        
+
        hide ();
        return true;
 }
        hide ();
        return true;
 }
@@ -172,9 +174,9 @@ Splash::expose (GdkEventExpose* ev)
 
        window->draw_layout (white, 10, pixbuf->get_height() - 30, layout);
 
 
        window->draw_layout (white, 10, pixbuf->get_height() - 30, layout);
 
-       /* this must execute AFTER the GDK idle update mechanism 
+       /* this must execute AFTER the GDK idle update mechanism
         */
         */
-       
+
        if (expose_is_the_one) {
                Glib::signal_idle().connect (sigc::mem_fun (this, &Splash::idle_after_expose),
                                             GDK_PRIORITY_REDRAW+2);
        if (expose_is_the_one) {
                Glib::signal_idle().connect (sigc::mem_fun (this, &Splash::idle_after_expose),
                                             GDK_PRIORITY_REDRAW+2);
@@ -204,7 +206,7 @@ Splash::display ()
        if (!was_mapped) {
                expose_done = false;
                expose_is_the_one = false;
        if (!was_mapped) {
                expose_done = false;
                expose_is_the_one = false;
-       } 
+       }
 
        pop_front ();
        present ();
 
        pop_front ();
        present ();
@@ -221,9 +223,11 @@ void
 Splash::message (const string& msg)
 {
        string str ("<b>");
 Splash::message (const string& msg)
 {
        string str ("<b>");
-       str += Glib::Markup::escape_text (msg);
+       str += Glib::Markup::escape_text (msg).c_str();
        str += "</b>";
 
        str += "</b>";
 
+        show ();
+
        layout->set_markup (str);
        Glib::RefPtr<Gdk::Window> win = darea.get_window();
        
        layout->set_markup (str);
        Glib::RefPtr<Gdk::Window> win = darea.get_window();
        
@@ -235,11 +239,6 @@ Splash::message (const string& msg)
                } else {
                        darea.queue_draw ();
                }
                } else {
                        darea.queue_draw ();
                }
-
-                while (!expose_done) {
-                        if(gtk_main_iteration ()) return; // quit was called
-                }
-               gdk_display_flush (gdk_display_get_default());
        }
 }
 
        }
 }