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