Module: website
Branch: master
Commit: c41ba1ed8a733c1d8b48ed6977515075af2e86f1
URL: http://source.winehq.org/git/website.git/?a=commit;h=c41ba1ed8a733c1d8b48ed…
Author: André Hentschel <nerv(a)dawncrow.de>
Date: Mon Dec 5 17:45:49 2016 +0100
WWN 403: Add Aric's Video
Signed-off-by: André Hentschel <nerv(a)dawncrow.de>
Signed-off-by: Jeremy Newman <jnewman(a)codeweavers.com>
---
wwn/en/wn20161202_403.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/wwn/en/wn20161202_403.xml b/wwn/en/wn20161202_403.xml
index 16c264b..342b28e 100644
--- a/wwn/en/wn20161202_403.xml
+++ b/wwn/en/wn20161202_403.xml
@@ -55,7 +55,7 @@ The expected main areas of development after 2.0 will be Aric’s HID support, t
<p>
Aric Stewart presented his work on supporting the Windows human interface device layer in Wine. This is a low level interface that allows applications to talk to devices like joysticks, keyboards, gamepads, etc. Few applications use it to use joysticks, instead they use higher level libraries like DirectInput or XInput, which then talk to this lower level layer. Wine currently supports DirectInput, so joysticks and gamepads work in many games. Unfortunately XInput is missing. Aric’s plan is to provide the low level hid.dll and (re-)implement dinput and xinput on top of it. This puts all operating system abstraction code (Linux, OSX, Android specific joystick handling) into hid.dll and allows applications that talk directly to hid.dll to work. Those applications are rare, but they exist.
</p><p>
-Aric’s presentation video will be uploaded soon...
+You can see Aric’s <a href="https://youtu.be/VcW_et0GC5Q">full presentation here</a>!
</p><p>
Aric also sent a mail explaining the current status to <a href="https://www.winehq.org/pipermail/wine-devel/2016-November/115142.html">wine-devel</a>:
</p><quote><p>
Module: website
Branch: master
Commit: 779f3804a4ac9507177bd02363c0b3cf3fe42fa0
URL: http://source.winehq.org/git/website.git/?a=commit;h=779f3804a4ac9507177bd0…
Author: Łukasz Wojniłowicz <lukasz.wojnilowicz(a)gmail.com>
Date: Sun Dec 4 08:22:56 2016 +0100
Polish translation for release 1.9.24
Signed-off-by: Jeremy Newman <jnewman(a)codeweavers.com>
---
news/pl/2016112501.xml | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/news/pl/2016112501.xml b/news/pl/2016112501.xml
new file mode 100644
index 0000000..7c710e3
--- /dev/null
+++ b/news/pl/2016112501.xml
@@ -0,0 +1,15 @@
+<news>
+<date>Listopad 25, 2016</date>
+<title>Wydano Wine 1.9.24</title>
+<body>
+<p> Wydanie rozwojowe Wine 1.9.24 jest już dostępne.</p>
+<p> <a href="{$root}/announce/1.9.24">Co nowego</a> w tym wydaniu:
+<ul>
+ <li>Obsługa dla nieuszeregowanych widoków dostępu w Direct3D.</li>
+ <li>Wiele poprawek w testach regresji.</li>
+ <li>Kilka ulepszeń w obsłudze HID.</li>
+ <li>Rozmaite poprawki błędów.</li>
+</ul>
+<p>Źródło jest <a href="//dl.winehq.org/wine/source/1.9/wine-1.9.24.tar.bz2">już dostępne</a>.
+Paczki binarne są w trakcie budowy i ukażą się wkrótce w przeznaczonych dla nich <a href="{$root}/download">pobieralniach</a>.
+</p></body></news>
Module: wine
Branch: master
Commit: 1d3b9448f6dccf642b015359af53e03f295a76cb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1d3b9448f6dccf642b015359a…
Author: Lauri Kenttä <lauri.kentta(a)gmail.com>
Date: Sat Nov 26 18:03:43 2016 +0200
user32: Fix caret disappearing after scrolling.
The caret needs to be moved along with scrolling even if it's
outside the visible area. Otherwise, when the caret is scrolled
out from the view, the position won't get updated anymore and
the caret will never scroll back again.
The idea is based on the patch by André Hentschel.
Signed-off-by: Lauri Kenttä <lauri.kentta(a)gmail.com>
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org>
---
dlls/user32/painting.c | 76 ++++++++++++++++++--------------------------------
1 file changed, 27 insertions(+), 49 deletions(-)
diff --git a/dlls/user32/painting.c b/dlls/user32/painting.c
index 30dabfe..622dcad 100644
--- a/dlls/user32/painting.c
+++ b/dlls/user32/painting.c
@@ -837,65 +837,41 @@ static HWND fix_caret(HWND hWnd, const RECT *scroll_rect, INT dx, INT dy,
{
GUITHREADINFO info;
RECT rect, mapped_rcCaret;
- BOOL hide_caret = FALSE;
info.cbSize = sizeof(info);
if (!GetGUIThreadInfo( GetCurrentThreadId(), &info )) return 0;
if (!info.hwndCaret) return 0;
+ mapped_rcCaret = info.rcCaret;
if (info.hwndCaret == hWnd)
{
- /* Move the caret if it's (partially) in the source rectangle */
- if (IntersectRect(&rect, scroll_rect, &info.rcCaret))
- {
- *move_caret = TRUE;
- hide_caret = TRUE;
- new_caret_pos->x = info.rcCaret.left + dx;
- new_caret_pos->y = info.rcCaret.top + dy;
- }
- else
- {
- *move_caret = FALSE;
-
- /* Hide the caret if it's in the destination rectangle */
- rect = *scroll_rect;
- OffsetRect(&rect, dx, dy);
- hide_caret = IntersectRect(&rect, &rect, &info.rcCaret);
- }
+ /* The caret needs to be moved along with scrolling even if it's
+ * outside the visible area. Otherwise, when the caret is scrolled
+ * out from the view, the position won't get updated anymore and
+ * the caret will never scroll back again. */
+ *move_caret = TRUE;
+ new_caret_pos->x = info.rcCaret.left + dx;
+ new_caret_pos->y = info.rcCaret.top + dy;
}
else
{
- if ((flags & SW_SCROLLCHILDREN) && IsChild(hWnd, info.hwndCaret))
- {
- *move_caret = FALSE;
-
- /* Hide the caret if it's in the source or in the destination
- rectangle */
- mapped_rcCaret = info.rcCaret;
- MapWindowPoints(info.hwndCaret, hWnd, (LPPOINT)&mapped_rcCaret, 2);
-
- if (IntersectRect(&rect, scroll_rect, &mapped_rcCaret))
- {
- hide_caret = TRUE;
- }
- else
- {
- rect = *scroll_rect;
- OffsetRect(&rect, dx, dy);
- hide_caret = IntersectRect(&rect, &rect, &mapped_rcCaret);
- }
- }
- else
+ *move_caret = FALSE;
+ if (!(flags & SW_SCROLLCHILDREN) || !IsChild(hWnd, info.hwndCaret))
return 0;
+ MapWindowPoints(info.hwndCaret, hWnd, (LPPOINT)&mapped_rcCaret, 2);
}
- if (hide_caret)
- {
- HideCaret(info.hwndCaret);
- return info.hwndCaret;
+ /* If the caret is not in the src/dest rects, all is fine done. */
+ if (!IntersectRect(&rect, scroll_rect, &mapped_rcCaret))
+ {
+ rect = *scroll_rect;
+ OffsetRect(&rect, dx, dy);
+ if (!IntersectRect(&rect, &rect, &mapped_rcCaret))
+ return 0;
}
- else
- return 0;
+
+ /* Indicate that the caret needs to be updated during the scrolling. */
+ return info.hwndCaret;
}
@@ -1456,6 +1432,8 @@ static INT scroll_window( HWND hwnd, INT dx, INT dy, const RECT *rect, const REC
DWORD style = GetWindowLongW( hwnd, GWL_STYLE );
hwndCaret = fix_caret(hwnd, &rc, dx, dy, flags, &moveCaret, &newCaretPos);
+ if (hwndCaret)
+ HideCaret(hwndCaret);
if (is_ex) dcxflags |= DCX_CACHE;
if( style & WS_CLIPSIBLINGS) dcxflags |= DCX_CLIPSIBLINGS;
@@ -1555,10 +1533,10 @@ static INT scroll_window( HWND hwnd, INT dx, INT dy, const RECT *rect, const REC
DeleteObject( hrgnWinupd);
}
- if( hwndCaret ) {
- if ( moveCaret ) SetCaretPos( newCaretPos.x, newCaretPos.y );
- ShowCaret(hwndCaret);
- }
+ if( moveCaret )
+ SetCaretPos( newCaretPos.x, newCaretPos.y );
+ if( hwndCaret )
+ ShowCaret( hwndCaret );
if( bOwnRgn && hrgnUpdate ) DeleteObject( hrgnUpdate );