Disable focus on action rows with child widgets

This commit is contained in:
Elias Projahn 2021-11-12 00:44:09 +01:00
parent 61a440e45c
commit 2c1fe19b05
35 changed files with 162 additions and 124 deletions

View file

@ -68,6 +68,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">False</property>
<property name="title" translatable="yes">Loading…</property> <property name="title" translatable="yes">Loading…</property>
<child> <child>
<object class="GtkSpinner"> <object class="GtkSpinner">
@ -88,8 +89,8 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="error_row"> <object class="AdwActionRow" id="error_row">
<property name="focusable">False</property>
<property name="title" translatable="yes">Error while searching for matching metadata</property> <property name="title" translatable="yes">Error while searching for matching metadata</property>
<property name="activatable">True</property>
<property name="activatable-widget">try_again_button</property> <property name="activatable-widget">try_again_button</property>
<child> <child>
<object class="GtkButton" id="try_again_button"> <object class="GtkButton" id="try_again_button">
@ -111,6 +112,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">False</property>
<property name="title" translatable="yes">No matching metadata found</property> <property name="title" translatable="yes">No matching metadata found</property>
</object> </object>
</child> </child>
@ -150,8 +152,8 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="focusable">False</property>
<property name="title" translatable="yes">Select existing medium</property> <property name="title" translatable="yes">Select existing medium</property>
<property name="activatable">True</property>
<property name="activatable-widget">select_button</property> <property name="activatable-widget">select_button</property>
<child> <child>
<object class="GtkButton" id="select_button"> <object class="GtkButton" id="select_button">
@ -163,8 +165,8 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="focusable">False</property>
<property name="title" translatable="yes">Add a new medium</property> <property name="title" translatable="yes">Add a new medium</property>
<property name="activatable">True</property>
<property name="activatable-widget">add_button</property> <property name="activatable-widget">add_button</property>
<child> <child>
<object class="GtkButton" id="add_button"> <object class="GtkButton" id="add_button">

View file

@ -69,7 +69,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Username</property> <property name="title" translatable="yes">Username</property>
<property name="activatable-widget">username_entry</property> <property name="activatable-widget">username_entry</property>
<child> <child>
@ -82,7 +82,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Password</property> <property name="title" translatable="yes">Password</property>
<property name="activatable-widget">password_entry</property> <property name="activatable-widget">password_entry</property>
<child> <child>
@ -120,7 +120,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Register a new account</property> <property name="title" translatable="yes">Register a new account</property>
<property name="activatable-widget">register_button</property> <property name="activatable-widget">register_button</property>
<child> <child>
@ -159,7 +159,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Don't use an account</property> <property name="title" translatable="yes">Don't use an account</property>
<property name="activatable-widget">logout_button</property> <property name="activatable-widget">logout_button</property>
<child> <child>

View file

@ -71,7 +71,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="name_row"> <object class="AdwActionRow" id="name_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Name of the medium</property> <property name="title" translatable="yes">Name of the medium</property>
<property name="activatable-widget">name_entry</property> <property name="activatable-widget">name_entry</property>
<child> <child>
@ -84,7 +84,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Publish to the server</property> <property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">publish_switch</property> <property name="activatable-widget">publish_switch</property>
<child> <child>

View file

@ -51,7 +51,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="person_row"> <object class="AdwActionRow" id="person_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select a person</property> <property name="title" translatable="yes">Select a person</property>
<property name="activatable-widget">person_button</property> <property name="activatable-widget">person_button</property>
<child> <child>
@ -64,7 +64,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow" id="ensemble_row"> <object class="AdwActionRow" id="ensemble_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select an ensemble</property> <property name="title" translatable="yes">Select an ensemble</property>
<property name="activatable-widget">ensemble_button</property> <property name="activatable-widget">ensemble_button</property>
<child> <child>
@ -77,7 +77,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow" id="role_row"> <object class="AdwActionRow" id="role_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select a role</property> <property name="title" translatable="yes">Select a role</property>
<property name="activatable-widget">role_button</property> <property name="activatable-widget">role_button</property>
<child> <child>

View file

@ -14,6 +14,7 @@
<property name="title" translatable="yes">Music library</property> <property name="title" translatable="yes">Music library</property>
<child> <child>
<object class="AdwActionRow" id="music_library_path_row"> <object class="AdwActionRow" id="music_library_path_row">
<property name="focusable">False</property>
<property name="title" translatable="yes">Music library folder</property> <property name="title" translatable="yes">Music library folder</property>
<property name="activatable-widget">select_music_library_path_button</property> <property name="activatable-widget">select_music_library_path_button</property>
<property name="subtitle" translatable="yes">None selected</property> <property name="subtitle" translatable="yes">None selected</property>
@ -33,6 +34,7 @@
<property name="title" translatable="yes">Server connection</property> <property name="title" translatable="yes">Server connection</property>
<child> <child>
<object class="AdwActionRow" id="url_row"> <object class="AdwActionRow" id="url_row">
<property name="focusable">False</property>
<property name="title" translatable="yes">Server URL</property> <property name="title" translatable="yes">Server URL</property>
<property name="activatable-widget">url_button</property> <property name="activatable-widget">url_button</property>
<property name="subtitle" translatable="yes">Not set</property> <property name="subtitle" translatable="yes">Not set</property>
@ -47,6 +49,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow" id="login_row"> <object class="AdwActionRow" id="login_row">
<property name="focusable">False</property>
<property name="title" translatable="yes">Login credentials</property> <property name="title" translatable="yes">Login credentials</property>
<property name="activatable-widget">login_button</property> <property name="activatable-widget">login_button</property>
<property name="subtitle" translatable="yes">Not logged in</property> <property name="subtitle" translatable="yes">Not logged in</property>

View file

@ -75,7 +75,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="work_row"> <object class="AdwActionRow" id="work_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select a work</property> <property name="title" translatable="yes">Select a work</property>
<property name="activatable-widget">work_button</property> <property name="activatable-widget">work_button</property>
<child> <child>
@ -88,7 +88,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Comment</property> <property name="title" translatable="yes">Comment</property>
<property name="activatable-widget">comment_entry</property> <property name="activatable-widget">comment_entry</property>
<child> <child>
@ -101,7 +101,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Publish to the server</property> <property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">upload_switch</property> <property name="activatable-widget">upload_switch</property>
<child> <child>

View file

@ -102,7 +102,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Username</property> <property name="title" translatable="yes">Username</property>
<property name="activatable-widget">username_entry</property> <property name="activatable-widget">username_entry</property>
<child> <child>
@ -115,7 +115,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">E-mail (optional)</property> <property name="title" translatable="yes">E-mail (optional)</property>
<property name="activatable-widget">email_entry</property> <property name="activatable-widget">email_entry</property>
<child> <child>
@ -147,7 +147,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Password</property> <property name="title" translatable="yes">Password</property>
<property name="activatable-widget">password_entry</property> <property name="activatable-widget">password_entry</property>
<child> <child>
@ -162,7 +162,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Repeat password</property> <property name="title" translatable="yes">Repeat password</property>
<property name="activatable-widget">repeat_password_entry</property> <property name="activatable-widget">repeat_password_entry</property>
<child> <child>
@ -202,7 +202,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Your answer</property> <property name="title" translatable="yes">Your answer</property>
<property name="activatable-widget">captcha_entry</property> <property name="activatable-widget">captcha_entry</property>
<child> <child>

View file

@ -40,7 +40,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">URL</property> <property name="title" translatable="yes">URL</property>
<property name="activatable-widget">url_entry</property> <property name="activatable-widget">url_entry</property>
<child> <child>

View file

@ -61,7 +61,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="recording_row"> <object class="AdwActionRow" id="recording_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select a recording</property> <property name="title" translatable="yes">Select a recording</property>
<property name="activatable-widget">select_recording_button</property> <property name="activatable-widget">select_recording_button</property>
<child> <child>

View file

@ -75,7 +75,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow" id="composer_row"> <object class="AdwActionRow" id="composer_row">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Select a composer</property> <property name="title" translatable="yes">Select a composer</property>
<property name="activatable-widget">composer_button</property> <property name="activatable-widget">composer_button</property>
<child> <child>
@ -88,7 +88,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Title</property> <property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property> <property name="activatable-widget">title_entry</property>
<child> <child>
@ -101,7 +101,7 @@
</child> </child>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Publish to the server</property> <property name="title" translatable="yes">Publish to the server</property>
<property name="activatable-widget">upload_switch</property> <property name="activatable-widget">upload_switch</property>
<child> <child>

View file

@ -55,7 +55,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Title</property> <property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property> <property name="activatable-widget">title_entry</property>
<child> <child>

View file

@ -55,7 +55,7 @@
<property name="selection-mode">none</property> <property name="selection-mode">none</property>
<child> <child>
<object class="AdwActionRow"> <object class="AdwActionRow">
<property name="activatable">True</property> <property name="focusable">False</property>
<property name="title" translatable="yes">Title</property> <property name="title" translatable="yes">Title</property>
<property name="activatable-widget">title_entry</property> <property name="activatable-widget">title_entry</property>
<child> <child>

View file

@ -136,12 +136,14 @@ impl Screen<Option<Recording>, Recording> for RecordingEditor {
}); });
})); }));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .focusable(false)
row.set_title(&performance.get_title()); .activatable_widget(&edit_button)
.title(&performance.get_title())
.build();
row.add_suffix(&delete_button); row.add_suffix(&delete_button);
row.add_suffix(&edit_button); row.add_suffix(&edit_button);
row.set_activatable_widget(Some(&edit_button));
row.upcast() row.upcast()
})); }));

View file

@ -161,8 +161,10 @@ impl Screen<Option<Work>, Work> for WorkEditor {
this.instrument_list.update(length); this.instrument_list.update(length);
})); }));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_title(&instrument.name); .title(&instrument.name)
.build();
row.add_suffix(&delete_button); row.add_suffix(&delete_button);
row.upcast() row.upcast()
@ -232,12 +234,14 @@ impl Screen<Option<Work>, Work> for WorkEditor {
}); });
})); }));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .focusable(false)
row.set_title(&pos.get_title()); .title(&pos.get_title())
.activatable_widget(&edit_button)
.build();
row.add_suffix(&delete_button); row.add_suffix(&delete_button);
row.add_suffix(&edit_button); row.add_suffix(&edit_button);
row.set_activatable_widget(Some(&edit_button));
if let PartOrSection::Part(_) = pos { if let PartOrSection::Part(_) = pos {
// TODO: Replace with better solution to differentiate parts and sections. // TODO: Replace with better solution to differentiate parts and sections.

View file

@ -71,9 +71,9 @@ impl ImportScreen {
for medium in mediums { for medium in mediums {
let row = adw::ActionRowBuilder::new() let row = adw::ActionRowBuilder::new()
.activatable(true)
.title(&medium.name) .title(&medium.name)
.subtitle(&format!("{} Tracks", medium.tracks.len())) .subtitle(&format!("{} Tracks", medium.tracks.len()))
.activatable(true)
.build(); .build();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -118,12 +118,14 @@ impl Screen<(Arc<ImportSession>, Option<Medium>), Medium> for MediumEditor {
edit_button.set_valign(gtk::Align::Center); edit_button.set_valign(gtk::Align::Center);
edit_button.set_child(Some(&edit_image)); edit_button.set_child(Some(&edit_image));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .focusable(false)
row.set_title(&title); .title(&title)
row.set_subtitle(&subtitle); .subtitle(&subtitle)
.activatable_widget(&edit_button)
.build();
row.add_suffix(&edit_button); row.add_suffix(&edit_button);
row.set_activatable_widget(Some(&edit_button));
edit_button.connect_clicked(clone!(@weak this => move |_| { edit_button.connect_clicked(clone!(@weak this => move |_| {
// TODO: Implement editing. // TODO: Implement editing.

View file

@ -65,11 +65,13 @@ impl Screen<(Recording, Vec<usize>), Vec<usize>> for TrackEditor {
} }
})); }));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.add_prefix(&check); .focusable(false)
row.set_activatable_widget(Some(&check)); .title(&part.title)
row.set_title(&part.title); .activatable_widget(&check)
.build();
row.add_prefix(&check);
parts_list.append(&row); parts_list.append(&row);
} }

View file

@ -75,11 +75,13 @@ impl Screen<Arc<ImportSession>, Vec<usize>> for TrackSelector {
} }
})); }));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
.focusable(false)
.title(&track.name)
.activatable_widget(&check)
.build();
row.add_prefix(&check); row.add_prefix(&check);
row.set_activatable_widget(Some(&check));
row.set_activatable(true);
row.set_title(&track.name);
track_list.append(&row); track_list.append(&row);
} }

View file

@ -144,12 +144,14 @@ impl Screen<Arc<ImportSession>, TrackSetData> for TrackSetEditor {
edit_button.set_valign(gtk::Align::Center); edit_button.set_valign(gtk::Align::Center);
edit_button.set_child(Some(&edit_image)); edit_button.set_child(Some(&edit_image));
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .focusable(false)
row.set_title(&title); .title(&title)
row.set_subtitle(track_name); .subtitle(track_name)
.activatable_widget(&edit_button)
.build();
row.add_suffix(&edit_button); row.add_suffix(&edit_button);
row.set_activatable_widget(Some(&edit_button));
edit_button.connect_clicked(clone!(@weak this => move |_| { edit_button.connect_clicked(clone!(@weak this => move |_| {
let recording = this.recording.borrow().clone(); let recording = this.recording.borrow().clone();

View file

@ -74,10 +74,11 @@ impl Screen<Ensemble, ()> for EnsembleScreen {
clone!(@weak this => @default-panic, move |index| { clone!(@weak this => @default-panic, move |index| {
let recording = &this.recordings.borrow()[index]; let recording = &this.recordings.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&recording.work.get_title()); .title(&recording.work.get_title())
row.set_subtitle(&recording.get_performers()); .subtitle(&recording.get_performers())
.build();
let recording = recording.to_owned(); let recording = recording.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -103,9 +104,10 @@ impl Screen<Ensemble, ()> for EnsembleScreen {
.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| {
let medium = &this.mediums.borrow()[index]; let medium = &this.mediums.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&medium.name); .title(&medium.name)
.build();
let medium = medium.to_owned(); let medium = medium.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -93,9 +93,10 @@ impl Screen<(), ()> for MainScreen {
.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| {
let poe = &this.poes.borrow()[index]; let poe = &this.poes.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&poe.get_title()); .title(&poe.get_title())
.build();
let poe = poe.to_owned(); let poe = poe.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -76,11 +76,11 @@ impl Screen<Medium, ()> for MediumScreen {
parts.join(", ") parts.join(", ")
}; };
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_selectable(false); .margin_start(12)
row.set_activatable(false); .selectable(false)
row.set_title(&title); .title(&title)
row.set_margin_start(12); .build();
row.upcast() row.upcast()
})); }));

View file

@ -80,9 +80,10 @@ impl Screen<Person, ()> for PersonScreen {
.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| {
let work = &this.works.borrow()[index]; let work = &this.works.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&work.title); .title(&work.title)
.build();
let work = work.to_owned(); let work = work.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -107,10 +108,11 @@ impl Screen<Person, ()> for PersonScreen {
clone!(@weak this => @default-panic, move |index| { clone!(@weak this => @default-panic, move |index| {
let recording = &this.recordings.borrow()[index]; let recording = &this.recordings.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&recording.work.get_title()); .title(&recording.work.get_title())
row.set_subtitle(&recording.get_performers()); .subtitle(&recording.get_performers())
.build();
let recording = recording.to_owned(); let recording = recording.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -136,9 +138,10 @@ impl Screen<Person, ()> for PersonScreen {
.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { .set_make_widget_cb(clone!(@weak this => @default-panic, move |index| {
let medium = &this.mediums.borrow()[index]; let medium = &this.mediums.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&medium.name); .title(&medium.name)
.build();
let medium = medium.to_owned(); let medium = medium.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -225,10 +225,11 @@ impl Screen<(), ()> for PlayerScreen {
parts.join(", ") parts.join(", ")
}; };
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_selectable(false); .selectable(false)
row.set_activatable(true); .activatable(true)
row.set_title(&title); .title(&title)
.build();
if first { if first {
let subtitle = if !parts.is_empty() { let subtitle = if !parts.is_empty() {

View file

@ -86,8 +86,9 @@ impl Screen<Recording, ()> for RecordingScreen {
title_parts.join(", ") title_parts.join(", ")
}; };
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_title(&title); .title(&title)
.build();
row.upcast() row.upcast()
})); }));

View file

@ -69,10 +69,11 @@ impl Screen<Work, ()> for WorkScreen {
clone!(@weak this => @default-panic, move |index| { clone!(@weak this => @default-panic, move |index| {
let recording = &this.recordings.borrow()[index]; let recording = &this.recordings.borrow()[index];
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&recording.work.get_title()); .title(&recording.work.get_title())
row.set_subtitle(&recording.get_performers()); .subtitle(&recording.get_performers())
.build();
let recording = recording.to_owned(); let recording = recording.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -52,9 +52,10 @@ impl Screen<(), Ensemble> for EnsembleSelector {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |ensemble| { .set_make_widget(clone!(@weak this => @default-panic, move |ensemble| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&ensemble.name); .title(&ensemble.name)
.build();
let ensemble = ensemble.to_owned(); let ensemble = ensemble.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -52,9 +52,10 @@ impl Screen<(), Instrument> for InstrumentSelector {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |instrument| { .set_make_widget(clone!(@weak this => @default-panic, move |instrument| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&instrument.name); .title(&instrument.name)
.build();
let instrument = instrument.to_owned(); let instrument = instrument.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -69,9 +69,10 @@ impl Screen<(), Medium> for MediumSelector {
})); }));
this.selector.set_make_widget(clone!(@weak this => @default-panic, move |poe| { this.selector.set_make_widget(clone!(@weak this => @default-panic, move |poe| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&poe.get_title()); .title(&poe.get_title())
.build();
let poe = poe.to_owned(); let poe = poe.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -143,9 +144,10 @@ impl Screen<PersonOrEnsemble, Medium> for MediumSelectorMediumScreen {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |medium| { .set_make_widget(clone!(@weak this => @default-panic, move |medium| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&medium.name); .title(&medium.name)
.build();
let medium = medium.to_owned(); let medium = medium.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -52,9 +52,10 @@ impl Screen<(), Person> for PersonSelector {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |person| { .set_make_widget(clone!(@weak this => @default-panic, move |person| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&person.name_lf()); .title(&person.name_lf())
.build();
let person = person.to_owned(); let person = person.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -61,9 +61,10 @@ impl Screen<(), Recording> for RecordingSelector {
})); }));
this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&person.name_lf()); .title(&person.name_lf())
.build();
let person = person.to_owned(); let person = person.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -142,9 +143,10 @@ impl Screen<Person, Work> for RecordingSelectorWorkScreen {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |work| { .set_make_widget(clone!(@weak this => @default-panic, move |work| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&work.title); .title(&work.title)
.build();
let work = work.to_owned(); let work = work.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -209,9 +211,10 @@ impl Screen<Work, Recording> for RecordingSelectorRecordingScreen {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |recording| { .set_make_widget(clone!(@weak this => @default-panic, move |recording| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&recording.get_performers()); .title(&recording.get_performers())
.build();
let recording = recording.to_owned(); let recording = recording.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -55,9 +55,10 @@ impl Screen<(), Work> for WorkSelector {
})); }));
this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| { this.selector.set_make_widget(clone!(@weak this => @default-panic, move |person| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&person.name_lf()); .title(&person.name_lf())
.build();
let person = person.to_owned(); let person = person.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {
@ -132,9 +133,10 @@ impl Screen<Person, Work> for WorkSelectorWorkScreen {
this.selector this.selector
.set_make_widget(clone!(@weak this => @default-panic, move |work| { .set_make_widget(clone!(@weak this => @default-panic, move |work| {
let row = adw::ActionRow::new(); let row = adw::ActionRowBuilder::new()
row.set_activatable(true); .activatable(true)
row.set_title(&work.title); .title(&work.title)
.build();
let work = work.to_owned(); let work = work.to_owned();
row.connect_activated(clone!(@weak this => move |_| { row.connect_activated(clone!(@weak this => move |_| {

View file

@ -19,7 +19,7 @@ impl ButtonRow {
.build(); .build();
let widget = adw::ActionRowBuilder::new() let widget = adw::ActionRowBuilder::new()
.activatable(true) .focusable(false)
.activatable_widget(&button) .activatable_widget(&button)
.title(title) .title(title)
.build(); .build();

View file

@ -18,7 +18,7 @@ impl EntryRow {
.build(); .build();
let widget = adw::ActionRowBuilder::new() let widget = adw::ActionRowBuilder::new()
.activatable(true) .focusable(false)
.activatable_widget(&entry) .activatable_widget(&entry)
.title(title) .title(title)
.build(); .build();

View file

@ -29,8 +29,8 @@ impl UploadSection {
.build(); .build();
let row = adw::ActionRowBuilder::new() let row = adw::ActionRowBuilder::new()
.focusable(false)
.title("Upload changes to the server") .title("Upload changes to the server")
.activatable(true)
.activatable_widget(&switch) .activatable_widget(&switch)
.build(); .build();