diff --git a/data/resources/style.css b/data/resources/style.css index b3c34288..0aa715c5 100644 --- a/data/resources/style.css +++ b/data/resources/style.css @@ -255,11 +255,6 @@ editable-avatar .cutout { padding: 2px; } -spinner-wrapper.large spinner { - min-width: 32px; - min-height: 32px; -} - .substring-entry-row .header .subtitle { margin-top: 4px; margin-bottom: -4px; diff --git a/po/POTFILES.in b/po/POTFILES.in index 05f2b9b7..6fbbc496 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -23,7 +23,6 @@ src/components/dialogs/join_room.ui src/components/dialogs/message_dialogs.rs src/components/dialogs/user_profile.ui src/components/offline_banner.rs -src/components/loading/spinner.rs src/components/media/content_viewer.rs src/components/media/location_viewer.rs src/components/reaction_chooser.ui diff --git a/src/account_chooser_dialog/account_row.rs b/src/account_chooser_dialog/account_row.rs index 5c6ed0f3..7f9f6b74 100644 --- a/src/account_chooser_dialog/account_row.rs +++ b/src/account_chooser_dialog/account_row.rs @@ -1,7 +1,7 @@ use gtk::{self, glib, prelude::*, subclass::prelude::*, CompositeTemplate}; use crate::{ - components::{Avatar, AvatarData, Spinner}, + components::{Avatar, AvatarData}, prelude::*, session::model::Session, session_list::{FailedSession, SessionInfo}, @@ -41,8 +41,6 @@ mod imp { type ParentType = gtk::ListBoxRow; fn class_init(klass: &mut Self::Class) { - Spinner::ensure_type(); - Self::bind_template(klass); } diff --git a/src/account_chooser_dialog/account_row.ui b/src/account_chooser_dialog/account_row.ui index 65a150bc..bc367747 100644 --- a/src/account_chooser_dialog/account_row.ui +++ b/src/account_chooser_dialog/account_row.ui @@ -38,7 +38,9 @@ loading - + + 24 + diff --git a/src/account_switcher/session_item.ui b/src/account_switcher/session_item.ui index fe824161..b9d812ba 100644 --- a/src/account_switcher/session_item.ui +++ b/src/account_switcher/session_item.ui @@ -41,7 +41,11 @@ loading - + + center + center + 24 + diff --git a/src/components/action_button.rs b/src/components/action_button.rs index 077b902d..54952511 100644 --- a/src/components/action_button.rs +++ b/src/components/action_button.rs @@ -1,7 +1,5 @@ -use adw::subclass::prelude::*; -use gtk::{glib, glib::closure_local, prelude::*, CompositeTemplate}; - -use super::Spinner; +use adw::{prelude::*, subclass::prelude::*}; +use gtk::{glib, glib::closure_local, CompositeTemplate}; #[derive(Debug, Default, Hash, Eq, PartialEq, Clone, Copy, glib::Enum)] #[repr(u32)] @@ -67,8 +65,6 @@ mod imp { pub stack: TemplateChild, #[template_child] pub button_default: TemplateChild, - #[template_child] - pub spinner: TemplateChild, } #[glib::object_subclass] diff --git a/src/components/action_button.ui b/src/components/action_button.ui index 731ab896..240dcc1a 100644 --- a/src/components/action_button.ui +++ b/src/components/action_button.ui @@ -72,9 +72,12 @@ false center - + center - + center + 20 + 20 + diff --git a/src/components/dialogs/join_room.rs b/src/components/dialogs/join_room.rs index 56794ab6..bb0ef28f 100644 --- a/src/components/dialogs/join_room.rs +++ b/src/components/dialogs/join_room.rs @@ -4,7 +4,7 @@ use gtk::{glib, glib::clone, CompositeTemplate}; use super::ToastableDialog; use crate::{ - components::{Avatar, LoadingButton, Spinner}, + components::{Avatar, LoadingButton}, i18n::ngettext_f, prelude::*, session::model::{RemoteRoom, Session}, @@ -69,8 +69,6 @@ mod imp { type ParentType = ToastableDialog; fn class_init(klass: &mut Self::Class) { - Spinner::ensure_type(); - Self::bind_template(klass); Self::Type::bind_template_callbacks(klass); } diff --git a/src/components/dialogs/join_room.ui b/src/components/dialogs/join_room.ui index e49ca0d1..18caa56f 100644 --- a/src/components/dialogs/join_room.ui +++ b/src/components/dialogs/join_room.ui @@ -110,10 +110,7 @@ loading - - center - center - + diff --git a/src/components/dialogs/user_profile.rs b/src/components/dialogs/user_profile.rs index 961e9542..b9fac32e 100644 --- a/src/components/dialogs/user_profile.rs +++ b/src/components/dialogs/user_profile.rs @@ -4,7 +4,7 @@ use ruma::OwnedUserId; use super::ToastableDialog; use crate::{ - components::{Spinner, UserPage}, + components::UserPage, prelude::*, session::model::{Member, RemoteUser, Session, User}, spawn, @@ -31,8 +31,6 @@ mod imp { type ParentType = ToastableDialog; fn class_init(klass: &mut Self::Class) { - Spinner::ensure_type(); - Self::bind_template(klass); Self::Type::bind_template_callbacks(klass); } diff --git a/src/components/dialogs/user_profile.ui b/src/components/dialogs/user_profile.ui index 65e9cd68..5f3d9cb9 100644 --- a/src/components/dialogs/user_profile.ui +++ b/src/components/dialogs/user_profile.ui @@ -9,10 +9,7 @@ loading - - center - center - + diff --git a/src/components/loading/bin.rs b/src/components/loading/bin.rs index 166c91c3..31c0fd5c 100644 --- a/src/components/loading/bin.rs +++ b/src/components/loading/bin.rs @@ -1,8 +1,6 @@ use adw::prelude::*; use gtk::{glib, subclass::prelude::*, CompositeTemplate}; -use super::Spinner; - mod imp { use std::marker::PhantomData; @@ -35,8 +33,6 @@ mod imp { fn class_init(klass: &mut Self::Class) { klass.set_layout_manager_type::(); - Spinner::ensure_type(); - Self::bind_template(klass); } diff --git a/src/components/loading/bin.ui b/src/components/loading/bin.ui index c8b4635b..50501ed9 100644 --- a/src/components/loading/bin.ui +++ b/src/components/loading/bin.ui @@ -16,7 +16,7 @@ loading - + center center diff --git a/src/components/loading/mod.rs b/src/components/loading/mod.rs index ad2005a2..4b499c54 100644 --- a/src/components/loading/mod.rs +++ b/src/components/loading/mod.rs @@ -1,5 +1,4 @@ mod bin; mod button; -mod spinner; -pub use self::{bin::LoadingBin, button::LoadingButton, spinner::Spinner}; +pub use self::{bin::LoadingBin, button::LoadingButton}; diff --git a/src/components/loading/spinner.rs b/src/components/loading/spinner.rs deleted file mode 100644 index b7fc35d9..00000000 --- a/src/components/loading/spinner.rs +++ /dev/null @@ -1,71 +0,0 @@ -use gettextrs::gettext; -use gtk::{glib, prelude::*, subclass::prelude::*}; - -mod imp { - use super::*; - - #[derive(Debug, Default)] - pub struct Spinner { - inner: gtk::Spinner, - } - - #[glib::object_subclass] - impl ObjectSubclass for Spinner { - const NAME: &'static str = "Spinner"; - type Type = super::Spinner; - type ParentType = gtk::Widget; - - fn class_init(klass: &mut Self::Class) { - klass.set_layout_manager_type::(); - klass.set_css_name("spinner-wrapper"); - klass.set_accessible_role(gtk::AccessibleRole::Status); - } - } - - impl ObjectImpl for Spinner { - fn constructed(&self) { - self.parent_constructed(); - let obj = self.obj(); - - self.inner.set_parent(&*obj); - obj.update_property(&[gtk::accessible::Property::Label(&gettext("Loading"))]) - } - - fn dispose(&self) { - self.inner.unparent(); - } - } - - impl WidgetImpl for Spinner { - fn map(&self) { - self.parent_map(); - self.inner.start(); - } - - fn unmap(&self) { - self.inner.stop(); - self.parent_unmap(); - } - } - - impl AccessibleImpl for Spinner { - fn first_accessible_child(&self) -> Option { - // Hide the children in the a11y tree. - None - } - } -} - -glib::wrapper! { - /// A spinner. - /// - /// This is a wrapper around `GtkSpinner` that makes sure the spinner is stopped when it is not mapped. - pub struct Spinner(ObjectSubclass) - @extends gtk::Widget, @implements gtk::Accessible; -} - -impl Default for Spinner { - fn default() -> Self { - glib::Object::new() - } -} diff --git a/src/components/media/content_viewer.rs b/src/components/media/content_viewer.rs index a37bdecd..e19d4e1a 100644 --- a/src/components/media/content_viewer.rs +++ b/src/components/media/content_viewer.rs @@ -6,7 +6,6 @@ use tracing::warn; use super::{AnimatedImagePaintable, AudioPlayer, LocationViewer}; use crate::{ - components::Spinner, spawn, utils::{media::image::load_image, CountedRef}, }; @@ -59,8 +58,6 @@ mod imp { pub viewer: TemplateChild, #[template_child] pub fallback: TemplateChild, - #[template_child] - pub spinner: TemplateChild, /// Whether to play the media content automatically. #[property(get, construct_only)] pub autoplay: Cell, diff --git a/src/components/media/content_viewer.ui b/src/components/media/content_viewer.ui index c95c5ea0..a760a201 100644 --- a/src/components/media/content_viewer.ui +++ b/src/components/media/content_viewer.ui @@ -7,14 +7,7 @@ loading - - center - center - True - - + diff --git a/src/components/rows/switch_loading_row.rs b/src/components/rows/switch_loading_row.rs index 71eb4271..7da05d82 100644 --- a/src/components/rows/switch_loading_row.rs +++ b/src/components/rows/switch_loading_row.rs @@ -1,7 +1,7 @@ -use adw::subclass::prelude::*; -use gtk::{glib, glib::clone, prelude::*, CompositeTemplate}; +use adw::{prelude::*, subclass::prelude::*}; +use gtk::{glib, glib::clone, CompositeTemplate}; -use crate::{components::Spinner, utils::bool_to_accessible_tristate}; +use crate::utils::bool_to_accessible_tristate; mod imp { use std::{cell::Cell, marker::PhantomData}; @@ -15,7 +15,7 @@ mod imp { #[properties(wrapper_type = super::SwitchLoadingRow)] pub struct SwitchLoadingRow { #[template_child] - pub spinner: TemplateChild, + pub spinner: TemplateChild, #[template_child] pub switch: TemplateChild, /// Whether the switch is active. diff --git a/src/components/rows/switch_loading_row.ui b/src/components/rows/switch_loading_row.ui index bab00200..4646e689 100644 --- a/src/components/rows/switch_loading_row.ui +++ b/src/components/rows/switch_loading_row.ui @@ -9,7 +9,7 @@ center 6 - + False status diff --git a/src/login/session_setup_view.ui b/src/login/session_setup_view.ui index 5f1ecc8a..4453bd22 100644 --- a/src/login/session_setup_view.ui +++ b/src/login/session_setup_view.ui @@ -30,12 +30,10 @@ vertical 18 - - center - - + + 64 + 64 + diff --git a/src/session/view/account_settings/notifications_page.rs b/src/session/view/account_settings/notifications_page.rs index b61ebf42..fbaed0f2 100644 --- a/src/session/view/account_settings/notifications_page.rs +++ b/src/session/view/account_settings/notifications_page.rs @@ -4,9 +4,7 @@ use gtk::{gio, glib, glib::clone, CompositeTemplate}; use tracing::error; use crate::{ - components::{ - CheckLoadingRow, EntryAddRow, LoadingBin, RemovableRow, Spinner, SwitchLoadingRow, - }, + components::{CheckLoadingRow, EntryAddRow, RemovableRow, SwitchLoadingRow}, i18n::gettext_f, session::model::{NotificationsGlobalSetting, NotificationsSettings}, spawn, toast, @@ -14,11 +12,7 @@ use crate::{ }; mod imp { - use std::{ - cell::{Cell, RefCell}, - collections::HashMap, - marker::PhantomData, - }; + use std::{cell::Cell, marker::PhantomData}; use glib::subclass::InitializingObject; @@ -46,7 +40,6 @@ mod imp { pub keywords: TemplateChild, #[template_child] pub keywords_add_row: TemplateChild, - pub keywords_suffixes: RefCell>, /// The notifications settings of the current session. #[property(get, set = Self::set_notifications_settings, explicit_notify)] pub notifications_settings: BoundObjectWeakRef, @@ -68,8 +61,6 @@ mod imp { type ParentType = adw::PreferencesPage; fn class_init(klass: &mut Self::Class) { - Spinner::ensure_type(); - Self::bind_template(klass); Self::Type::bind_template_callbacks(klass); diff --git a/src/session/view/account_settings/user_sessions_page/mod.ui b/src/session/view/account_settings/user_sessions_page/mod.ui index 42872a75..a41c3d98 100644 --- a/src/session/view/account_settings/user_sessions_page/mod.ui +++ b/src/session/view/account_settings/user_sessions_page/mod.ui @@ -11,13 +11,7 @@ loading - - center - center - - + diff --git a/src/session/view/content/explore/mod.rs b/src/session/view/content/explore/mod.rs index a49b12e0..e56fa96d 100644 --- a/src/session/view/content/explore/mod.rs +++ b/src/session/view/content/explore/mod.rs @@ -14,7 +14,7 @@ pub use self::{ servers_popover::ExploreServersPopover, }; use self::{server::Server, server_list::ServerList, server_row::ExploreServerRow}; -use crate::{components::Spinner, session::model::Session}; +use crate::session::model::Session; mod imp { use std::cell::RefCell; @@ -57,7 +57,6 @@ mod imp { PublicRoom::ensure_type(); PublicRoomList::ensure_type(); PublicRoomRow::ensure_type(); - Spinner::ensure_type(); Self::bind_template(klass); diff --git a/src/session/view/content/explore/mod.ui b/src/session/view/content/explore/mod.ui index 8830ad37..6418bea5 100644 --- a/src/session/view/content/explore/mod.ui +++ b/src/session/view/content/explore/mod.ui @@ -42,7 +42,6 @@ - spinner crossfade - + diff --git a/src/session/view/content/explore/public_room_row.rs b/src/session/view/content/explore/public_room_row.rs index c27db894..12aaffd8 100644 --- a/src/session/view/content/explore/public_room_row.rs +++ b/src/session/view/content/explore/public_room_row.rs @@ -5,7 +5,7 @@ use ruma::ServerName; use super::PublicRoom; use crate::{ - components::{Avatar, LoadingButton, Spinner}, + components::{Avatar, LoadingButton}, gettext_f, ngettext_f, prelude::*, spawn, toast, @@ -131,9 +131,11 @@ mod imp { self.update_button(); self.update_row(); } else if self.original_child.borrow().is_none() { - let spinner = Spinner::default(); + let spinner = adw::Spinner::new(); spinner.set_margin_top(12); spinner.set_margin_bottom(12); + spinner.set_width_request(24); + spinner.set_height_request(24); self.original_child.replace(obj.child()); obj.set_child(Some(&spinner)); } diff --git a/src/session/view/content/room_details/history_viewer/audio.ui b/src/session/view/content/room_details/history_viewer/audio.ui index e728113c..ba519613 100644 --- a/src/session/view/content/room_details/history_viewer/audio.ui +++ b/src/session/view/content/room_details/history_viewer/audio.ui @@ -16,14 +16,7 @@ loading Loading - - center - center - True - - + diff --git a/src/session/view/content/room_details/history_viewer/file.ui b/src/session/view/content/room_details/history_viewer/file.ui index 0e2cb5a0..d436a73c 100644 --- a/src/session/view/content/room_details/history_viewer/file.ui +++ b/src/session/view/content/room_details/history_viewer/file.ui @@ -15,14 +15,7 @@ loading Loading - - center - center - True - - + diff --git a/src/session/view/content/room_details/history_viewer/visual_media.ui b/src/session/view/content/room_details/history_viewer/visual_media.ui index e1c01166..0d21ca23 100644 --- a/src/session/view/content/room_details/history_viewer/visual_media.ui +++ b/src/session/view/content/room_details/history_viewer/visual_media.ui @@ -22,14 +22,7 @@ loading Loading - - center - center - True - - + diff --git a/src/session/view/content/room_details/invite_subpage/mod.rs b/src/session/view/content/room_details/invite_subpage/mod.rs index 12740362..8c00554e 100644 --- a/src/session/view/content/room_details/invite_subpage/mod.rs +++ b/src/session/view/content/room_details/invite_subpage/mod.rs @@ -13,7 +13,7 @@ use self::{ row::InviteRow, }; use crate::{ - components::{LoadingButton, PillSearchEntry, PillSource, Spinner}, + components::{LoadingButton, PillSearchEntry, PillSource}, prelude::*, session::model::{Room, User}, toast, @@ -50,8 +50,6 @@ mod imp { pub no_search_page: TemplateChild, #[template_child] pub error_page: TemplateChild, - #[template_child] - pub loading_page: TemplateChild, /// The room users will be invited to. #[property(get, set = Self::set_room, construct_only)] pub room: glib::WeakRef, diff --git a/src/session/view/content/room_details/invite_subpage/mod.ui b/src/session/view/content/room_details/invite_subpage/mod.ui index 383e3d2f..17239514 100644 --- a/src/session/view/content/room_details/invite_subpage/mod.ui +++ b/src/session/view/content/room_details/invite_subpage/mod.ui @@ -148,13 +148,7 @@ loading Searching for Users - - center - center - - + diff --git a/src/session/view/content/room_history/item_row.rs b/src/session/view/content/room_history/item_row.rs index 6860ef4b..03790be8 100644 --- a/src/session/view/content/room_history/item_row.rs +++ b/src/session/view/content/room_history/item_row.rs @@ -8,7 +8,7 @@ use tracing::error; use super::{DividerRow, MessageRow, RoomHistory, StateRow, TypingRow}; use crate::{ - components::{ContextMenuBin, ContextMenuBinExt, ContextMenuBinImpl, ReactionChooser, Spinner}, + components::{ContextMenuBin, ContextMenuBinExt, ContextMenuBinImpl, ReactionChooser}, prelude::*, session::{ model::{Event, EventKey, MessageState, TimelineItem, VirtualItem, VirtualItemKind}, @@ -308,10 +308,15 @@ mod imp { match &*item.kind() { VirtualItemKind::Spinner => { - if !obj.child().is_some_and(|widget| widget.is::()) { - let spinner = Spinner::default(); + if !obj + .child() + .is_some_and(|widget| widget.is::()) + { + let spinner = adw::Spinner::new(); spinner.set_margin_top(12); spinner.set_margin_bottom(12); + spinner.set_height_request(24); + spinner.set_width_request(24); obj.set_child(Some(&spinner)); } } diff --git a/src/session/view/content/room_history/message_row/audio.rs b/src/session/view/content/room_history/message_row/audio.rs index a1220d0e..2e02552e 100644 --- a/src/session/view/content/room_history/message_row/audio.rs +++ b/src/session/view/content/room_history/message_row/audio.rs @@ -9,7 +9,7 @@ use tracing::warn; use super::ContentFormat; use crate::{ - components::{AudioPlayer, Spinner}, + components::AudioPlayer, gettext_f, session::model::Session, spawn, @@ -41,7 +41,7 @@ mod imp { #[template_child] pub player: TemplateChild, #[template_child] - pub state_spinner: TemplateChild, + pub state_spinner: TemplateChild, #[template_child] pub state_error: TemplateChild, } diff --git a/src/session/view/content/room_history/message_row/audio.ui b/src/session/view/content/room_history/message_row/audio.ui index 7bbae71b..ca01adc1 100644 --- a/src/session/view/content/room_history/message_row/audio.ui +++ b/src/session/view/content/room_history/message_row/audio.ui @@ -23,7 +23,10 @@ - + + 20 + 20 + diff --git a/src/session/view/content/room_history/message_row/message_state_stack.ui b/src/session/view/content/room_history/message_row/message_state_stack.ui index 9a4c491e..164f1e75 100644 --- a/src/session/view/content/room_history/message_row/message_state_stack.ui +++ b/src/session/view/content/room_history/message_row/message_state_stack.ui @@ -8,8 +8,9 @@ sending - - center + + 20 + 20 Sending… diff --git a/src/session/view/content/room_history/message_row/visual_media.rs b/src/session/view/content/room_history/message_row/visual_media.rs index e2632092..6f071e4a 100644 --- a/src/session/view/content/room_history/message_row/visual_media.rs +++ b/src/session/view/content/room_history/message_row/visual_media.rs @@ -11,7 +11,7 @@ use tracing::warn; use super::ContentFormat; use crate::{ - components::{AnimatedImagePaintable, Spinner, VideoPlayer}, + components::{AnimatedImagePaintable, VideoPlayer}, gettext_f, session::model::Session, spawn, @@ -47,7 +47,7 @@ mod imp { #[template_child] pub overlay_error: TemplateChild, #[template_child] - pub overlay_spinner: TemplateChild, + pub overlay_spinner: TemplateChild, /// The intended display width of the media. #[property(get, set = Self::set_width, explicit_notify, default = -1, minimum = -1)] pub width: Cell, diff --git a/src/session/view/content/room_history/message_row/visual_media.ui b/src/session/view/content/room_history/message_row/visual_media.ui index f8edb83a..ed4fbaff 100644 --- a/src/session/view/content/room_history/message_row/visual_media.ui +++ b/src/session/view/content/room_history/message_row/visual_media.ui @@ -15,9 +15,7 @@ - - center - center + true diff --git a/src/session/view/content/room_history/mod.rs b/src/session/view/content/room_history/mod.rs index 8ce442f5..ffc2dc47 100644 --- a/src/session/view/content/room_history/mod.rs +++ b/src/session/view/content/room_history/mod.rs @@ -27,7 +27,7 @@ use self::{ }; use super::{room_details, RoomDetails}; use crate::{ - components::{confirm_leave_room_dialog, DragOverlay, ReactionChooser, Spinner}, + components::{confirm_leave_room_dialog, DragOverlay, ReactionChooser}, i18n::gettext_f, prelude::*, session::model::{ @@ -98,7 +98,7 @@ mod imp { #[template_child] pub message_toolbar: TemplateChild, #[template_child] - pub loading: TemplateChild, + pub loading: TemplateChild, #[template_child] pub error: TemplateChild, #[template_child] diff --git a/src/session/view/content/room_history/mod.ui b/src/session/view/content/room_history/mod.ui index de97bd81..ac345d7f 100644 --- a/src/session/view/content/room_history/mod.ui +++ b/src/session/view/content/room_history/mod.ui @@ -175,14 +175,7 @@ loading Loading - - center - center - True - - + diff --git a/src/session/view/create_dm_dialog/mod.ui b/src/session/view/create_dm_dialog/mod.ui index f977bf32..d478e280 100644 --- a/src/session/view/create_dm_dialog/mod.ui +++ b/src/session/view/create_dm_dialog/mod.ui @@ -111,13 +111,7 @@ loading-page - - center - center - - + diff --git a/src/window.rs b/src/window.rs index 27c73b00..904cb905 100644 --- a/src/window.rs +++ b/src/window.rs @@ -8,7 +8,7 @@ use tracing::{error, warn}; use crate::{ account_chooser_dialog::AccountChooserDialog, account_switcher::{AccountSwitcherButton, AccountSwitcherPopover}, - components::{OfflineBanner, Spinner}, + components::OfflineBanner, error_page::ErrorPage, intent, login::Login, @@ -59,8 +59,6 @@ mod imp { pub session: TemplateChild, #[template_child] pub toast_overlay: TemplateChild, - #[template_child] - pub spinner: TemplateChild, /// Whether the window should be in compact view. /// /// It means that the horizontal size is not large enough to hold all diff --git a/src/window.ui b/src/window.ui index 90d6263a..918ebb3b 100644 --- a/src/window.ui +++ b/src/window.ui @@ -10,7 +10,6 @@ - loading crossfade @@ -34,14 +33,9 @@ - - center - center + True - - +