Ver código fonte

Toggle fullscreen mode fixed

Artur Efimov 6 anos atrás
pai
commit
095ad47512
2 arquivos alterados com 12 adições e 2 exclusões
  1. 6 1
      src/FreeOberon.Mod
  2. 6 1
      src/OV.Mod

+ 6 - 1
src/FreeOberon.Mod

@@ -61,6 +61,7 @@ VAR
   programFinished: BOOLEAN;
   tempWindowed: BOOLEAN; (* True if editor is in windowed mode while program is running *)
   needWindowed: BOOLEAN;
+  blockToggle: BOOLEAN; (* If true, ALT+ENTER will not toggle fullscreen *)
 
   app: OV.App;
 
@@ -297,7 +298,10 @@ BEGIN
   ELSE
     CASE key.code OF
       G.kEnter, G.kEnterPad:
-      IF key.mod * G.mAlt # {} THEN T.ToggleFullscreen
+      IF key.mod * G.mAlt # {} THEN
+        IF blockToggle THEN blockToggle := FALSE
+        ELSE T.ToggleFullscreen; blockToggle := TRUE
+        END
       ELSE T.Ln; WriteToProcess(inputBuf, inputBufLen);
         inputBufLen := 0; buf[0] := 0AX;
         Term.WriteToProcess(buf, 1)
@@ -766,6 +770,7 @@ BEGIN
   IF T.Init(needFullscreen) THEN
     InitIDE;
     needWindowed := TRUE;
+    blockToggle := FALSE;
     success := TRUE
   ELSE Out.String('Terminal init failed.'); Out.Ln
   END;

+ 6 - 1
src/OV.Mod

@@ -650,6 +650,8 @@ VAR
   menuMethod-: ControlMethod;
   quickBtnMethod-: ControlMethod;
 
+  blockToggle: BOOLEAN; (* If true, ALT+ENTER will not toggle fullscreen *)
+
 PROCEDURE DrawAppWindows*(app: App);
 VAR w, br: Control;
 BEGIN
@@ -1865,7 +1867,9 @@ BEGIN handled := FALSE; p := app.cur;
   END;
   IF ~handled THEN
     IF (key.code = G.kEnter) & (key.mod * G.mAlt # {}) THEN
-      T.ToggleFullscreen
+      IF blockToggle THEN blockToggle := FALSE
+      ELSE T.ToggleFullscreen; blockToggle := TRUE
+      END
     ELSIF p # NIL THEN
       IF p.do.keyDown # NIL THEN p.do.keyDown(p, key) END;
       IF (p.parent # NIL) & (p.parent IS Window) &
@@ -1980,6 +1984,7 @@ BEGIN
 END RunApp;
 
 BEGIN
+  blockToggle := FALSE;
   NEW(controlMethod); InitControlMethod(controlMethod);
   NEW(buttonMethod); InitButtonMethod(buttonMethod);
   NEW(winBtnMethod); InitWinBtnMethod(winBtnMethod);