move window visibility buttons to have less impact on minimum width
And as a side effect, be in a consistent location on windows/linux AND OS X
This commit is contained in:
parent
a6af411af7
commit
67c4d45aac
@ -48,6 +48,7 @@
|
|||||||
#include "audio_clock.h"
|
#include "audio_clock.h"
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "main_clock.h"
|
#include "main_clock.h"
|
||||||
|
#include "mixer_ui.h"
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "theme_manager.h"
|
#include "theme_manager.h"
|
||||||
#include "midi_tracer.h"
|
#include "midi_tracer.h"
|
||||||
@ -164,6 +165,16 @@ ARDOUR_UI::tearoff_settings (const char* name) const
|
|||||||
|
|
||||||
#define PX_SCALE(px) std::max((float)px, rintf((float)px * UIConfiguration::instance().get_ui_scale()))
|
#define PX_SCALE(px) std::max((float)px, rintf((float)px * UIConfiguration::instance().get_ui_scale()))
|
||||||
|
|
||||||
|
static
|
||||||
|
bool drag_failed (const Glib::RefPtr<Gdk::DragContext>& context, DragResult result, Tabbable* tab)
|
||||||
|
{
|
||||||
|
if (result == Gtk::DRAG_RESULT_NO_TARGET) {
|
||||||
|
tab->detach ();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::setup_transport ()
|
ARDOUR_UI::setup_transport ()
|
||||||
{
|
{
|
||||||
@ -384,6 +395,43 @@ ARDOUR_UI::setup_transport ()
|
|||||||
transport_hbox.pack_start (editor_meter_peak_display, false, false);
|
transport_hbox.pack_start (editor_meter_peak_display, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gtk::VBox* window_button_box = manage (new Gtk::VBox);
|
||||||
|
|
||||||
|
editor_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), editor));
|
||||||
|
mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer));
|
||||||
|
prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor));
|
||||||
|
|
||||||
|
/* catch context clicks so that we can show a menu on these buttons */
|
||||||
|
|
||||||
|
editor_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("editor")), false);
|
||||||
|
mixer_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("mixer")), false);
|
||||||
|
prefs_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("preferences")), false);
|
||||||
|
|
||||||
|
editor_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-editor-visibility")));
|
||||||
|
editor_visibility_button.set_name (X_("page switch button"));
|
||||||
|
mixer_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-mixer-visibility")));
|
||||||
|
mixer_visibility_button.set_name (X_("page switch button"));
|
||||||
|
prefs_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-preferences-visibility")));
|
||||||
|
prefs_visibility_button.set_name (X_("page switch button"));
|
||||||
|
|
||||||
|
Gtkmm2ext::UI::instance()->set_tip (editor_visibility_button,
|
||||||
|
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
||||||
|
"To put the window back, use the Window > %1 > Attach menu action"), editor->name()));
|
||||||
|
|
||||||
|
Gtkmm2ext::UI::instance()->set_tip (mixer_visibility_button,
|
||||||
|
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
||||||
|
"To put the window back, use the Window > %1 > Attach menu action"), mixer->name()));
|
||||||
|
|
||||||
|
Gtkmm2ext::UI::instance()->set_tip (prefs_visibility_button,
|
||||||
|
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
||||||
|
"To put the window back, use the Window > %1 > Attach menu action"), rc_option_editor->name()));
|
||||||
|
|
||||||
|
window_button_box->pack_start (editor_visibility_button, true, false);
|
||||||
|
window_button_box->pack_start (mixer_visibility_button, true, false);
|
||||||
|
window_button_box->pack_start (prefs_visibility_button, true, false);
|
||||||
|
|
||||||
|
transport_hbox.pack_end (*window_button_box, false, false);
|
||||||
|
|
||||||
/* desensitize */
|
/* desensitize */
|
||||||
|
|
||||||
set_transport_sensitivity (false);
|
set_transport_sensitivity (false);
|
||||||
@ -638,4 +686,3 @@ ARDOUR_UI::update_title ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -546,16 +546,6 @@ ARDOUR_UI::install_actions ()
|
|||||||
global_actions.register_action (midi_actions, X_("panic"), _("Panic"), sigc::mem_fun(*this, &ARDOUR_UI::midi_panic));
|
global_actions.register_action (midi_actions, X_("panic"), _("Panic"), sigc::mem_fun(*this, &ARDOUR_UI::midi_panic));
|
||||||
}
|
}
|
||||||
|
|
||||||
static
|
|
||||||
bool drag_failed (const Glib::RefPtr<Gdk::DragContext>& context, DragResult result, Tabbable* tab)
|
|
||||||
{
|
|
||||||
if (result == Gtk::DRAG_RESULT_NO_TARGET) {
|
|
||||||
tab->detach ();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::build_menu_bar ()
|
ARDOUR_UI::build_menu_bar ()
|
||||||
{
|
{
|
||||||
@ -600,43 +590,6 @@ ARDOUR_UI::build_menu_bar ()
|
|||||||
use_menubar_as_top_menubar ();
|
use_menubar_as_top_menubar ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Gtk::HBox* window_button_box = manage (new Gtk::HBox);
|
|
||||||
|
|
||||||
editor_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), editor));
|
|
||||||
mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer));
|
|
||||||
prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor));
|
|
||||||
|
|
||||||
/* catch context clicks so that we can show a menu on these buttons */
|
|
||||||
|
|
||||||
editor_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("editor")), false);
|
|
||||||
mixer_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("mixer")), false);
|
|
||||||
prefs_visibility_button.signal_button_press_event().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_visibility_button_press), X_("preferences")), false);
|
|
||||||
|
|
||||||
editor_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-editor-visibility")));
|
|
||||||
editor_visibility_button.set_name (X_("page switch button"));
|
|
||||||
mixer_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-mixer-visibility")));
|
|
||||||
mixer_visibility_button.set_name (X_("page switch button"));
|
|
||||||
prefs_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-preferences-visibility")));
|
|
||||||
prefs_visibility_button.set_name (X_("page switch button"));
|
|
||||||
|
|
||||||
Gtkmm2ext::UI::instance()->set_tip (editor_visibility_button,
|
|
||||||
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
|
||||||
"To put the window back, use the Window > %1 > Attach menu action"), editor->name()));
|
|
||||||
|
|
||||||
Gtkmm2ext::UI::instance()->set_tip (mixer_visibility_button,
|
|
||||||
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
|
||||||
"To put the window back, use the Window > %1 > Attach menu action"), mixer->name()));
|
|
||||||
|
|
||||||
Gtkmm2ext::UI::instance()->set_tip (prefs_visibility_button,
|
|
||||||
string_compose (_("Drag this tab to the desktop to show %1 in its own window\n\n"
|
|
||||||
"To put the window back, use the Window > %1 > Attach menu action"), rc_option_editor->name()));
|
|
||||||
|
|
||||||
window_button_box->pack_start (editor_visibility_button, false, false);
|
|
||||||
window_button_box->pack_start (mixer_visibility_button, false, false);
|
|
||||||
window_button_box->pack_start (prefs_visibility_button, false, false);
|
|
||||||
|
|
||||||
menu_hbox.pack_start (*window_button_box, false, false, 20);
|
|
||||||
|
|
||||||
bool wall_clock = false;
|
bool wall_clock = false;
|
||||||
bool disk_space = false;
|
bool disk_space = false;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user