cleanup(segmented button): popup destruction on press
This commit is contained in:
parent
46c717fd57
commit
e3a4e739e3
1 changed files with 37 additions and 1 deletions
|
|
@ -1661,6 +1661,43 @@ where
|
||||||
state.unfocus();
|
state.unfocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(
|
||||||
|
feature = "multi-window",
|
||||||
|
feature = "wayland",
|
||||||
|
target_os = "linux",
|
||||||
|
feature = "winit",
|
||||||
|
feature = "surface-message"
|
||||||
|
))]
|
||||||
|
if is_pressed(event)
|
||||||
|
&& let Some(on_context) = self.on_context.as_ref()
|
||||||
|
{
|
||||||
|
let (was_open, id) = state.menu_state.inner.with_data_mut(|data| {
|
||||||
|
let was_open = data.open;
|
||||||
|
data.reset();
|
||||||
|
data.open = false;
|
||||||
|
data.view_cursor = cursor_position;
|
||||||
|
let root = data.popup_id.remove(&self.window_id);
|
||||||
|
data.popup_id.clear();
|
||||||
|
(was_open, root)
|
||||||
|
});
|
||||||
|
if let Some(w) = id
|
||||||
|
&& let Some(surface_action) = self.on_surface_action.as_ref()
|
||||||
|
&& was_open
|
||||||
|
{
|
||||||
|
use crate::surface::action::destroy_popup;
|
||||||
|
|
||||||
|
shell.publish((surface_action)(destroy_popup(w)));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(all(
|
||||||
|
feature = "multi-window",
|
||||||
|
feature = "wayland",
|
||||||
|
target_os = "linux",
|
||||||
|
feature = "winit",
|
||||||
|
feature = "surface-message"
|
||||||
|
))]
|
||||||
if let Some(on_activate) = self.on_activate.as_ref() {
|
if let Some(on_activate) = self.on_activate.as_ref() {
|
||||||
if is_pressed(event) {
|
if is_pressed(event) {
|
||||||
state.pressed_item = Some(Item::Tab(key));
|
state.pressed_item = Some(Item::Tab(key));
|
||||||
|
|
@ -1680,7 +1717,6 @@ where
|
||||||
&& (right_button_released(&event)
|
&& (right_button_released(&event)
|
||||||
|| (touch_lifted(&event) && fingers_pressed == 2))
|
|| (touch_lifted(&event) && fingers_pressed == 2))
|
||||||
{
|
{
|
||||||
// TODO create popup
|
|
||||||
state.show_context = Some(key);
|
state.show_context = Some(key);
|
||||||
state.context_cursor = cursor_position.position().unwrap_or_default();
|
state.context_cursor = cursor_position.position().unwrap_or_default();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue