summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-07-22 17:49:41 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-02-22 15:31:22 -0500
commit16731d07d33e49564b01640d12f09431bb96484e (patch)
tree319576cfec0e268535f965c1c5730f02fc0a9ad8
parent308f6ed8281d2b8913207e0236bd22678e73ec9b (diff)
remove use of current_toplevel() where unnecessary, fix broken necessary cases, generally fix up show/hide/attach/detach for Tabbables
-rw-r--r--gtk2_ardour/ardour_ui_dialogs.cc13
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc1
-rw-r--r--gtk2_ardour/editor.cc15
-rw-r--r--gtk2_ardour/editor_drag.cc6
-rw-r--r--gtk2_ardour/editor_mixer.cc9
-rw-r--r--gtk2_ardour/editor_ops.cc4
6 files changed, 37 insertions, 11 deletions
diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc
index c31257eb5b..0d8c8a9c27 100644
--- a/gtk2_ardour/ardour_ui_dialogs.cc
+++ b/gtk2_ardour/ardour_ui_dialogs.cc
@@ -332,6 +332,10 @@ _hide_splash (gpointer arg)
void
ARDOUR_UI::show_tabbable (Tabbable* t)
{
+ if (!t) {
+ return;
+ }
+
if (splash && splash->is_visible()) {
// in 2 seconds, hide the splash screen
Glib::signal_timeout().connect (sigc::bind (sigc::ptr_fun (_hide_splash), this), 2000);
@@ -343,12 +347,18 @@ ARDOUR_UI::show_tabbable (Tabbable* t)
void
ARDOUR_UI::hide_tabbable (Tabbable* t)
{
+ if (!t) {
+ return;
+ }
t->make_invisible ();
}
void
ARDOUR_UI::attach_tabbable (Tabbable* t)
{
+ if (!t) {
+ return;
+ }
if (splash && splash->is_visible()) {
// in 2 seconds, hide the splash screen
Glib::signal_timeout().connect (sigc::bind (sigc::ptr_fun (_hide_splash), this), 2000);
@@ -360,6 +370,9 @@ ARDOUR_UI::attach_tabbable (Tabbable* t)
void
ARDOUR_UI::detach_tabbable (Tabbable* t)
{
+ if (!t) {
+ return;
+ }
t->detach ();
}
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 203babd597..18689a23c9 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -85,6 +85,7 @@ ARDOUR_UI::create_editor ()
return -1;
}
+
editor->Realized.connect (sigc::mem_fun (*this, &ARDOUR_UI::editor_realized));
editor->signal_event().connect (sigc::bind (sigc::ptr_fun (&Keyboard::catch_user_event_for_pre_dialog_focus), editor));
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index aebaa7fe83..c8c96f3d87 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -4203,9 +4203,12 @@ Editor::maximise_editing_space ()
return;
}
- current_toplevel()->fullscreen ();
+ Gtk::Window* toplevel = current_toplevel();
- _maximised = true;
+ if (toplevel) {
+ toplevel->fullscreen ();
+ _maximised = true;
+ }
}
void
@@ -4215,9 +4218,12 @@ Editor::restore_editing_space ()
return;
}
- current_toplevel()->unfullscreen();
+ Gtk::Window* toplevel = current_toplevel();
- _maximised = false;
+ if (toplevel) {
+ toplevel->unfullscreen();
+ _maximised = false;
+ }
}
/**
@@ -4989,7 +4995,6 @@ Editor::first_idle ()
if (track_views.size() > 1) {
Timers::TimerSuspender t;
dialog = new MessageDialog (
- *current_toplevel(),
string_compose (_("Please wait while %1 loads visual data."), PROGRAM_NAME),
true
);
diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc
index 1c1f6990c7..59e50836e4 100644
--- a/gtk2_ardour/editor_drag.cc
+++ b/gtk2_ardour/editor_drag.cc
@@ -3762,12 +3762,14 @@ MarkerDrag::MarkerDrag (Editor* e, ArdourCanvas::Item* i)
, _selection_changed (false)
{
DEBUG_TRACE (DEBUG::Drags, "New MarkerDrag\n");
+ Gtk::Window* toplevel = _editor->current_toplevel();
+ _marker = reinterpret_cast<Marker*> (_item->get_data ("marker"));
- _marker = reinterpret_cast<ArdourMarker*> (_item->get_data ("marker"));
assert (_marker);
_points.push_back (ArdourCanvas::Duple (0, 0));
- _points.push_back (ArdourCanvas::Duple (0, physical_screen_height (_editor->current_toplevel()->get_window())));
+
+ _points.push_back (ArdourCanvas::Duple (0, toplevel ? physical_screen_height (toplevel->get_window()) : 900));
}
MarkerDrag::~MarkerDrag ()
diff --git a/gtk2_ardour/editor_mixer.cc b/gtk2_ardour/editor_mixer.cc
index 0651d30c1e..d1d5ad9cf4 100644
--- a/gtk2_ardour/editor_mixer.cc
+++ b/gtk2_ardour/editor_mixer.cc
@@ -78,11 +78,16 @@ Editor::show_editor_mixer (bool yn)
show_editor_mixer_when_tracks_arrive = false;
if (yn) {
- Glib::RefPtr<Gdk::Window> win = current_toplevel()->get_window ();
+ Gtk::Window* toplevel = current_toplevel();
+ Glib::RefPtr<Gdk::Window> win;
Glib::RefPtr<Gdk::Screen> screen;
+ if (toplevel) {
+ win = toplevel->get_window();
+ }
+
if (win) {
- screen = win->get_screen();
+ screen = win->get_screen();
} else {
screen = Gdk::Screen::get_default();
}
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index a57977007c..c8b09efe86 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2782,7 +2782,7 @@ Editor::rename_region ()
return;
}
- ArdourDialog d (*current_toplevel(), _("Rename Region"), true, false);
+ ArdourDialog d (_("Rename Region"), true, false);
Entry entry;
Label label (_("New name:"));
HBox hbox;
@@ -7597,7 +7597,7 @@ Editor::fit_tracks (TrackViewList & tracks)
double first_y_pos = DBL_MAX;
if (h < TimeAxisView::preset_height (HeightSmall)) {
- MessageDialog msg (*current_toplevel(), _("There are too many tracks to fit in the current window"));
+ MessageDialog msg (_("There are too many tracks to fit in the current window"));
/* too small to be displayed */
return;
}