@glassnote/client 2.4.12 → 2.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/main.js +22 -0
  2. package/package.json +2 -2
package/main.js CHANGED
@@ -561,6 +561,7 @@ app.whenReady().then(() => {
561
561
  correccionesDeGeometria = 0;
562
562
  fijarGeometria();
563
563
  }
564
+ reafirmarAlwaysOnTop();
564
565
  aplicarPassthrough({ forzar: true });
565
566
  });
566
567
 
@@ -770,6 +771,27 @@ const REEMISION_QUIETO_MS = 400;
770
771
  // main, sin tocar lo que el renderer cree: cuando el cursor vuelve a entrar se reaplica
771
772
  // su decision tal cual, y desde ahi los eventos reales —que si llegan con la ventana
772
773
  // clickeable— lo ponen al dia.
774
+ // El "siempre encima" se vuelve a pedir en cada show, y no alcanza con pedirlo una vez al
775
+ // arrancar. Electron guarda el nivel de z-order como un estado suyo y solo baja a la API
776
+ // del sistema cuando ESE estado cambia: si Windows le saca el TOPMOST a la ventana por su
777
+ // cuenta, para Electron sigue estando arriba —isAlwaysOnTop() devuelve true— y no vuelve a
778
+ // pedirlo nunca. De ahi el false y despues el true: es la unica forma de forzar que se
779
+ // reemita.
780
+ //
781
+ // Antes esto no se notaba porque cada glass entraba con show(), que ademas de mostrar
782
+ // ACTIVA la ventana, y activarla la sube igual. Al pasar a showInactive() —para no robarle
783
+ // el teclado a lo que estes haciendo— se muestra sin activar, y con eso quedo a la vista
784
+ // que el alwaysOnTop no se estaba reponiendo.
785
+ //
786
+ // En Linux no se toca: ahi el "arriba de todo" es _NET_WM_STATE_ABOVE y quitarlo y ponerlo
787
+ // invita al gestor de ventanas a recolocar la ventana, que es justo lo que costo domar.
788
+ function reafirmarAlwaysOnTop() {
789
+ if (!mainWindow || mainWindow.isDestroyed()) return;
790
+ if (process.platform === 'linux') return;
791
+ mainWindow.setAlwaysOnTop(false);
792
+ mainWindow.setAlwaysOnTop(true, 'screen-saver');
793
+ }
794
+
773
795
  function aplicarPassthrough({ forzar = false } = {}) {
774
796
  if (!mainWindow || mainWindow.isDestroyed()) return;
775
797
  const ignorar = passthroughPedidoPorRenderer || cursorFueraDeLaVentana;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@glassnote/client",
3
- "version": "2.4.12",
3
+ "version": "2.4.13",
4
4
  "description": "GlassNote — cliente de escritorio de notas superpuestas. Se instala con npx, sin instaladores nativos ni firmas.",
5
5
  "main": "main.js",
6
6
  "publishConfig": {
@@ -74,7 +74,7 @@
74
74
  "url": "git+ssh://git@intermarkec/intermarkec/glassnote-electron.git"
75
75
  },
76
76
  "dependencies": {
77
- "@glassnote/renderer": "2.0.11",
77
+ "@glassnote/renderer": "2.0.12",
78
78
  "cors": "^2.8.5",
79
79
  "electron": "^29.4.6",
80
80
  "express": "^4.18.2",