The [1] patch brings some regression. I have filled a bugreport: [2].
Here are two png screenshots: [3] [4], one made before the patch is applied, another made after the patch is applied.
[1] http://www.winehq.org/hypermail/wine-cvs/2004/08/0341.html [2] http://bugs.winehq.org/show_bug.cgi?id=2454 [3] http://bugs.winehq.org/attachment.cgi?id=681&action=view [4] http://bugs.winehq.org/attachment.cgi?id=682&action=view
Yes this is very annoying. I noticed it last night when taking another look at winecfg.
Another regression I noticed is that sometimes child windows are offset by about 3-4 pixels to the top/left. For instance the white part of the edit control looks like it's "popped out" of the bevelled edges. Also the dialogs embedded in the property sheet sometimes pop out of the sheet.
I can ignore this for now, it's just a visual problem. The listview problem is somewhat more troublesome so if there's a workaround I can memorize (no net connection on my laptop!) that'd be good.
Saulius Krasuckas wrote:
The [1] patch brings some regression. I have filled a bugreport: [2].
Here are two png screenshots: [3] [4], one made before the patch is applied, another made after the patch is applied.
[1] http://www.winehq.org/hypermail/wine-cvs/2004/08/0341.html [2] http://bugs.winehq.org/show_bug.cgi?id=2454 [3] http://bugs.winehq.org/attachment.cgi?id=681&action=view [4] http://bugs.winehq.org/attachment.cgi?id=682&action=view
On Tue, 31 Aug 2004 00:38:30 +0200 (EET), you wrote:
The [1] patch brings some regression. I have filled a bugreport: [2].
Here are two png screenshots: [3] [4], one made before the patch is applied, another made after the patch is applied.
[1] http://www.winehq.org/hypermail/wine-cvs/2004/08/0341.html [2] http://bugs.winehq.org/show_bug.cgi?id=2454 [3] http://bugs.winehq.org/attachment.cgi?id=681&action=view [4] http://bugs.winehq.org/attachment.cgi?id=682&action=view
Well, Pegasus Mail has the same problem with lists. And it is fatal: no mail in any mailbox is visible.
The configuration dialog of Agent news reader has yet another problem, disappearing buttons:
http://home.wanadoo.nl/wijn/tmp/shot1.png before http://home.wanadoo.nl/wijn/tmp/shot2.png after
Rein.
Rein Klazes rklazes@xs4all.nl writes:
Well, Pegasus Mail has the same problem with lists. And it is fatal: no mail in any mailbox is visible.
The configuration dialog of Agent news reader has yet another problem, disappearing buttons:
http://home.wanadoo.nl/wijn/tmp/shot1.png before http://home.wanadoo.nl/wijn/tmp/shot2.png after
Does this help?
Index: dlls/x11drv/winpos.c =================================================================== RCS file: /opt/cvs-commit/wine/dlls/x11drv/winpos.c,v retrieving revision 1.98 diff -u -p -r1.98 winpos.c --- dlls/x11drv/winpos.c 24 Aug 2004 18:49:34 -0000 1.98 +++ dlls/x11drv/winpos.c 1 Sep 2004 01:03:45 -0000 @@ -416,21 +416,33 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, H
if (top != hwnd) { + /* find the top most parent that doesn't clip siblings */ + HWND clipping_parent = 0; + HWND *list = WIN_ListParents( hwnd ); + if (list) + { + int i; + for (i = 0; list[i] != top; i++) + { + LONG style = GetWindowLongW( list[i], GWL_STYLE ); + if (!(style & WS_CLIPSIBLINGS)) clipping_parent = list[i]; + } + HeapFree( GetProcessHeap(), 0, list ); + } + if (clipping_parent) clipping_parent = GetAncestor( clipping_parent, GA_PARENT ); + else if (!(flags & DCX_CLIPSIBLINGS)) clipping_parent = GetAncestor( hwnd, GA_PARENT ); + else clipping_parent = hwnd; + + escape.org.x = escape.org.y = 0; escape.drawable_org.x = escape.drawable_org.y = 0; - if (flags & (DCX_WINDOW|DCX_PARENTCLIP)) + if (flags & DCX_WINDOW) { escape.org.x = win->rectWindow.left - win->rectClient.left; escape.org.y = win->rectWindow.top - win->rectClient.top; - MapWindowPoints( hwnd, top, &escape.org, 1 ); - MapWindowPoints( top, 0, &escape.drawable_org, 1 ); - escape.drawable = X11DRV_get_client_window( top ); - } - else - { - escape.org.x = escape.org.y = 0; - MapWindowPoints( hwnd, 0, &escape.drawable_org, 1 ); - escape.drawable = X11DRV_get_client_window( hwnd ); } + MapWindowPoints( hwnd, clipping_parent, &escape.org, 1 ); + MapWindowPoints( clipping_parent, 0, &escape.drawable_org, 1 ); + escape.drawable = X11DRV_get_client_window( clipping_parent ); } else {
On Tue, 31 Aug 2004, Alexandre Julliard wrote:
Does this help?
Index: dlls/x11drv/winpos.c
Yes, the patch helps in my case. Thanks.
On Tue, 31 Aug 2004 18:10:22 -0700, you wrote:
Rein Klazes rklazes@xs4all.nl writes:
Well, Pegasus Mail has the same problem with lists. And it is fatal: no mail in any mailbox is visible.
The configuration dialog of Agent news reader has yet another problem, disappearing buttons:
http://home.wanadoo.nl/wijn/tmp/shot1.png before http://home.wanadoo.nl/wijn/tmp/shot2.png after
Does this help?
[patch]
Thank you, both problems are gone now.
Rein.
On Wed, 01 Sep 2004 12:45:16 +0200, you wrote:
On Tue, 31 Aug 2004 18:10:22 -0700, you wrote:
Rein Klazes rklazes@xs4all.nl writes:
Well, Pegasus Mail has the same problem with lists. And it is fatal: no mail in any mailbox is visible.
The configuration dialog of Agent news reader has yet another problem, disappearing buttons:
http://home.wanadoo.nl/wijn/tmp/shot1.png before http://home.wanadoo.nl/wijn/tmp/shot2.png after
Does this help?
[patch]
Thank you, both problems are gone now.
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
Rein.
Rein Klazes wrote:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
I don't know why that only showed up now, but I have a workaround that I have been using for a long time on another MDI app with this problem, and it seems to also fix the current problem with Pegasus.
Index: dlls/x11drv/winpos.c =================================================================== RCS file: /home/wine/wine/dlls/x11drv/winpos.c,v retrieving revision 1.98 diff -u -r1.98 winpos.c --- dlls/x11drv/winpos.c 24 Aug 2004 18:49:34 -0000 1.98 +++ dlls/x11drv/winpos.c 1 Sep 2004 16:00:19 -0000 @@ -1364,8 +1367,7 @@
if (!(win = WIN_GetPtr( hwnd ))) return;
- if ((win->dwStyle & WS_VISIBLE) && - (win->dwStyle & WS_MINIMIZE) && + if ((win->dwStyle & WS_MINIMIZE) && (win->dwExStyle & WS_EX_MANAGED)) { int x, y; @@ -1392,7 +1394,10 @@ WIN_SetStyle( hwnd, style ); WIN_ReleasePtr( win );
- SendMessageA( hwnd, WM_SHOWWINDOW, SW_RESTORE, 0 ); + /* The SW_SHOW is needed if WS_VISIBLE is false. It will trigger + X11DRV_ShowWindow, and pass the SW_SHOW parameter. Otherwise, it + does not hurt anything. */ + SendMessageA( hwnd, WM_SHOWWINDOW, SW_RESTORE, SW_SHOW ); SetWindowPos( hwnd, 0, rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, SWP_NOZORDER | SWP_WINE_NOHOSTMOVE ); }
On Wed, 01 Sep 2004 09:06:27 -0700, you wrote:
Rein Klazes wrote:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
I don't know why that only showed up now, but I have a workaround that I have been using for a long time on another MDI app with this problem, and it seems to also fix the current problem with Pegasus.
[patch]
Hi Duane. Unfortunately your patch does not change anything (that is cvs winpos.c + alexandre's patch + your patch).
Maybe I did not explain clearly enough: these windows show alright but without painting the borders, caption, buttons etc. The defects also show in applications with a modern interface consisting of many floating/dockable/movable panes: no borders around the panes are painted.
Rein.
Rein Klazes wrote:
Hi Duane. Unfortunately your patch does not change anything (that is cvs winpos.c + alexandre's patch + your patch).
Maybe I did not explain clearly enough: these windows show alright but without painting the borders, caption, buttons etc. The defects also show in applications with a modern interface consisting of many floating/dockable/movable panes: no borders around the panes are painted.
Oops, not enough coffee yet this morning. Actually, the problem I was having with Pegasus, that the patch attempts to fix, is with minimization. That is, I minimize and then attempt to restore Pegasus, and nothing shows up *except* the main window border (you don't have that?). Yes, I do also see the problem with the non-client areas of the internal windows.
On Wed, 01 Sep 2004 10:02:43 -0700, you wrote:
Oops, not enough coffee yet this morning. Actually, the problem I was having with Pegasus, that the patch attempts to fix, is with minimization. That is, I minimize and then attempt to restore Pegasus, and nothing shows up *except* the main window border (you don't have that?).
Did you disable the option "Place an Icon in the Windows System Tray" under Tools>Options>User Interface>Reporting/Logging ?
Mike Hearn's unapplied system tray patch (couple of months old) did also work, if you restore from the system tray that is.
Rein.
Rein Klazes wrote:
On Wed, 01 Sep 2004 10:02:43 -0700, you wrote:
Oops, not enough coffee yet this morning. Actually, the problem I was having with Pegasus, that the patch attempts to fix, is with minimization. That is, I minimize and then attempt to restore Pegasus, and nothing shows up *except* the main window border (you don't have that?).
Did you disable the option "Place an Icon in the Windows System Tray" under Tools>Options>User Interface>Reporting/Logging ?
That does indeed fix it.
Rein Klazes rklazes@xs4all.nl writes:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
How about this one?
Index: dlls/x11drv/winpos.c =================================================================== RCS file: /opt/cvs-commit/wine/dlls/x11drv/winpos.c,v retrieving revision 1.98 diff -u -p -r1.98 winpos.c --- dlls/x11drv/winpos.c 24 Aug 2004 18:49:34 -0000 1.98 +++ dlls/x11drv/winpos.c 1 Sep 2004 16:49:03 -0000 @@ -416,21 +416,36 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, H
if (top != hwnd) { - escape.drawable_org.x = escape.drawable_org.y = 0; - if (flags & (DCX_WINDOW|DCX_PARENTCLIP)) + /* find the top most parent that doesn't clip siblings */ + HWND clipping_parent = 0; + HWND *list = WIN_ListParents( hwnd ); + if (list) { - escape.org.x = win->rectWindow.left - win->rectClient.left; - escape.org.y = win->rectWindow.top - win->rectClient.top; - MapWindowPoints( hwnd, top, &escape.org, 1 ); - MapWindowPoints( top, 0, &escape.drawable_org, 1 ); - escape.drawable = X11DRV_get_client_window( top ); + int i; + for (i = 0; list[i] != top; i++) + { + LONG style = GetWindowLongW( list[i], GWL_STYLE ); + if (!(style & WS_CLIPSIBLINGS)) clipping_parent = list[i]; + } + HeapFree( GetProcessHeap(), 0, list ); } + if (clipping_parent) + clipping_parent = GetAncestor( clipping_parent, GA_PARENT ); + else if (!(flags & DCX_CLIPSIBLINGS) || (flags & DCX_WINDOW)) + clipping_parent = GetAncestor( hwnd, GA_PARENT ); else + clipping_parent = hwnd; + + escape.org.x = escape.org.y = 0; + escape.drawable_org.x = escape.drawable_org.y = 0; + if (flags & DCX_WINDOW) { - escape.org.x = escape.org.y = 0; - MapWindowPoints( hwnd, 0, &escape.drawable_org, 1 ); - escape.drawable = X11DRV_get_client_window( hwnd ); + escape.org.x = win->rectWindow.left - win->rectClient.left; + escape.org.y = win->rectWindow.top - win->rectClient.top; } + MapWindowPoints( hwnd, clipping_parent, &escape.org, 1 ); + MapWindowPoints( clipping_parent, 0, &escape.drawable_org, 1 ); + escape.drawable = X11DRV_get_client_window( clipping_parent ); } else {
On Wed, 01 Sep 2004 09:52:40 -0700, you wrote:
Rein Klazes rklazes@xs4all.nl writes:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
How about this one?
Index: dlls/x11drv/winpos.c
Great, this fixes them all.
Rein.
Can you have a look at the bug #2302. This is not regession but my problem sounds very similar. In the program no scrollbars are shown. I have tried the native comctrl as well. The picture shows how the dialog should look like.
Yours,
Nicolai
Am 01.09.2004 um 18:52 schrieb Alexandre Julliard:
---- Diese Nachricht wurde auf Viren und andere gefaehrliche Inhalte sowie Spam untersucht.
Rein Klazes rklazes@xs4all.nl writes:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
How about this one?
Index: dlls/x11drv/winpos.c
RCS file: /opt/cvs-commit/wine/dlls/x11drv/winpos.c,v retrieving revision 1.98 diff -u -p -r1.98 winpos.c --- dlls/x11drv/winpos.c 24 Aug 2004 18:49:34 -0000 1.98 +++ dlls/x11drv/winpos.c 1 Sep 2004 16:49:03 -0000 @@ -416,21 +416,36 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, H
if (top != hwnd) {
escape.drawable_org.x = escape.drawable_org.y = 0;
if (flags & (DCX_WINDOW|DCX_PARENTCLIP))
/* find the top most parent that doesn't clip siblings */
HWND clipping_parent = 0;
HWND *list = WIN_ListParents( hwnd );
if (list) {
escape.org.x = win->rectWindow.left -
win->rectClient.left;
escape.org.y = win->rectWindow.top - win->rectClient.top;
MapWindowPoints( hwnd, top, &escape.org, 1 );
MapWindowPoints( top, 0, &escape.drawable_org, 1 );
escape.drawable = X11DRV_get_client_window( top );
int i;
for (i = 0; list[i] != top; i++)
{
LONG style = GetWindowLongW( list[i], GWL_STYLE );
if (!(style & WS_CLIPSIBLINGS)) clipping_parent =
list[i];
}
HeapFree( GetProcessHeap(), 0, list ); }
if (clipping_parent)
clipping_parent = GetAncestor( clipping_parent, GA_PARENT
);
else if (!(flags & DCX_CLIPSIBLINGS) || (flags & DCX_WINDOW))
clipping_parent = GetAncestor( hwnd, GA_PARENT ); else
clipping_parent = hwnd;
escape.org.x = escape.org.y = 0;
escape.drawable_org.x = escape.drawable_org.y = 0;
if (flags & DCX_WINDOW) {
escape.org.x = escape.org.y = 0;
MapWindowPoints( hwnd, 0, &escape.drawable_org, 1 );
escape.drawable = X11DRV_get_client_window( hwnd );
escape.org.x = win->rectWindow.left -
win->rectClient.left;
escape.org.y = win->rectWindow.top - win->rectClient.top; }
MapWindowPoints( hwnd, clipping_parent, &escape.org, 1 );
MapWindowPoints( clipping_parent, 0, &escape.drawable_org, 1
);
} else {escape.drawable = X11DRV_get_client_window( clipping_parent );
-- Alexandre Julliard julliard@winehq.org
I am trying to find the bug and it seems that the size of the given bitmap has no effect at the funktion/visibility of the scrollbars. Can someone give me a hint where the visibilty of the scrollbars is computed?
Am 02.09.2004 um 11:59 schrieb Nicolai Kuntze:
Can you have a look at the bug #2302. This is not regession but my problem sounds very similar. In the program no scrollbars are shown. I have tried the native comctrl as well. The picture shows how the dialog should look like.
Yours,
Nicolai
Am 01.09.2004 um 18:52 schrieb Alexandre Julliard:
---- Diese Nachricht wurde auf Viren und andere gefaehrliche Inhalte sowie Spam untersucht.
<Screenshot.JPG>
Rein Klazes rklazes@xs4all.nl writes:
I was too early, another problem popped up caused by this patch. Un-maximized MDI child windows don't paint their non client area anymore (I tried two MDI applications, both had it).
How about this one?
Index: dlls/x11drv/winpos.c
RCS file: /opt/cvs-commit/wine/dlls/x11drv/winpos.c,v retrieving revision 1.98 diff -u -p -r1.98 winpos.c --- dlls/x11drv/winpos.c 24 Aug 2004 18:49:34 -0000 1.98 +++ dlls/x11drv/winpos.c 1 Sep 2004 16:49:03 -0000 @@ -416,21 +416,36 @@ BOOL X11DRV_GetDC( HWND hwnd, HDC hdc, H
if (top != hwnd) {
escape.drawable_org.x = escape.drawable_org.y = 0;
if (flags & (DCX_WINDOW|DCX_PARENTCLIP))
/* find the top most parent that doesn't clip siblings */
HWND clipping_parent = 0;
HWND *list = WIN_ListParents( hwnd );
if (list) {
escape.org.x = win->rectWindow.left -
win->rectClient.left;
escape.org.y = win->rectWindow.top - win->rectClient.top;
MapWindowPoints( hwnd, top, &escape.org, 1 );
MapWindowPoints( top, 0, &escape.drawable_org, 1 );
escape.drawable = X11DRV_get_client_window( top );
int i;
for (i = 0; list[i] != top; i++)
{
LONG style = GetWindowLongW( list[i], GWL_STYLE );
if (!(style & WS_CLIPSIBLINGS)) clipping_parent =
list[i];
}
HeapFree( GetProcessHeap(), 0, list ); }
if (clipping_parent)
clipping_parent = GetAncestor( clipping_parent,
GA_PARENT );
else if (!(flags & DCX_CLIPSIBLINGS) || (flags & DCX_WINDOW))
clipping_parent = GetAncestor( hwnd, GA_PARENT ); else
clipping_parent = hwnd;
escape.org.x = escape.org.y = 0;
escape.drawable_org.x = escape.drawable_org.y = 0;
if (flags & DCX_WINDOW) {
escape.org.x = escape.org.y = 0;
MapWindowPoints( hwnd, 0, &escape.drawable_org, 1 );
escape.drawable = X11DRV_get_client_window( hwnd );
escape.org.x = win->rectWindow.left -
win->rectClient.left;
escape.org.y = win->rectWindow.top - win->rectClient.top; }
MapWindowPoints( hwnd, clipping_parent, &escape.org, 1 );
MapWindowPoints( clipping_parent, 0, &escape.drawable_org, 1
);
escape.drawable = X11DRV_get_client_window( clipping_parent
); } else {
-- Alexandre Julliard julliard@winehq.org
---- Diese Nachricht wurde auf Viren und andere gefaehrliche Inhalte sowie Spam untersucht.