win32 driver guicondigdata work comments.
authorRejean Loyer <redj@ecere.com>
Thu, 16 Oct 2014 05:24:35 +0000 (01:24 -0400)
committerRejean Loyer <redj@ecere.com>
Mon, 16 Mar 2015 05:31:57 +0000 (01:31 -0400)
ecere/src/gui/drivers/Win32Interface.ec

index 9037578..480edd7 100644 (file)
@@ -944,17 +944,129 @@ class Win32Interface : Interface
                window.Destroy(0);
                return 0;
             }
+            /*case WM_GETMINMAXINFO:
+            {
+               MINMAXINFO * mmi = (MINMAXINFO *)lParam;
+               if(window.nativeDecorations)
+               {
+                  WINDOWPLACEMENT place = { 0 };
+                  place.length = sizeof(WINDOWPLACEMENT);
+                  GetWindowPlacement(windowHandle, &place);
+                  if((place.showCmd & SW_SHOWMAXIMIZED) && window.state != maximized)
+                     window.state = maximized;
+                  else if((place.showCmd & SW_SHOWMINIMIZED) && window.state != minimized)
+                     window.state = minimized;
+                  else if((place.showCmd & SW_SHOWNORMAL) && window.state != normal && window.visible)
+                     window.state = normal;
+               }
+               else
+                  return (uint)DefWindowProc(windowHandle, msg, wParam, lParam);
+               break;
+            }*/
+#if 0
+            case WM_WINDOWPOSCHANGED:
+            {
+               if(window.nativeDecorations)
+               {
+                  int x, y, w, h;
+                  WINDOWPOS * pos = (WINDOWPOS *)lParam;
+                  //if((pos->flags & SWP_SHOWWINDOW))
+#if 0
+                  if((pos->flags & 0x800)) // SWP_STATECHANGED
+                  {
+                  WINDOWPLACEMENT place = { 0 };
+                  place.length = sizeof(WINDOWPLACEMENT);
+                  GetWindowPlacement(windowHandle, &place);
+               printf("WM_WINDOWPOSCHANGED: ");
+                  printf("SWP_STATECHANGED (");
+                  if((place.showCmd & SW_SHOWMAXIMIZED))
+                     printf("maximized");
+                  else if((place.showCmd & SW_SHOWMINIMIZED))
+                     printf("minimized");
+                  else if((place.showCmd & SW_SHOWNORMAL))
+                     printf("normal");
+                  printf(") ");
+
+                  /*if((place.showCmd & SW_SHOWMAXIMIZED) && window.state != maximized)
+                     window.state = maximized;
+                  else if((place.showCmd & SW_SHOWMINIMIZED) && window.state != minimized)
+                     window.state = minimized;
+                  else if((place.showCmd & SW_SHOWNORMAL) && window.state != normal && window.visible)
+                     window.state = normal;*/
+               printf("\n");
+                  }
+#endif
+                  if(!(pos->flags & SWP_NOMOVE) || !(pos->flags & SWP_NOSIZE))
+                  {
+                  //RECT rcWindow;
+                  //GetWindowRect(windowHandle, &rcWindow);
+                  WINDOWPLACEMENT place = { 0 };
+                  place.length = sizeof(WINDOWPLACEMENT);
+                  GetWindowPlacement(windowHandle, &place);
+               printf("WM_WINDOWPOSCHANGED: ");
+                  printf("!SWP_NOMOVE || !SWP_NOSIZE (");
+
+                  if(wParam == SIZE_MAXIMIZED && window.state != maximized)
+                     window.state = maximized;
+                  else if(wParam == SIZE_MINIMIZED && window.state != minimized)
+                     window.state = minimized;
+                  else if(wParam == SIZE_RESTORED && window.state != normal && window.visible)
+                     window.state = normal;
+
+                  /*if((place.showCmd & SW_MAXIMIZE) && window.state != maximized)
+                     window.state = maximized;
+                  else if((place.showCmd & SW_MINIMIZE) && window.state != minimized)
+                     window.state = minimized;
+                  else if((place.showCmd & SW_RESTORE) && window.state != normal && window.visible)
+                     window.state = normal;*/
+
+                  //x = rcWindow.left - desktopX;
+                  //y = rcWindow.top  - desktopY;
+                  //w = rcWindow.right - rcWindow.left;
+                  //h = rcWindow.bottom - rcWindow.top;
+                  x = pos->x - desktopX;
+                  y = pos->y  - desktopY;
+                  w = pos->cx;
+                  h = pos->cy;
+                  printf("%d, %d, %d, %d) ", x, y, w, h);
+
+                  AeroSnapPosition(window, x, y, w, h);
+                  if(!(pos->flags & SWP_NOSIZE) && !guiApp.modeSwitching)
+                     window.UpdateVisual(null);
+                  }
+               //printf("\n");
+               }
+               //else
+                  return (uint)DefWindowProc(windowHandle, msg, wParam, lParam);
+               break;
+            }
+#endif
             case WM_MOVE:
             {
                int x, y, w, h;
+               //WINDOWPLACEMENT place = { 0 };
                RECT rcWindow;
+               //place.length = sizeof(WINDOWPLACEMENT);
+               //GetWindowPlacement(windowHandle, &place);
                GetWindowRect(windowHandle, &rcWindow);
 
+#if 0
+               if((place.showCmd & SW_SHOWMAXIMIZED) && window.state != maximized)
+                  window.state = maximized;
+               else if((place.showCmd & SW_SHOWMINIMIZED) && window.state != minimized)
+                  window.state = minimized;
+               else if((place.showCmd & SW_SHOWNORMAL) && window.state != normal && window.visible)
+                  window.state = normal;
+#endif
+
                x = rcWindow.left - desktopX;
                y = rcWindow.top  - desktopY;
                w = rcWindow.right - rcWindow.left;
                h = rcWindow.bottom - rcWindow.top;
 
+               //printf("WM_MOVE - (%d,%d) (%dx%d) (%s) \n", x, y, w, h,
+               //      window.state == maximized ? "maximized" : window.state == minimized ? "minimized" : window.state == normal ? "normal" : "BAD");
+
                AeroSnapPosition(window, x, y, w, h);
                break;
             }
@@ -1026,6 +1138,9 @@ class Win32Interface : Interface
                   w = rcWindow.right - rcWindow.left;
                   h = rcWindow.bottom - rcWindow.top;
 
+                  //printf("WM_SIZE - (%d,%d) (%dx%d) (%s) \n", x, y, w, h,
+                  //      wParam == SIZE_MAXIMIZED ? "SIZE_MAXIMIZED" : wParam == SIZE_MINIMIZED ? "SIZE_MINIMIZED" : wParam == SIZE_RESTORED ? "SIZE_RESTORED" : "BAD");
+
                   AeroSnapPosition(window, x, y, w, h);
                   if(!guiApp.modeSwitching)
                      window.UpdateVisual(null);