Desktop: Ctrl + numpad +/-/0 do not zoom (Electron zoomIn/zoomOut/resetZoom role accelerators match main keyboard only)
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- electron, javascript
- Área
- desktop
Línea de trabajo
Comienza en runtime/src/js/pgadmin.js, en launchPgAdminWindow, y compara su manejo de entradas con los roles de zoom ensamblados en runtime/src/js/menu.js. Ejecuta la compilación de escritorio de Electron y verifica que Ctrl más +, - y 0 del teclado numérico funcionen junto con los atajos existentes del teclado principal; el informe solo se ha probado en Linux Wayland.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
i build pgadmin4 locally on linux, as Electron desktop, from source; it builds/installs ok
Version 9.18
Application Mode Desktop
Commit ecb6446c313b69ec1310b5816178e79040f98a92 (2026-10-02 17:41 +0100)
Python Version 3.14.7
Electron Version 44.4.5
Browser Chrome 152.0.7977.130
Operating System Fedora Linux 44 (Forty Four), Linux-7.2.8-200.fc44.x86_64-x86_64-with-glibc2.43
rpm -qa pgadmin4-electron
pgadmin4-electron-git_master-0.20261004_135416.gitecb6446.fc44.x86_64
on exec of the Desktop runtime,
-- Ctrl + main-keyboard + (=), - and 0 zoom in, zoom out and reset as expected
-- UI View > Zoom In / Zoom Out / Actual Size work from the menu
BUT,
-- Ctrl + numpad +, Ctrl + numpad - and Ctrl + numpad 0 do nothing
checking src,
runtime/src/js/menu.js:169-171
{ role: 'resetZoom' },
{ role: 'zoomIn' },
{ role: 'zoomOut' },
builds the View menu zoom items from Electron menu roles.
electron v44.4.5 hardcodes those roles' accelerators in lib/browser/api/menu-item-roles.ts
resetzoom: accelerator: 'CommandOrControl+0' (line 169)
zoomin: accelerator: 'CommandOrControl+Plus' (line 238)
zoomout: accelerator: 'CommandOrControl+-' (line 246)
electron v44.4.5's accelerator parser, shell/common/keyboard_util.cc, maps those only to main-keyboard keys.
numpad keys are SEPARATE key codes, reachable only through separate tokens; e.g.:
"plus" -> ui::VKEY_OEM_PLUS (line 97, main keyboard)
"numadd" -> ui::VKEY_ADD (line 88)
"numsub" -> ui::VKEY_SUBTRACT (line 93)
"num0" -> ui::VKEY_NUMPAD0 (line 78)
since menu items hold only ONE accelerator, role items can't be edited to ALSO match a numpad key.
a workaround/fix is to handle numpad keys directly in the main window with a before-input-event handler, matched on input.code.
e.g., this works
diff --git a/runtime/src/js/pgadmin.js b/runtime/src/js/pgadmin.js
--- a/runtime/src/js/pgadmin.js
+++ b/runtime/src/js/pgadmin.js
@@ -381,6 +381,23 @@ function launchPgAdminWindow() {
splashWindow.close();
pgAdminMainScreen.webContents.session.clearCache();
+ // Electron's zoomIn/zoomOut/resetZoom menu roles match only the
+ // main-keyboard keys; handle the numpad keys at window level.
+ pgAdminMainScreen.webContents.on('before-input-event', (event, input) => {
+ if (input.type !== 'keyDown' || !(input.control || input.meta)) return;
+ const wc = pgAdminMainScreen.webContents;
+ if (input.code === 'NumpadAdd') {
+ wc.setZoomLevel(wc.getZoomLevel() + 0.5);
+ } else if (input.code === 'NumpadSubtract') {
+ wc.setZoomLevel(wc.getZoomLevel() - 0.5);
+ } else if (input.code === 'Numpad0') {
+ wc.setZoomLevel(0);
+ } else {
+ return;
+ }
+ event.preventDefault();
+ });
+
setupMenu(pgAdminMainScreen, configStore, menuCallbacks);
setupDownloader();
with that patch/build, Ctrl- +/-/0 work BOTH on main keyboard AND numpad.
i've only tested this on Linux/KDE Plasma/Wayland
NOT tested on X11, Windows or macOS.
but iiuc the role accelerators are the same on all platforms, so i'd expect the same behavior on those.
- Lenguaje dominante
- Python
- Estrellas
- 3.9k
- Forks
- 904
- Merge medio
- 1 d 3 h
- PR fusionados (30 d)
- 30
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pgadmin-org/pgadmin4
-
Inherited columns are not removed from a table's Columns tab after removing the parent table from "Inherited from"Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. AbiertoBug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
pgadmin-org/pgadmin4#10470 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
pgadmin-org/pgadmin4#10462 ·
Los mantenedores suelen responder en 1 día
-
Feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pgadmin-org/pgadmin4#10426 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
pgadmin-org/pgadmin4#10424 ·
Los mantenedores suelen responder en 1 día
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pgadmin-org/pgadmin4#10418 ·
Los mantenedores suelen responder en 1 día
Todos los issues de pgadmin-org/pgadmin4
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 3 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
modelcontextprotocol/python-sdk#3648 ·
Los mantenedores suelen responder en 1 día
-
docs good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
VenetoStato/giorgio#6 ·
-
Claiming namespace ddalusAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
EclipseFdn/open-vsx.org#13831 ·
Los mantenedores suelen responder en 1 día
-
feature request
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días