Преглед изворни кода

synchronized with original

Alexander Shiryaev пре 8 година
родитељ
комит
00db70416b
2 измењених фајлова са 10 додато и 15 уклоњено
  1. 10 15
      BlackBox/Po/Files/TextFrames.Mod.txt
  2. BIN
      BlackBox/Po/Mod/TextFrames.odc

+ 10 - 15
BlackBox/Po/Files/TextFrames.Mod.txt

@@ -1,4 +1,4 @@
-MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 1.6.20165*)
+MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 11.2.2017*)
   IMPORT Modules, Input, Display, Viewers, Fonts, Texts, Oberon, MenuViewers;
 
   CONST replace* = 0; insert* = 1; delete* = 2; unmark* = 3; (*message id*)
@@ -53,9 +53,8 @@ MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 1.6.20165*)
     W, KW: Texts.Writer; (*keyboard writer*)
 
   PROCEDURE Min (i, j: INTEGER): INTEGER;
-    VAR m: INTEGER;
-  BEGIN IF i >= j THEN m := j ELSE m := i END ;
-    RETURN m
+  BEGIN IF i < j THEN j := i END ;
+    RETURN j
   END Min;
 
   (*------------------display support------------------------*)
@@ -326,10 +325,8 @@ MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 1.6.20165*)
 
   PROCEDURE FlipCaret (F: Frame);
   BEGIN
-    IF F.carloc.x < F.W THEN
-      IF (F.carloc.y >= 10) & (F.carloc.x + 12 < F.W) THEN
-        Display.CopyPattern(Display.white, Display.hook, F.X + F.carloc.x, F.Y + F.carloc.y - 10, Display.invert)
-      END
+    IF (F.carloc.x < F.W) & (F.carloc.y >= 10) & (F.carloc.x + 12 < F.W) THEN
+      Display.CopyPattern(Display.white, Display.hook, F.X + F.carloc.x, F.Y + F.carloc.y - 10, Display.invert)
     END
   END FlipCaret;
 
@@ -342,8 +339,7 @@ MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 1.6.20165*)
   BEGIN
     IF F.trailer.next # F.trailer THEN
       LocateChar(F, X - F.X, Y - F.Y, F.carloc);
-    FlipCaret(F);
-      keysum := {};
+      FlipCaret(F); keysum := {};
       REPEAT Input.Mouse(keys, X, Y); keysum := keysum + keys;
         Oberon.DrawMouseArrow(X, Y); LocateChar(F, X - F.X, Y - F.Y, loc);
         IF loc.pos # F.carloc.pos THEN FlipCaret(F); F.carloc := loc; FlipCaret(F) END
@@ -692,12 +688,11 @@ MODULE TextFrames; (*JG 8.10.90 / NW 10.5.2013 / 1.6.20165*)
   PROCEDURE GetSelection* (F: Frame; VAR text: Texts.Text; VAR beg, end, time: LONGINT);
   BEGIN
     IF F.hasSel THEN
-      IF F.time > time THEN
+      IF F.text = text THEN
+        IF F.selbeg.pos < beg THEN beg := F.selbeg.pos END ;  (*leftmost*)
+        IF F.time > time THEN end := F.selend.pos; time := F.time END ; (*last selected*)
+      ELSIF F.time > time THEN
         text := F.text; beg := F.selbeg.pos; end := F.selend.pos; time := F.time
-      ELSIF F.text = text THEN
-        IF (F.time < time) & (F.selbeg.pos < beg) THEN beg := F.selbeg.pos
-          ELSIF (F.time > time) & (F.selend.pos > end) THEN end := F.selend.pos; time := F.time
-        END
       END
     END
   END GetSelection;

BIN
BlackBox/Po/Mod/TextFrames.odc