prevent dragging the last tab from the notebook
This commit is contained in:
parent
8a499cf57c
commit
336d321a1b
|
@ -825,6 +825,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
|
||||||
void grab_focus_after_dialog ();
|
void grab_focus_after_dialog ();
|
||||||
|
|
||||||
void tabs_switch (GtkNotebookPage*, guint page_number);
|
void tabs_switch (GtkNotebookPage*, guint page_number);
|
||||||
|
void tabs_page_added (Gtk::Widget*, guint);
|
||||||
|
void tabs_page_removed (Gtk::Widget*, guint);
|
||||||
ArdourButton editor_visibility_button;
|
ArdourButton editor_visibility_button;
|
||||||
ArdourButton mixer_visibility_button;
|
ArdourButton mixer_visibility_button;
|
||||||
ArdourButton prefs_visibility_button;
|
ArdourButton prefs_visibility_button;
|
||||||
|
|
|
@ -234,6 +234,8 @@ ARDOUR_UI::setup_windows ()
|
||||||
keyboard->setup_keybindings ();
|
keyboard->setup_keybindings ();
|
||||||
|
|
||||||
_tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch));
|
_tabs.signal_switch_page().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_switch));
|
||||||
|
_tabs.signal_page_added().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_added));
|
||||||
|
_tabs.signal_page_removed().connect (sigc::mem_fun (*this, &ARDOUR_UI::tabs_page_removed));
|
||||||
|
|
||||||
rc_option_editor = new RCOptionEditor;
|
rc_option_editor = new RCOptionEditor;
|
||||||
rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
rc_option_editor->StateChange.connect (sigc::mem_fun (*this, &ARDOUR_UI::tabbable_state_change));
|
||||||
|
|
|
@ -32,8 +32,12 @@
|
||||||
#include "ardour/control_protocol_manager.h"
|
#include "ardour/control_protocol_manager.h"
|
||||||
#include "ardour/profile.h"
|
#include "ardour/profile.h"
|
||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
|
|
||||||
#include "control_protocol/control_protocol.h"
|
#include "control_protocol/control_protocol.h"
|
||||||
|
|
||||||
|
#include "gtkmm2ext/keyboard.h"
|
||||||
|
#include "gtkmm2ext/utils.h"
|
||||||
|
|
||||||
#include "actions.h"
|
#include "actions.h"
|
||||||
#include "add_route_dialog.h"
|
#include "add_route_dialog.h"
|
||||||
#include "add_video_dialog.h"
|
#include "add_video_dialog.h"
|
||||||
|
@ -62,8 +66,6 @@
|
||||||
#include "time_info_box.h"
|
#include "time_info_box.h"
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
|
|
||||||
#include <gtkmm2ext/keyboard.h>
|
|
||||||
|
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
@ -364,6 +366,43 @@ ARDOUR_UI::detach_tabbable (Tabbable* t)
|
||||||
t->detach ();
|
t->detach ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::tabs_page_added (Widget*,guint)
|
||||||
|
{
|
||||||
|
if (_tabs.get_n_pages() > 1) {
|
||||||
|
|
||||||
|
std::vector<TargetEntry> drag_target_entries;
|
||||||
|
drag_target_entries.push_back (TargetEntry ("tabbable"));
|
||||||
|
|
||||||
|
editor_visibility_button.drag_source_set (drag_target_entries);
|
||||||
|
mixer_visibility_button.drag_source_set (drag_target_entries);
|
||||||
|
prefs_visibility_button.drag_source_set (drag_target_entries);
|
||||||
|
|
||||||
|
editor_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (editor->name(),
|
||||||
|
Pango::FontDescription ("Sans 24"),
|
||||||
|
40, 20,
|
||||||
|
Gdk::Color ("red")));
|
||||||
|
mixer_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (mixer->name(),
|
||||||
|
Pango::FontDescription ("Sans 24"),
|
||||||
|
40, 20,
|
||||||
|
Gdk::Color ("red")));
|
||||||
|
prefs_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (rc_option_editor->name(),
|
||||||
|
Pango::FontDescription ("Sans 24"),
|
||||||
|
40, 20,
|
||||||
|
Gdk::Color ("red")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ARDOUR_UI::tabs_page_removed (Widget*, guint)
|
||||||
|
{
|
||||||
|
if (_tabs.get_n_pages() < 2) {
|
||||||
|
editor_visibility_button.drag_source_unset ();
|
||||||
|
mixer_visibility_button.drag_source_unset ();
|
||||||
|
prefs_visibility_button.drag_source_unset ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ARDOUR_UI::tabs_switch (GtkNotebookPage*, guint page)
|
ARDOUR_UI::tabs_switch (GtkNotebookPage*, guint page)
|
||||||
{
|
{
|
||||||
|
|
|
@ -555,28 +555,8 @@ ARDOUR_UI::build_menu_bar ()
|
||||||
|
|
||||||
Gtk::HBox* window_button_box = manage (new Gtk::HBox);
|
Gtk::HBox* window_button_box = manage (new Gtk::HBox);
|
||||||
|
|
||||||
std::vector<TargetEntry> drag_target_entries;
|
|
||||||
drag_target_entries.push_back (TargetEntry ("tabbable"));
|
|
||||||
|
|
||||||
editor_visibility_button.drag_source_set (drag_target_entries);
|
|
||||||
editor_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (editor->name(),
|
|
||||||
Pango::FontDescription ("Sans 24"),
|
|
||||||
40, 20,
|
|
||||||
Gdk::Color ("red")));
|
|
||||||
editor_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), editor));
|
editor_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), editor));
|
||||||
|
|
||||||
mixer_visibility_button.drag_source_set (drag_target_entries);
|
|
||||||
mixer_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (mixer->name(),
|
|
||||||
Pango::FontDescription ("Sans 24"),
|
|
||||||
40, 20,
|
|
||||||
Gdk::Color ("red")));
|
|
||||||
mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer));
|
mixer_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), mixer));
|
||||||
|
|
||||||
prefs_visibility_button.drag_source_set (drag_target_entries);
|
|
||||||
prefs_visibility_button.drag_source_set_icon (Gtkmm2ext::pixbuf_from_string (rc_option_editor->name(),
|
|
||||||
Pango::FontDescription ("Sans 24"),
|
|
||||||
40, 20,
|
|
||||||
Gdk::Color ("red")));
|
|
||||||
prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor));
|
prefs_visibility_button.signal_drag_failed().connect (sigc::bind (sigc::ptr_fun (drag_failed), rc_option_editor));
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user