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

Reply via email to