fix: clear popup state when it is dismissed by the compositor
This commit is contained in:
parent
f4cc4cecd0
commit
56d96e5282
8 changed files with 75 additions and 0 deletions
|
|
@ -223,6 +223,7 @@ enum Message {
|
||||||
Favorite(String),
|
Favorite(String),
|
||||||
UnFavorite(String),
|
UnFavorite(String),
|
||||||
Popup(String),
|
Popup(String),
|
||||||
|
CloseRequested(window::Id),
|
||||||
ClosePopup,
|
ClosePopup,
|
||||||
Activate(ZcosmicToplevelHandleV1),
|
Activate(ZcosmicToplevelHandleV1),
|
||||||
Exec(String),
|
Exec(String),
|
||||||
|
|
@ -819,6 +820,11 @@ impl cosmic::Application for CosmicAppList {
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup.as_ref().map(|p| p.0) {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Command::none()
|
Command::none()
|
||||||
|
|
@ -1092,4 +1098,8 @@ impl cosmic::Application for CosmicAppList {
|
||||||
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
||||||
Some(cosmic::app::applet::style())
|
Some(cosmic::app::applet::style())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,7 @@ enum Message {
|
||||||
InputChanged(String),
|
InputChanged(String),
|
||||||
Pulse(pulse::Event),
|
Pulse(pulse::Event),
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
ToggleMediaControlsInTopPanel(chain::Toggler, bool),
|
ToggleMediaControlsInTopPanel(chain::Toggler, bool),
|
||||||
Frame(Instant),
|
Frame(Instant),
|
||||||
}
|
}
|
||||||
|
|
@ -317,6 +318,11 @@ impl cosmic::Application for Audio {
|
||||||
self.timeline.set_chain(chain).start();
|
self.timeline.set_chain(chain).start();
|
||||||
self.show_media_controls_in_top_panel = enabled;
|
self.show_media_controls_in_top_panel = enabled;
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Command::none()
|
Command::none()
|
||||||
|
|
@ -462,6 +468,10 @@ impl cosmic::Application for Audio {
|
||||||
.popup_container(container(content))
|
.popup_container(container(content))
|
||||||
.into()
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn revealer(
|
fn revealer(
|
||||||
|
|
|
||||||
|
|
@ -127,6 +127,7 @@ impl CosmicBatteryApplet {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Message {
|
enum Message {
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
Update {
|
Update {
|
||||||
on_battery: bool,
|
on_battery: bool,
|
||||||
percent: f64,
|
percent: f64,
|
||||||
|
|
@ -273,6 +274,11 @@ impl cosmic::Application for CosmicBatteryApplet {
|
||||||
let _ = tx.send(PowerProfileRequest::Set(profile));
|
let _ = tx.send(PowerProfileRequest::Set(profile));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Command::none()
|
Command::none()
|
||||||
}
|
}
|
||||||
|
|
@ -467,6 +473,10 @@ impl cosmic::Application for CosmicBatteryApplet {
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
|
|
||||||
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
||||||
Some(cosmic::app::applet::style())
|
Some(cosmic::app::applet::style())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,7 @@ impl CosmicBluetoothApplet {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Message {
|
enum Message {
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
ToggleVisibleDevices(bool),
|
ToggleVisibleDevices(bool),
|
||||||
Ignore,
|
Ignore,
|
||||||
BluetoothEvent(BluerEvent),
|
BluetoothEvent(BluerEvent),
|
||||||
|
|
@ -270,6 +271,11 @@ impl cosmic::Application for CosmicBluetoothApplet {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
self.update_icon();
|
self.update_icon();
|
||||||
Command::none()
|
Command::none()
|
||||||
|
|
@ -524,4 +530,8 @@ impl cosmic::Application for CosmicBluetoothApplet {
|
||||||
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
||||||
Some(cosmic::app::applet::style())
|
Some(cosmic::app::applet::style())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -412,4 +412,8 @@ impl cosmic::Application for Window {
|
||||||
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
||||||
Some(cosmic::app::applet::style())
|
Some(cosmic::app::applet::style())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::PopupClosed(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -169,6 +169,7 @@ pub(crate) enum Message {
|
||||||
ActivateKnownWifi(String),
|
ActivateKnownWifi(String),
|
||||||
Disconnect(String),
|
Disconnect(String),
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
ToggleAirplaneMode(bool),
|
ToggleAirplaneMode(bool),
|
||||||
ToggleWiFi(bool),
|
ToggleWiFi(bool),
|
||||||
ToggleVisibleNetworks,
|
ToggleVisibleNetworks,
|
||||||
|
|
@ -386,6 +387,11 @@ impl cosmic::Application for CosmicNetworkApplet {
|
||||||
};
|
};
|
||||||
let _ = tx.unbounded_send(NetworkManagerRequest::Disconnect(ssid));
|
let _ = tx.unbounded_send(NetworkManagerRequest::Disconnect(ssid));
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Command::none()
|
Command::none()
|
||||||
}
|
}
|
||||||
|
|
@ -784,4 +790,8 @@ impl cosmic::Application for CosmicNetworkApplet {
|
||||||
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
fn style(&self) -> Option<<Theme as application::StyleSheet>::Style> {
|
||||||
Some(cosmic::app::applet::style())
|
Some(cosmic::app::applet::style())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -84,6 +84,7 @@ impl Notifications {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Message {
|
enum Message {
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
DoNotDisturb(chain::Toggler, bool),
|
DoNotDisturb(chain::Toggler, bool),
|
||||||
Settings,
|
Settings,
|
||||||
Frame(Instant),
|
Frame(Instant),
|
||||||
|
|
@ -296,6 +297,11 @@ impl cosmic::Application for Notifications {
|
||||||
};
|
};
|
||||||
self.update_cards(id);
|
self.update_cards(id);
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
self.update_icon();
|
self.update_icon();
|
||||||
Command::none()
|
Command::none()
|
||||||
|
|
@ -486,6 +492,10 @@ impl cosmic::Application for Notifications {
|
||||||
|
|
||||||
self.core.applet_helper.popup_container(content).into()
|
self.core.applet_helper.popup_container(content).into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo put into libcosmic doing so will fix the row_button's border radius
|
// todo put into libcosmic doing so will fix the row_button's border radius
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ enum Every {
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
enum Message {
|
enum Message {
|
||||||
TogglePopup,
|
TogglePopup,
|
||||||
|
CloseRequested(window::Id),
|
||||||
Tick,
|
Tick,
|
||||||
Rectangle(RectangleUpdate<u32>),
|
Rectangle(RectangleUpdate<u32>),
|
||||||
}
|
}
|
||||||
|
|
@ -163,6 +164,12 @@ impl cosmic::Application for Time {
|
||||||
}
|
}
|
||||||
Command::none()
|
Command::none()
|
||||||
}
|
}
|
||||||
|
Message::CloseRequested(id) => {
|
||||||
|
if Some(id) == self.popup {
|
||||||
|
self.popup = None;
|
||||||
|
}
|
||||||
|
Command::none()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -219,4 +226,8 @@ impl cosmic::Application for Time {
|
||||||
|
|
||||||
self.core.applet_helper.popup_container(content).into()
|
self.core.applet_helper.popup_container(content).into()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn on_close_requested(&self, id: window::Id) -> Option<Message> {
|
||||||
|
Some(Message::CloseRequested(id))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue