mirror of
https://github.com/swaywm/sway.git
synced 2025-11-26 06:59:59 -05:00
Merge pull request #2772 from RyanDwyer/improve-popup-damage
Only damage popups when popups have damage
This commit is contained in:
commit
4bebee620f
4 changed files with 80 additions and 9 deletions
|
|
@ -20,6 +20,17 @@
|
|||
|
||||
static const struct sway_view_child_impl popup_impl;
|
||||
|
||||
static void popup_get_root_coords(struct sway_view_child *child,
|
||||
int *root_sx, int *root_sy) {
|
||||
struct sway_xdg_popup *popup = (struct sway_xdg_popup *)child;
|
||||
struct wlr_xdg_surface *surface = popup->wlr_xdg_surface;
|
||||
|
||||
wlr_xdg_popup_get_toplevel_coords(surface->popup,
|
||||
-surface->geometry.x + surface->popup->geometry.x,
|
||||
-surface->geometry.y + surface->popup->geometry.y,
|
||||
root_sx, root_sy);
|
||||
}
|
||||
|
||||
static void popup_destroy(struct sway_view_child *child) {
|
||||
if (!sway_assert(child->impl == &popup_impl,
|
||||
"Expected an xdg_shell popup")) {
|
||||
|
|
@ -32,6 +43,7 @@ static void popup_destroy(struct sway_view_child *child) {
|
|||
}
|
||||
|
||||
static const struct sway_view_child_impl popup_impl = {
|
||||
.get_root_coords = popup_get_root_coords,
|
||||
.destroy = popup_destroy,
|
||||
};
|
||||
|
||||
|
|
@ -85,6 +97,9 @@ static struct sway_xdg_popup *popup_create(
|
|||
wl_signal_add(&xdg_surface->events.destroy, &popup->destroy);
|
||||
popup->destroy.notify = popup_handle_destroy;
|
||||
|
||||
wl_signal_add(&xdg_surface->events.map, &popup->child.surface_map);
|
||||
wl_signal_add(&xdg_surface->events.unmap, &popup->child.surface_unmap);
|
||||
|
||||
popup_unconstrain(popup);
|
||||
|
||||
return popup;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue