Rendering problem when scrolling license agreement in Picasa
installer
Rein Klazes
wijn at wanadoo.nl
Mon Sep 26 08:03:30 CDT 2005
On Sun, 18 Sep 2005 14:03:39 -0700, you wrote:
>http://bugs.winehq.org/show_bug.cgi?id=3348
>describes a scrolling problem that is probably pretty
>easy to fix.
>
>The nullsoft(?) installer used by picasa 2
>seems to have a problem with text scrolling
>in the latest snapshot of wine. Scrolling
>using the keyboard works, but scrolling by
>clicking on the arrows of the scrollbar
>screws up the new text.
>
>I have a sneaking suspicion this affects other
>apps. Is this a known problem already?
Bug in riched20.dll: the window is repainted before the internal state
of the control is updated.
Change log:
dlls/riched20 : editor.c
When scrolling, first update the new position of the control before
calling UpdateWindow().
Rein.
-------------- next part --------------
--- wine/dlls/riched20/editor.c 2005-09-20 10:46:42.000000000 +0200
+++ mywine/dlls/riched20/editor.c 2005-09-26 10:04:38.000000000 +0200
@@ -1097,7 +1097,7 @@ LRESULT WINAPI RichEditANSIWndProc(HWND
SCROLLINFO si;
ME_TextEditor *editor = (ME_TextEditor *)GetWindowLongW(hWnd, 0);
- TRACE("hWnd %p msg %d (%s) %08x %08lx\n",
+ TRACE("hWnd %p msg %04x (%s) %08x %08lx\n",
hWnd, msg, get_msg_name(msg), wParam, lParam);
switch(msg) {
@@ -1359,13 +1359,14 @@ LRESULT WINAPI RichEditANSIWndProc(HWND
if (nPos<0)
nPos = 0;
if (nPos != editor->nScrollPosY) {
+ int dy = editor->nScrollPosY - nPos;
+ editor->nScrollPosY = nPos;
+ SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
if (editor->bRedraw)
{
- ScrollWindow(hWnd, 0, editor->nScrollPosY-nPos, NULL, NULL);
- SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
+ ScrollWindow(hWnd, 0, dy, NULL, NULL);
UpdateWindow(hWnd);
}
- editor->nScrollPosY = nPos;
}
return TRUE; /* Should return false if a single line richedit control */
}
@@ -1849,13 +1850,14 @@ LRESULT WINAPI RichEditANSIWndProc(HWND
break;
}
if (nPos != editor->nScrollPosY) {
+ int dy = editor->nScrollPosY - nPos;
+ editor->nScrollPosY = nPos;
+ SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
if (editor->bRedraw)
{
- ScrollWindow(hWnd, 0, editor->nScrollPosY-nPos, NULL, NULL);
- SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
+ ScrollWindow(hWnd, 0, dy, NULL, NULL);
UpdateWindow(hWnd);
}
- editor->nScrollPosY = nPos;
}
break;
}
@@ -1872,13 +1874,14 @@ LRESULT WINAPI RichEditANSIWndProc(HWND
if (nPos<0)
nPos = 0;
if (nPos != editor->nScrollPosY) {
+ int dy = editor->nScrollPosY - nPos;
+ editor->nScrollPosY = nPos;
+ SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
if (editor->bRedraw)
{
- ScrollWindow(hWnd, 0, editor->nScrollPosY-nPos, NULL, NULL);
- SetScrollPos(hWnd, SB_VERT, nPos, TRUE);
+ ScrollWindow(hWnd, 0, dy, NULL, NULL);
UpdateWindow(hWnd);
}
- editor->nScrollPosY = nPos;
}
break;
}
-------------- next part --------------
More information about the wine-patches
mailing list