fix(headerbar): double click handling & resize only on press

This commit is contained in:
Ashley Wulber 2026-03-12 11:18:43 -04:00 committed by Ashley Wulber
parent 01f1785af5
commit b28a435b18
5 changed files with 29 additions and 17 deletions

32
Cargo.lock generated
View file

@ -901,7 +901,7 @@ dependencies = [
[[package]]
name = "cosmic-config"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"atomicwrites",
"calloop 0.14.4",
@ -922,7 +922,7 @@ dependencies = [
[[package]]
name = "cosmic-config-derive"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"quote",
"syn",
@ -1000,7 +1000,7 @@ dependencies = [
[[package]]
name = "cosmic-text"
version = "0.18.2"
source = "git+https://github.com/pop-os/cosmic-text.git#b6216ad123814c41c35943390727b4e7146cd143"
source = "git+https://github.com/pop-os/cosmic-text.git#ddad5fb7410e374612925415a13843ed38f14245"
dependencies = [
"bitflags 2.11.0",
"fontdb",
@ -1023,7 +1023,7 @@ dependencies = [
[[package]]
name = "cosmic-theme"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"almost",
"configparser",
@ -2259,7 +2259,7 @@ dependencies = [
[[package]]
name = "iced"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"dnd",
"iced_core",
@ -2278,7 +2278,7 @@ dependencies = [
[[package]]
name = "iced_core"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"bitflags 2.11.0",
"bytes",
@ -2301,7 +2301,7 @@ dependencies = [
[[package]]
name = "iced_debug"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"iced_core",
"iced_futures",
@ -2311,7 +2311,7 @@ dependencies = [
[[package]]
name = "iced_futures"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"futures",
"iced_core",
@ -2324,7 +2324,7 @@ dependencies = [
[[package]]
name = "iced_graphics"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"bitflags 2.11.0",
"bytemuck",
@ -2345,7 +2345,7 @@ dependencies = [
[[package]]
name = "iced_program"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"iced_graphics",
"iced_runtime",
@ -2354,7 +2354,7 @@ dependencies = [
[[package]]
name = "iced_renderer"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"iced_graphics",
"iced_tiny_skia",
@ -2366,7 +2366,7 @@ dependencies = [
[[package]]
name = "iced_runtime"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"bytes",
"dnd",
@ -2380,7 +2380,7 @@ dependencies = [
[[package]]
name = "iced_tiny_skia"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"bytemuck",
"cosmic-text",
@ -2397,7 +2397,7 @@ dependencies = [
[[package]]
name = "iced_wgpu"
version = "0.14.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"as-raw-xcb-connection",
"bitflags 2.11.0",
@ -2428,7 +2428,7 @@ dependencies = [
[[package]]
name = "iced_widget"
version = "0.14.2"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"dnd",
"iced_renderer",
@ -2898,7 +2898,7 @@ checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112"
[[package]]
name = "libcosmic"
version = "1.0.0"
source = "git+https://github.com/pop-os/libcosmic#ff6454248ff0f2ffe889798ef9610a1f8e5384e4"
source = "git+https://github.com/pop-os/libcosmic#01e5593741c7aa7eedf0692c6087ee3fb97feeb8"
dependencies = [
"apply",
"auto_enums",

View file

@ -1130,6 +1130,7 @@ impl Program for CosmicStackInternal {
.to_i32_round();
cursor.y -= TAB_HEIGHT;
let res = shell.menu_request(
false,
&surface,
&seat,
serial,
@ -1172,6 +1173,7 @@ impl Program for CosmicStackInternal {
.to_i32_round();
cursor.y -= TAB_HEIGHT;
let res = shell.menu_request(
false,
&surface,
&seat,
serial,

View file

@ -773,6 +773,7 @@ impl Program for CosmicWindowInternal {
cursor.y -= SSD_HEIGHT;
let res = shell.menu_request(
false,
&surface,
&seat,
serial,
@ -1031,6 +1032,13 @@ impl PointerTarget<State> for CosmicWindow {
let Some(surface) = self.wl_surface().map(Cow::into_owned) else {
return;
};
// Only start a resize if the left button was pressed
if event.state != smithay::backend::input::ButtonState::Pressed
|| event.button != 0x110
{
return;
}
self.0.loop_handle().insert_idle(move |state| {
let res = state.common.shell.write().resize_request(
&surface,

View file

@ -3429,6 +3429,7 @@ impl Shell {
pub fn menu_request(
&self,
is_client_initiated: bool,
surface: &WlSurface,
seat: &Seat<State>,
serial: impl Into<Option<Serial>>,
@ -3439,7 +3440,7 @@ impl Shell {
) -> Option<(MenuGrab, Focus)> {
let serial = serial.into();
let Some(GrabStartData::Pointer(start_data)) =
check_grab_preconditions(seat, serial, Some(surface))
check_grab_preconditions(seat, serial, is_client_initiated.then_some(surface))
else {
return None; // TODO: an application can send a menu request for a touch event
};

View file

@ -368,6 +368,7 @@ impl XdgShellHandler for State {
let shell = self.common.shell.read();
let res = shell.menu_request(
true,
surface.wl_surface(),
&seat,
serial,