Browse Source

On return to IDE screen resize IDEapp if needed (Unix).

Margers 11 months ago
parent
commit
8ff73efe32
1 changed files with 14 additions and 2 deletions
  1. 14 2
      packages/ide/fpide.pas

+ 14 - 2
packages/ide/fpide.pas

@@ -1452,6 +1452,7 @@ end;
 
 
 
 
 procedure TIDEApp.ShowIDEScreen;
 procedure TIDEApp.ShowIDEScreen;
+var oldH,oldW : byte;
 begin
 begin
   if Assigned(UserScreen) then
   if Assigned(UserScreen) then
     UserScreen^.SaveConsoleScreen;
     UserScreen^.SaveConsoleScreen;
@@ -1461,6 +1462,8 @@ begin
     InitMouse
     InitMouse
   else
   else
     ButtonCount:=0;
     ButtonCount:=0;
+  oldH:=ScreenHeight;
+  oldW:=ScreenWidth;
 {$ifndef go32v2}
 {$ifndef go32v2}
   initvideo;
   initvideo;
 {$endif ndef go32v2}
 {$endif ndef go32v2}
@@ -1475,14 +1478,23 @@ begin
   InitSysError;
   InitSysError;
   CurDirChanged;
   CurDirChanged;
 {$ifndef Windows}
 {$ifndef Windows}
-  Message(Application,evBroadcast,cmUpdate,nil);
+  if (oldH<>ScreenHeight) or (oldW<>ScreenWidth) then
+  begin
+    { acknowledge new screen dimensions } 
+    { prevents to draw out of boundaries of new video buffer }
+    ResizeApplication(ScreenWidth,ScreenHeight);
+  end else
+    Message(Application,evBroadcast,cmUpdate,nil);
 {$endif Windows}
 {$endif Windows}
 {$ifdef Windows}
 {$ifdef Windows}
   // WindowsShowMouse;
   // WindowsShowMouse;
 {$endif Windows}
 {$endif Windows}
 
 
   if Assigned(UserScreen) then
   if Assigned(UserScreen) then
-    UserScreen^.SwitchBackToIDEScreen;
+{$ifdef unix}
+    if (oldH=ScreenHeight) and (oldW=ScreenWidth) then
+{$endif unix}
+      UserScreen^.SwitchBackToIDEScreen;
 {$ifdef Windows}
 {$ifdef Windows}
   { This message was sent when the VideoBuffer was smaller
   { This message was sent when the VideoBuffer was smaller
     than was the IdeApp thought => writes to random memory and random crashes... PM }
     than was the IdeApp thought => writes to random memory and random crashes... PM }