T: Fix focus of session dialog widgets
This fixes `assertion 'WIDGET_REALIZED_FOR_EVENT (widget, event)' failed`
This commit is contained in:
parent
380d3b587d
commit
8807a62dd5
@ -77,7 +77,8 @@ using namespace ArdourWidgets;
|
||||
using namespace ARDOUR_UI_UTILS;
|
||||
|
||||
SessionDialog::SessionDialog (DialogTab initial_tab, const std::string& session_name, const std::string& session_path, const std::string& template_name, bool cancel_not_quit)
|
||||
: ArdourDialog (initial_tab==New ? _("Session Setup") : _("Recent Sessions"), true, true)
|
||||
: ArdourDialog (initial_tab == New ? _("Session Setup") : _("Recent Sessions"), true, true)
|
||||
, _initial_tab (initial_tab)
|
||||
, new_name_was_edited (false)
|
||||
, new_folder_chooser (FILE_CHOOSER_ACTION_SELECT_FOLDER)
|
||||
{
|
||||
@ -202,15 +203,6 @@ SessionDialog::SessionDialog (DialogTab initial_tab, const std::string& session_
|
||||
}
|
||||
|
||||
_tabs.signal_switch_page().connect (sigc::mem_fun (*this, &SessionDialog::tab_page_switched));
|
||||
_tabs.set_current_page(3); //this will enforce a page-change, so correct widgets get sensitized
|
||||
if (initial_tab==New) {
|
||||
_tabs.set_current_page(0);
|
||||
} else if (initial_tab==Open) {
|
||||
_tabs.set_current_page(2);
|
||||
} else {
|
||||
_tabs.set_current_page(1);
|
||||
}
|
||||
|
||||
disallow_idle ();
|
||||
}
|
||||
|
||||
@ -218,6 +210,25 @@ SessionDialog::~SessionDialog()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
SessionDialog::on_show ()
|
||||
{
|
||||
ArdourDialog::on_show ();
|
||||
|
||||
_tabs.set_current_page(3); // force change
|
||||
switch (_initial_tab) {
|
||||
case New:
|
||||
_tabs.set_current_page(0);
|
||||
break;
|
||||
case Open:
|
||||
_tabs.set_current_page(2);
|
||||
break;
|
||||
default:
|
||||
_tabs.set_current_page(1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
SessionDialog::tab_page_switched(GtkNotebookPage*, guint page_number)
|
||||
{
|
||||
|
@ -75,6 +75,7 @@ public:
|
||||
std::string session_template_name();
|
||||
|
||||
uint32_t master_channel_count();
|
||||
void on_show ();
|
||||
|
||||
void set_provided_session (std::string const & name, std::string const & path);
|
||||
void clear_name ();
|
||||
@ -113,6 +114,8 @@ private:
|
||||
void setup_recent_sessions ();
|
||||
Gtk::VBox recent_vbox;
|
||||
|
||||
DialogTab _initial_tab;
|
||||
|
||||
/* recent sessions */
|
||||
|
||||
void setup_existing_session_page ();
|
||||
|
Loading…
Reference in New Issue
Block a user