Fix right-click context menus firing their first item on Linux
Bound to <Button-3> with finally: menu.grab_release(), the menu lost its grab immediately and the trailing <ButtonRelease-3> activated the entry under the cursor — right-clicking a history row jumped straight into the edit dialog and deleting was impossible. - RIGHT_CLICK constant: <ButtonRelease-3> (<ButtonRelease-2> on macOS) - history + queue menus built once on self, not per click - drop the premature grab_release() Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,15 @@
|
||||
|
||||
Notable changes to the app. Newest first.
|
||||
|
||||
## 2026-09-07 — fix: right-click context menu instantly triggered its first item
|
||||
|
||||
On Linux the Tab 2 (and queue) right-click menu flashed and immediately ran
|
||||
"Bearbeiten" / "Löschen", so entries couldn't be deleted. Cause: the menu was
|
||||
bound to `<Button-3>` (press) and `finally: menu.grab_release()` dropped the
|
||||
grab, so the following `<ButtonRelease-3>` selected the item under the cursor.
|
||||
Fix: bind `<ButtonRelease-3>` (`<ButtonRelease-2>` on macOS), build each menu
|
||||
once, and drop the premature `grab_release()`.
|
||||
|
||||
## 2026-09-07 — map tiles → Esri (OSM 403s local files)
|
||||
|
||||
The switch to `tiles="OpenStreetMap"` worked on the dev machine but the target
|
||||
|
||||
@@ -57,6 +57,20 @@ Lesson: a tile source that works from `curl` or an `http://` page can still fail
|
||||
from `file://`. Test the map by **opening the generated `karte.html` directly**,
|
||||
not just by checking the URL in the HTML.
|
||||
|
||||
## Tk popup menus: bind `<ButtonRelease-3>`, not `<Button-3>` (2026-09-07)
|
||||
|
||||
`widget.bind("<Button-3>", …)` + `menu.tk_popup(x, y)` + `finally:
|
||||
menu.grab_release()` is the Windows idiom and **misfires on X11**: `tk_popup`
|
||||
returns immediately, `grab_release()` drops the menu's grab, and the pending
|
||||
`<ButtonRelease-3>` then activates whatever entry is under the cursor (the first
|
||||
one). Symptom here: right-click a history row → menu flashes → edit dialog opens.
|
||||
|
||||
Rules for this codebase:
|
||||
- bind the release event: `RIGHT_CLICK` constant (`<ButtonRelease-3>`, or
|
||||
`<ButtonRelease-2>` on macOS),
|
||||
- build each context menu **once** (store on `self`), don't recreate per click,
|
||||
- just call `menu.tk_popup(...)` — no `grab_release()`.
|
||||
|
||||
## Nominatim query order matters
|
||||
|
||||
`geocode_city` returns the **first** hit, trying PLZ-qualified first, then each
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ then save the whole batch at once.
|
||||
as the background geocoder works through the queue.
|
||||
- Select a row and press <kbd>Delete</kbd>, use the **"Auswahl entfernen"**
|
||||
button, or click the `✕` cell.
|
||||
- Right-click a row for *Löschen* / *Koordinaten erneut suchen*.
|
||||
- Right-click a row for *Entfernen* / *Koordinaten erneut suchen*.
|
||||
3. **Action bar**
|
||||
- **Alle speichern** – appends every queued row to `orte.csv`. If any row
|
||||
looks like a duplicate (same date + city + PLZ), a **modal** lists them and
|
||||
|
||||
Reference in New Issue
Block a user