Skip to content

Commit 12e2262

Browse files
committed
fix: best tile is the one near the center
1 parent 130872a commit 12e2262

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

Diff for: src/components/window_menu/overriddenWindowMenu.ts

+17-3
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,21 @@ export default class OverriddenWindowMenu extends GObject.Object {
131131
if (vacantTiles.length > 0) {
132132
vacantTiles.sort((a, b) => a.x - b.x);
133133

134-
const middleTileIndex = Math.floor(vacantTiles.length / 2);
134+
let bestTileIndex = 0;
135+
let bestDistance = Math.abs(
136+
0.5 -
137+
vacantTiles[bestTileIndex].x +
138+
vacantTiles[bestTileIndex].width / 2,
139+
);
140+
for (let index = 1; index < vacantTiles.length; index++) {
141+
const distance = Math.abs(
142+
0.5 - (vacantTiles[index].x + vacantTiles[index].width / 2),
143+
);
144+
if (bestDistance > distance) {
145+
bestTileIndex = index;
146+
bestDistance = distance;
147+
}
148+
}
135149

136150
// @ts-expect-error "this is not an instance of OverriddenWindowMenu, but it is the WindowMenu itself"
137151
this.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
@@ -142,14 +156,14 @@ export default class OverriddenWindowMenu extends GObject.Object {
142156
buildMenuWithLayoutIcon(
143157
'Move to best tile',
144158
vacantPopupMenu,
145-
[vacantTiles[middleTileIndex]],
159+
[vacantTiles[bestTileIndex]],
146160
tiles,
147161
hasGaps ? 2 : 0,
148162
);
149163
vacantPopupMenu.connect('activate', () => {
150164
OverriddenWindowMenu.get().emit(
151165
'tile-clicked',
152-
vacantTiles[middleTileIndex],
166+
vacantTiles[bestTileIndex],
153167
window,
154168
);
155169
});

0 commit comments

Comments
 (0)