Browse Source

* fix win32 scrolling
+ always go back to 0,0 position in IDE mode

pierre 24 years ago
parent
commit
0fea285e15
1 changed files with 19 additions and 3 deletions
  1. 19 3
      ide/fpusrscr.pas

+ 19 - 3
ide/fpusrscr.pas

@@ -667,9 +667,9 @@ var
 begin
 begin
   GetConsoleScreenBufferInfo(DosScreenBufferHandle,
   GetConsoleScreenBufferInfo(DosScreenBufferHandle,
     @ConsoleScreenBufferInfo);
     @ConsoleScreenBufferInfo);
-  if (ConsoleScreenBufferInfo.srWindow.Top + i >= 0) then
+  if (ConsoleScreenBufferInfo.srWindow.Top + i < 0) then
     i:= -ConsoleScreenBufferInfo.srWindow.Top;
     i:= -ConsoleScreenBufferInfo.srWindow.Top;
-  if (ConsoleScreenBufferInfo.srWindow.Bottom + i <= ConsoleScreenBufferInfo.dwSize.Y) then
+  if (ConsoleScreenBufferInfo.srWindow.Bottom + i > ConsoleScreenBufferInfo.dwSize.Y) then
     i:= ConsoleScreenBufferInfo.dwSize.Y - ConsoleScreenBufferInfo.srWindow.Bottom;
     i:= ConsoleScreenBufferInfo.dwSize.Y - ConsoleScreenBufferInfo.srWindow.Bottom;
   if i<>0 then
   if i<>0 then
     begin
     begin
@@ -839,11 +839,23 @@ begin
 end;
 end;
 
 
 procedure TWin32Screen.SwitchBackToIDEScreen;
 procedure TWin32Screen.SwitchBackToIDEScreen;
+var
+  ConsoleScreenBufferInfo : Console_screen_buffer_info;
+  WindowPos : Small_rect;
 begin
 begin
+  GetConsoleScreenBufferInfo(IDEScreenBufferHandle,
+    @ConsoleScreenBufferInfo);
   SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
   SetConsoleActiveScreenBuffer(IDEScreenBufferHandle);
   SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle);
   SetStdHandle(Std_Output_Handle,IDEScreenBufferHandle);
   IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT) and not ENABLE_PROCESSED_INPUT;
   IdeMode:=(IdeMode or ENABLE_MOUSE_INPUT) and not ENABLE_PROCESSED_INPUT;
   SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
   SetConsoleMode(GetStdHandle(Std_Input_Handle), IdeMode);
+  WindowPos.left:=0;
+  WindowPos.right:=ConsoleScreenBufferInfo.srWindow.right
+                   -ConsoleScreenBufferInfo.srWindow.left;
+  WindowPos.top:=0;
+  WindowPos.bottom:=ConsoleScreenBufferInfo.srWindow.bottom
+                   -ConsoleScreenBufferInfo.srWindow.top;
+  SetConsoleWindowInfo(IDEScreenBufferHandle,true,WindowPos);
   IDEActive:=true;
   IDEActive:=true;
 end;
 end;
 
 
@@ -886,7 +898,11 @@ end;
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.5  2001-11-08 16:07:41  pierre
+  Revision 1.6  2001-11-08 16:38:25  pierre
+    * fix win32 scrolling
+    + always go back to 0,0 position in IDE mode
+
+  Revision 1.5  2001/11/08 16:07:41  pierre
    * overcome buffer win32 problem due to a bug in ReadConsoleOutput
    * overcome buffer win32 problem due to a bug in ReadConsoleOutput
 
 
   Revision 1.4  2001/10/24 14:17:27  pierre
   Revision 1.4  2001/10/24 14:17:27  pierre