fix: close dropdown menu when focus lost (#986)

* fix: close dropdown menu when focus lost

Signed-off-by: davfsa <davfsa@gmail.com>

* fix: shadow var name to avoid unused lint

Signed-off-by: davfsa <davfsa@gmail.com>

* fix: remove unused argument

Signed-off-by: davfsa <davfsa@gmail.com>

---------

Signed-off-by: davfsa <davfsa@gmail.com>
Co-authored-by: Jas Singh <jaskiratpal.singh@outlook.com>
This commit is contained in:
davfsa
2025-06-14 23:14:58 +02:00
committed by GitHub
parent bfd47dd853
commit 6870dc71cd

View File

@@ -25,11 +25,21 @@ export default ({
name={name} name={name}
namespace={name} namespace={name}
className={`${name} dropdown-menu`} className={`${name} dropdown-menu`}
onKeyPressEvent={(_, event) => { onKeyPressEvent={(self, event) => {
const key = event.get_keyval()[1]; const key = event.get_keyval()[1];
if (key === Gdk.KEY_Escape) { if (key === Gdk.KEY_Escape) {
App.get_window(name)?.set_visible(false); self.visible = false;
}
}}
onFocusOutEvent={(self) => {
self.visible = false;
}}
onButtonPressEvent={(self, event) => {
const buttonClicked = event.get_button()[1];
if (buttonClicked === Gdk.BUTTON_PRIMARY || buttonClicked === Gdk.BUTTON_SECONDARY) {
self.visible = false;
} }
}} }}
visible={false} visible={false}
@@ -48,17 +58,7 @@ export default ({
})} })}
{...props} {...props}
> >
<eventbox <box vertical>
className="parent-event"
onButtonPressEvent={(_, event) => {
const buttonClicked = event.get_button()[1];
if (buttonClicked === Gdk.BUTTON_PRIMARY || buttonClicked === Gdk.BUTTON_SECONDARY) {
App.get_window(name)?.set_visible(false);
}
}}
>
<box className="top-eb" vertical>
{bind(location).as((lcn) => { {bind(location).as((lcn) => {
if (locationMap[lcn] === Astal.WindowAnchor.TOP) { if (locationMap[lcn] === Astal.WindowAnchor.TOP) {
return <BarEventMargins windowName={name} />; return <BarEventMargins windowName={name} />;
@@ -70,10 +70,7 @@ export default ({
onButtonPressEvent={(_, event) => { onButtonPressEvent={(_, event) => {
const buttonClicked = event.get_button()[1]; const buttonClicked = event.get_button()[1];
if ( if (buttonClicked === Gdk.BUTTON_PRIMARY || buttonClicked === Gdk.BUTTON_SECONDARY) {
buttonClicked === Gdk.BUTTON_PRIMARY ||
buttonClicked === Gdk.BUTTON_SECONDARY
) {
return true; return true;
} }
}} }}
@@ -108,7 +105,6 @@ export default ({
return <box />; return <box />;
})} })}
</box> </box>
</eventbox>
</window> </window>
); );
}; };