fixed switching from fullscreen to window when using different screen sizes
[rocksndiamonds.git] / src / screens.c
index 9de4b55d4bdbddb06d5a1519ff13cf4dfd74151a..30214464c1bd46d791915af73b9c195f3fbd0481 100644 (file)
@@ -1308,6 +1308,14 @@ void DrawTitleScreenMessage(int nr, boolean initial)
   /* force TITLE font on title message screen */
   game_status = getTitleMessageGameMode(initial);
 
+  /* if chars *and* width set to "-1", automatically determine width */
+  if (tmi->chars == -1 && tmi->width == -1)
+    tmi->width = viewport.window[game_status].width;
+
+  /* if lines *and* height set to "-1", automatically determine height */
+  if (tmi->lines == -1 && tmi->height == -1)
+    tmi->height = viewport.window[game_status].height;
+
   /* if chars set to "-1", automatically determine by text and font width */
   if (tmi->chars == -1)
     tmi->chars = tmi->width / getFontWidth(tmi->font);
@@ -1320,6 +1328,14 @@ void DrawTitleScreenMessage(int nr, boolean initial)
   else
     tmi->height = tmi->lines * getFontHeight(tmi->font);
 
+  /* if x set to "-1", automatically determine by width and alignment */
+  if (tmi->x == -1)
+    tmi->x = -1 * ALIGNED_XPOS(0, tmi->width, tmi->align);
+
+  /* if y set to "-1", automatically determine by height and alignment */
+  if (tmi->y == -1)
+    tmi->y = -1 * ALIGNED_YPOS(0, tmi->height, tmi->valign);
+
   SetDrawBackgroundMask(REDRAW_ALL);
   SetWindowBackgroundImage(getTitleBackground(nr, initial, FALSE));
 
@@ -1568,6 +1584,8 @@ void HandleTitleScreen(int mx, int my, int dx, int dy, int button)
       ClearField();
     }
 
+    ChangeViewportPropertiesIfNeeded();
+
     if (tci->is_image)
       DrawTitleScreenImage(tci->local_nr, tci->initial);
     else
@@ -2158,6 +2176,8 @@ static void DrawInfoScreen_Main()
 
   FadeOut(fade_mask);
 
+  ChangeViewportPropertiesIfNeeded();
+
   OpenDoor(GetDoorState() | DOOR_NO_DELAY | DOOR_FORCE_REDRAW);
 
   ClearField();