Jeff Richardson wrote: > This patch adds support for certain controls to respond to WM_HSCROLL > and WM_VSCROLL messages to allow them to be scrolled programatically. > I've implemented this for every control in which both contains an > instance of ImplicitVScrollBar and ImplicitHScrollBar and have the > corresponding .NET type respond to sending the WM_HSCROLL and WM_VSCROLL > messages, with the exception of MdiClient (I'm unsure exactly how to > test that). > >
* The patch breaks the compilation as you are not adding the ScrollType file to the list of sources in System.Windows.Forms.dll.sources * The ScrollType enum is redundant - we already have it as ScrollBarCommands in XplatUIStructs Index: System.Windows.Forms/ScrollType.cs =================================================================== --- System.Windows.Forms/ScrollType.cs (revision 0) +++ System.Windows.Forms/ScrollType.cs (revision 0) @@ -0,0 +1,10 @@ +namespace System.Windows.Forms{ + internal enum ScrollType{ + SB_LINEUP = 0, + SB_LINEDOWN = 1, + SB_PAGEUP = 2, + SB_PAGEDOWN = 3, + SB_TOP = 6, + SB_BOTTOM = 7, + } +} Commenting out the SendWMScroll method basically breaks scrolling completely. I don't know if and how you've tested your patch. Unlike WinForms on MSNET/Win32 our scrollbars are custom controls and they don't automagically fire WM_?SCROLL messages somewhere down the native code pipe, so by commenting out the method we won't ever send/receive WM_?SCROLL. --- System.Windows.Forms/ScrollBar.cs (revision 109230) +++ System.Windows.Forms/ScrollBar.cs (working copy) @@ -668,6 +668,12 @@ } private void SendWMScroll(ScrollBarCommands cmd) { + // Since the WM_?SCROLL messages actually trigger + // scrolling a control at the same time as the + // control responds to the ScrollBar events, + // having the ScrollBar send the WM_?SCROLL event + // tends to cause a double scroll. + /* if ((Parent != null) && Parent.IsHandleCreated) { if (vert) { XplatUI.SendMessage(Parent.Handle, Msg.WM_VSCROLL, (IntPtr)cmd, implicit_control ? IntPtr.Zero : Handle); @@ -675,6 +681,7 @@ XplatUI.SendMessage(Parent.Handle, Msg.WM_HSCROLL, (IntPtr)cmd, implicit_control ? IntPtr.Zero : Handle); } } + */ } * A minor coding style issue is the lack of space prior to the opening ( in most of the method definition. The rest of the patch seems alright. It's very unfortunate that we have to do this for each control though. Please send a revised patch, thanks. -- Kind Regards, Ivan N. Zlatev Web: http://www.i-nZ.net "It's all some kind of whacked out conspiracy." _______________________________________________ Mono-winforms-list maillist - Mono-winforms-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-winforms-list