diff libinterp/corefcn/graphics.cc @ 18576:cd83730e5e38

maint: Periodic merge of gui-release to default.
author John W. Eaton <jwe@octave.org>
date Thu, 20 Mar 2014 12:31:19 -0400
parents 5264b0ec9f97 ca1648b2e673
children 2deed6538c72
line wrap: on
line diff
--- a/libinterp/corefcn/graphics.cc	Tue Mar 18 11:06:13 2014 +0100
+++ b/libinterp/corefcn/graphics.cc	Thu Mar 20 12:31:19 2014 -0400
@@ -9732,18 +9732,6 @@
 
 gtk_manager *gtk_manager::instance = 0;
 
-gtk_manager::gtk_manager (void)
-  : dtk (), available_toolkits (), loaded_toolkits ()
-{
-#if defined (HAVE_QT)
-  dtk = display_info::display_available () ? "qt" : "gnuplot";
-#elif defined (HAVE_FLTK)
-  dtk = display_info::display_available () ? "fltk" : "gnuplot";
-#else
-  dtk = "gnuplot";
-#endif
-}
-
 void
 gtk_manager::create_instance (void)
 {
@@ -9788,6 +9776,45 @@
   return retval;
 }
 
+void 
+gtk_manager::do_register_toolkit (const std::string& name)
+{
+  if (dtk.empty () || name == "qt"
+      || (name == "fltk"
+          && available_toolkits.find ("qt") == available_toolkits.end ()))
+    dtk = name;
+
+  available_toolkits.insert (name);
+}
+
+void 
+gtk_manager::do_unregister_toolkit (const std::string& name)
+{
+  available_toolkits.erase (name);
+
+  if (dtk == name)
+    {
+      if (available_toolkits.empty ())
+        dtk.clear ();
+      else
+        {
+          const_available_toolkits_iterator pa = available_toolkits.begin ();
+
+          dtk = *pa++;
+
+          while (pa != available_toolkits.end ())
+            {
+              std::string name = *pa++;
+
+              if (name == "qt"
+                  || (name == "fltk"
+                      && available_toolkits.find ("qt") == available_toolkits.end ()))
+                dtk = name;
+            }
+        }
+    }
+}
+
 DEFUN (available_graphics_toolkits, , ,
        "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {} available_graphics_toolkits ()\n\