ecere/ide: Fix for 'Setting isModal = true on a form jams the IDE' (http://ecere...
authorJerome St-Louis <jerome@ecere.com>
Sat, 27 Aug 2011 16:26:03 +0000 (12:26 -0400)
committerJerome St-Louis <jerome@ecere.com>
Sat, 27 Aug 2011 16:26:03 +0000 (12:26 -0400)
ecere/src/gui/Window.ec
ecere/src/gui/drivers/Win32Interface.ec
ecere/src/gui/drivers/XInterface.ec

index 36ffd22..875f145 100644 (file)
@@ -3450,7 +3450,7 @@ private:
             if(activateParent && 
                (parent.activeChild != this || 
                (guiApp.interimWindow && !IsDescendantOf(guiApp.interimWindow))) &&
-               active && style.modal && 
+               active && _isModal &&
                parent != master && master)
                master.ActivateEx(true, true, false, activateRoot, external, externalSwap);
 
@@ -4621,7 +4621,7 @@ private:
 
       // Setup relationship with outside world (bb root || !bb)
       if((!guiApp.fullScreenMode && parent == guiApp.desktop) || this == guiApp.desktop || 
-         (!formDesigner && displayDriver && displayDriver != parent.displayDriver))
+         (_displayDriver && displayDriver != parent.displayDriver))
       {
          rootWindow = this;
          if(!tempExtents)
@@ -4653,7 +4653,7 @@ private:
       bool result = false;
       Window child;
 
-      if((!guiApp.fullScreenMode && parent == guiApp.desktop) || (guiApp.fullScreenMode && (this == guiApp.desktop || (!formDesigner && displayDriver && displayDriver != parent.displayDriver))))
+      if((!guiApp.fullScreenMode && parent == guiApp.desktop) || (guiApp.fullScreenMode && (this == guiApp.desktop || (_displayDriver && displayDriver != parent.displayDriver))))
       {
          subclass(DisplayDriver) dDriver = (dispDriver && !formDesigner) ? dispDriver : GetDisplayDriver(guiApp.defaultDisplayDriver);
          DisplaySystem displaySystem = dDriver ? dDriver.displaySystem : null;
@@ -5375,7 +5375,7 @@ private:
       }
 
       active = false;
-      if(style.modal && master && master.modalSlave == this)
+      if(_isModal && master && master.modalSlave == this)
          master.modalSlave = null;
 
       if(parent)
@@ -5920,7 +5920,7 @@ public:
             property::parent = guiApp.desktop;
          if(!master) master = parent;
 
-         if(style.modal && master.modalSlave)
+         if(_isModal && master.modalSlave)
             property::master = master.modalSlave;
             //return false;
 
@@ -5955,7 +5955,7 @@ public:
          if(!dispDriver)
             dispDriver = parent.dispDriver;
          destroyed = false;
-         if(style.modal)
+         if(_isModal)
             master.modalSlave = this;
 
          box = Box { MAXINT, MAXINT, MININT, MININT }; //-MAXINT, -MAXINT };
@@ -8685,7 +8685,7 @@ public:
                   }
                   parent.Update(box);
                }
-               if(style.modal && master && master.modalSlave == this)
+               if(_isModal && master && master.modalSlave == this)
                   master.modalSlave = null;
 
                if(order)
@@ -8777,7 +8777,7 @@ public:
                if(rootWindow == this)
                   guiApp.interfaceDriver.SetRootWindowState(this, state, true);
 
-               if(style.modal && master)
+               if(_isModal && master)
                   master.modalSlave = this;
 
                if(style.isActiveClient)
@@ -9314,6 +9314,10 @@ private:
       bool formDesigner:1; // True if we this is running in the form editor
    }; 
 
+   // Checks used internally for them not to take effect in FormDesigner
+   property bool _isModal        { get { return !formDesigner ? style.modal : false; } }
+   property bool _displayDriver  { get { return !formDesigner ? displayDriver : null; } }
+
    WindowController controller;
    public property WindowController controller { get { return controller; } set { delete controller; controller = value; if(controller) incref controller; } }
 };
index 5b56824..3afa3c9 100644 (file)
@@ -1333,7 +1333,7 @@ class Win32Interface : Interface
          if(window.style.stayOnTop)
             exStyle |= WS_EX_TOPMOST;
 
-         if(rootWindow && (window.style.modal || window.style.interim))
+         if(rootWindow && (window._isModal || window.style.interim))
             parentWindow = rootWindow.is3D ? rootWindow.parent.windowHandle : rootWindow.windowHandle;
             
          if(window.alphaBlend)
index db6c243..0851101 100644 (file)
@@ -1928,7 +1928,7 @@ class XInterface : Interface
          {
             X11Window parentWindow = (uint)null;
 
-            if(window.master.rootWindow && window.master.rootWindow != guiApp.desktop && (window.style.modal || window.style.interim))
+            if(window.master.rootWindow && window.master.rootWindow != guiApp.desktop && (window._isModal || window.style.interim))
             {
                Window master = window.master;
                Window rootWindow = master.rootWindow;