Author: pbartok
Date: 2005-04-19 16:48:31 -0400 (Tue, 19 Apr 2005)
New Revision: 43291

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
Log:
2005-04-19  Peter Bartok  <[EMAIL PROTECTED]>

        * XplatUIX11.cs: Fixed bug introduced with the HWND rewrite, Async
          messages were no longer being processed (this broke BeginInvoke)



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-04-19 20:29:04 UTC (rev 43290)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2005-04-19 20:48:31 UTC (rev 43291)
@@ -1,3 +1,8 @@
+2005-04-19  Peter Bartok  <[EMAIL PROTECTED]>
+
+       * XplatUIX11.cs: Fixed bug introduced with the HWND rewrite, Async
+         messages were no longer being processed (this broke BeginInvoke)
+
 2005-04-18  Jackson Harper  <[EMAIL PROTECTED]>
 
        * TreeView.cs: buglet that caused node images to get drawn

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs    
2005-04-19 20:29:04 UTC (rev 43290)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs    
2005-04-19 20:48:31 UTC (rev 43291)
@@ -236,8 +236,12 @@
                #region Internal Methods
                internal void SetDisplay(IntPtr display_handle) {
                        if (display_handle != IntPtr.Zero) {
+                               Hwnd    hwnd;
+
                                if ((DisplayHandle != IntPtr.Zero) && 
(FosterParent != IntPtr.Zero)) {
+                                       hwnd = 
Hwnd.ObjectFromHandle(FosterParent);
                                        XDestroyWindow(DisplayHandle, 
FosterParent);
+                                       hwnd.Dispose();
                                }
 
                                if (DisplayHandle != IntPtr.Zero) {
@@ -270,6 +274,9 @@
                                        Console.WriteLine("XplatUIX11 
Constructor failed to create FosterParent");
                                }
 
+                               hwnd = new Hwnd();
+                               hwnd.WholeWindow = FosterParent;
+                               hwnd.ClientWindow = FosterParent;
 
                                // For sleeping on the X11 socket
                                listen = new Socket(AddressFamily.InterNetwork, 
SocketType.Stream, ProtocolType.IP);
@@ -2689,7 +2696,7 @@
 
                        xevent.type = XEventName.ClientMessage;
                        xevent.ClientMessageEvent.display = DisplayHandle;
-                       xevent.ClientMessageEvent.window = IntPtr.Zero;
+                       xevent.ClientMessageEvent.window = FosterParent;
                        xevent.ClientMessageEvent.message_type = 
(IntPtr)AsyncAtom;
                        xevent.ClientMessageEvent.format = 32;
                        xevent.ClientMessageEvent.ptr1 = (IntPtr) 
GCHandle.Alloc (method);
@@ -3129,7 +3136,7 @@
                        Hwnd    hwnd;
 
                        hwnd = Hwnd.ObjectFromHandle(handle);
-
+#if true
                        if (!hwnd.visible || hwnd.expose_pending) {
                                return;
                        }
@@ -3141,6 +3148,23 @@
 
                        MessageQueue.Enqueue(xevent);
                        hwnd.expose_pending = true;
+#else
+                       // This would force an immediate paint (SendMessage, 
instead of PostMessage)
+                       if (!hwnd.visible) {
+                               return;
+                       }
+
+                       if (!hwnd.expose_pending) {
+                               xevent = new XEvent();
+                               xevent.type = XEventName.Expose;
+                               xevent.ExposeEvent.display = DisplayHandle;
+                               xevent.ExposeEvent.window = hwnd.client_window;
+
+                               MessageQueue.Enqueue(xevent);
+                               hwnd.expose_pending = true;
+                       }
+                       NativeWindow.WndProc(hwnd.client_window, Msg.WM_PAINT, 
IntPtr.Zero, IntPtr.Zero);
+#endif
                }
                #endregion      // Public Static Methods
 

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to