diff --git a/pyprland/plugins/scratchpads/__init__.py b/pyprland/plugins/scratchpads/__init__.py index 737bad1..1c43bbb 100644 --- a/pyprland/plugins/scratchpads/__init__.py +++ b/pyprland/plugins/scratchpads/__init__.py @@ -507,7 +507,7 @@ async def run_toggle(self, uid_or_uids: str) -> None: await asyncio.gather(*(asyncio.create_task(t()) for t in tasks)) async def get_offsets(self, scratch: Scratch, monitor: MonitorInfo | None = None) -> tuple[int, int]: - """Return offset from config or use margin as a ref.""" + """Return offset from config or computed from window & screen positions.""" offset = scratch.conf.get("offset") if monitor is None: monitor = await get_focused_monitor_props(self.log, name=scratch.forced_monitor) @@ -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..1270c0b 100644 --- a/pyprland/version.py +++ b/pyprland/version.py @@ -1,3 +1,3 @@ """Package version.""" -VERSION = "2.4.3-11" +VERSION = "2.4.3-13"