diff --git a/pyprland/plugins/scratchpads/__init__.py b/pyprland/plugins/scratchpads/__init__.py index 737bad1..f186b0e 100644 --- a/pyprland/plugins/scratchpads/__init__.py +++ b/pyprland/plugins/scratchpads/__init__.py @@ -517,13 +517,19 @@ async def get_offsets(self, scratch: Scratch, monitor: MonitorInfo | None = None if offset: return cast(tuple[int, int], (convert_monitor_dimension(offset, ref, monitor) for ref in aspect)) - # compute from client size & margin - margin = scratch.conf.get("margin", DEFAULT_MARGIN) + mon_size = tuple( + int(m / monitor["scale"]) for m in ([monitor["height"], monitor["width"]] if rotated else [monitor["width"], monitor["height"]]) + ) + win_position = apply_offset((monitor["x"], monitor["y"]), scratch.meta.extra_positions[scratch.address]) + win_size = convert_coords(scratch.conf.get("size"), monitor) + scaled = [] - mon_size = [monitor["height"], monitor["width"]] if rotated else [monitor["width"], monitor["height"]] + if get_animation_type(scratch) in ("fromtop", "fromleft"): + for v1, v2 in zip(win_position, win_size, strict=True): + scaled.append(v1 + v2) + else: + scaled = [m - w for m, w in zip(mon_size, win_position, strict=True)] - margins = [convert_monitor_dimension(margin, dim, monitor) for dim in mon_size] - scaled = map(int, [(a + m) / monitor["scale"] for a, m in zip(aspect, margins, strict=False)]) return cast(tuple[int, int], scaled) async def _hide_transition(self, scratch: Scratch, monitor: MonitorInfo) -> bool: diff --git a/pyprland/version.py b/pyprland/version.py index 51bd9a5..b9225b2 100644 --- a/pyprland/version.py +++ b/pyprland/version.py @@ -1,3 +1,3 @@ """Package version.""" -VERSION = "2.4.3-11" +VERSION = "2.4.3-12"