فهرست منبع

Fixed bug 3202 - Fix renderer visibility on a window maximized directly from the minimized state

Many thanks to id.zeta for details on the bug, and for the fix!
David Ludwig 10 سال پیش
والد
کامیت
9e9ef5ad31
2فایلهای تغییر یافته به همراه4 افزوده شده و 1 حذف شده
  1. 2 0
      src/events/SDL_windowevents.c
  2. 2 1
      src/render/SDL_render.c

+ 2 - 0
src/events/SDL_windowevents.c

@@ -127,6 +127,7 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
         if (window->flags & SDL_WINDOW_MINIMIZED) {
         if (window->flags & SDL_WINDOW_MINIMIZED) {
             return 0;
             return 0;
         }
         }
+        window->flags &= ~SDL_WINDOW_MAXIMIZED;
         window->flags |= SDL_WINDOW_MINIMIZED;
         window->flags |= SDL_WINDOW_MINIMIZED;
         SDL_OnWindowMinimized(window);
         SDL_OnWindowMinimized(window);
         break;
         break;
@@ -134,6 +135,7 @@ SDL_SendWindowEvent(SDL_Window * window, Uint8 windowevent, int data1,
         if (window->flags & SDL_WINDOW_MAXIMIZED) {
         if (window->flags & SDL_WINDOW_MAXIMIZED) {
             return 0;
             return 0;
         }
         }
+        window->flags &= ~SDL_WINDOW_MINIMIZED;
         window->flags |= SDL_WINDOW_MAXIMIZED;
         window->flags |= SDL_WINDOW_MAXIMIZED;
         break;
         break;
     case SDL_WINDOWEVENT_RESTORED:
     case SDL_WINDOWEVENT_RESTORED:

+ 2 - 1
src/render/SDL_render.c

@@ -158,7 +158,8 @@ SDL_RendererEventWatch(void *userdata, SDL_Event *event)
                 }
                 }
             } else if (event->window.event == SDL_WINDOWEVENT_MINIMIZED) {
             } else if (event->window.event == SDL_WINDOWEVENT_MINIMIZED) {
                 renderer->hidden = SDL_TRUE;
                 renderer->hidden = SDL_TRUE;
-            } else if (event->window.event == SDL_WINDOWEVENT_RESTORED) {
+            } else if (event->window.event == SDL_WINDOWEVENT_RESTORED || 
+                       event->window.event == SDL_WINDOWEVENT_MAXIMIZED) {
                 if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_HIDDEN)) {
                 if (!(SDL_GetWindowFlags(window) & SDL_WINDOW_HIDDEN)) {
                     renderer->hidden = SDL_FALSE;
                     renderer->hidden = SDL_FALSE;
                 }
                 }