Prepare session-metadata export to external command
[ardour.git] / libs / gtkmm2ext / persistent_tooltip.cc
index 88be6ef100e536a98e117cd03cdc7d0bbbe98501..d45ef01408d2be966983920f461521b70ee0be02 100644 (file)
 
 #include <gtkmm/window.h>
 #include <gtkmm/label.h>
+#include <gtkmm/settings.h>
 #include "gtkmm2ext/persistent_tooltip.h"
 
 #include "pbd/stacktrace.h"
 
-#include "i18n.h"
+#include "pbd/i18n.h"
 
 using namespace std;
 using namespace Gtk;
 using namespace Gtkmm2ext;
 
+bool PersistentTooltip::_tooltips_enabled = true;
+unsigned int PersistentTooltip::_tooltip_timeout = 500;
+
 /** @param target The widget to provide the tooltip for */
 PersistentTooltip::PersistentTooltip (Gtk::Widget* target, bool  draggable, int margin_y)
        : _target (target)
@@ -43,6 +47,7 @@ PersistentTooltip::PersistentTooltip (Gtk::Widget* target, bool  draggable, int
        target->signal_leave_notify_event().connect (sigc::mem_fun (*this, &PersistentTooltip::leave), false);
        target->signal_button_press_event().connect (sigc::mem_fun (*this, &PersistentTooltip::press), false);
        target->signal_button_release_event().connect (sigc::mem_fun (*this, &PersistentTooltip::release), false);
+       _tooltip_timeout = Gtk::Settings::get_default()->property_gtk_tooltip_timeout ();
 }
 
 PersistentTooltip::~PersistentTooltip ()
@@ -56,7 +61,7 @@ PersistentTooltip::enter (GdkEventCrossing *)
        if (_timeout.connected()) {
                leave(NULL);
        }
-       _timeout = Glib::signal_timeout().connect (sigc::mem_fun (*this, &PersistentTooltip::timeout), 500);
+       _timeout = Glib::signal_timeout().connect (sigc::mem_fun (*this, &PersistentTooltip::timeout), _tooltip_timeout);
        return false;
 }
 
@@ -115,7 +120,7 @@ PersistentTooltip::hide ()
 void
 PersistentTooltip::show ()
 {
-       if (_tip.empty()) {
+       if (_tip.empty() || !_tooltips_enabled) {
                return;
        }
 
@@ -138,7 +143,7 @@ PersistentTooltip::show ()
                        _window->set_transient_for (*tlw);
                }
        }
-       
+
        set_tip (_tip);
 
        if (!_window->is_visible ()) {
@@ -146,7 +151,7 @@ PersistentTooltip::show ()
                int sw = gdk_screen_width ();
 
                _target->get_window()->get_origin (rx, ry);
-               
+
                /* the window needs to be realized first
                 * for _window->get_width() to be correct.
                 */