tooltips problem with server side update region handling

Rein Klazes wijn at wanadoo.nl
Wed Dec 8 10:08:02 CST 2004


Hi,

There are now 4 little tooltips windows sticking on top of all windows
and following me to every desktop I go :-(((.

The problem seems to be that the call:

    SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0,
		    SWP_NOZORDER | SWP_HIDEWINDOW | SWP_NOACTIVATE);

in TOOLTIPS_Hide() is ineffective (does not hide the tooltip).

Here is a +tooltip,+win,+x11drv trace of the situation before:

| trace:tooltips:TOOLTIPS_Hide Hide tooltip 5! (0x10042)
| trace:win:SetWindowPos hwnd 0x10042, after (nil), 0,0 (0x0), flags 00000094
| trace:win:dump_winpos_flags flags: SWP_NOZORDER SWP_NOACTIVATE SWP_HIDEWINDOW
| trace:x11drv:X11DRV_SetWindowPos hwnd 0x10042, after (nil), swp 0,0 0x0 flags 00000094
| trace:tooltips:TOOLTIPS_WindowProc hwnd=0x10042 msg=46 wparam=0 lParam=77a6f514
| trace:x11drv:X11DRV_SetWindowPos 	current (187,92)-(324,112), style 94800000
| warn:x11drv:SWP_DoOwnedPopups (0x10042) hInsertAfter = (nil)
| trace:tooltips:TOOLTIPS_WindowProc hwnd=0x10042 msg=83 wparam=1 lParam=77a6f478
| trace:x11drv:SWP_DoNCCalcSize (1,1)-(1,1)
| trace:x11drv:X11DRV_set_window_rectangles win 0x10042 window (0,0)-(0,0) client (1,1)-(1,1)
| trace:win:RedrawWindow 0x10042 ((nil)) NULL 0,0-0,0 (nil) flags=08b8
| trace:win:dump_rdw_flags flags: RDW_VALIDATE RDW_NOINTERNALPAINT RDW_NOERASE RDW_ALLCHILDREN RDW_NOFRAME
| trace:win:RDW_UpdateRgns 	hwnd 0x10042 [(nil)] -> hrgn [0x1], flags [08b8]

compared to the situation after, with added some of the +server trace.

| race:tooltips:TOOLTIPS_Hide Hide tooltip 5! (0x10042)
| trace:win:SetWindowPos hwnd 0x10042, after (nil), 0,0 (0x0), flags 00000094
| trace:win:dump_winpos_flags flags: SWP_NOZORDER SWP_NOACTIVATE SWP_HIDEWINDOW
| trace:x11drv:X11DRV_SetWindowPos hwnd 0x10042, after (nil), swp 0,0 0x0 flags 00000094
| trace:tooltips:TOOLTIPS_WindowProc hwnd=0x10042 msg=46 wparam=0 lParam=77a6f514
| trace:x11drv:SWP_DoWinPosChanging hwnd 0x10042, after (nil), swp 0,0 0x0 flags 00001894
| trace:x11drv:SWP_DoWinPosChanging current (178,78)-(315,98) style 94800000 new (0,0)-(0,0)
| warn:x11drv:SWP_DoOwnedPopups (0x10042) hInsertAfter = (nil)
| 0009: get_window_children( parent=0x10020, atom=0000, tid=0000 )
| 0009: get_window_children() = 0 { count=7, children={0x10042,0x1002c,0x10044,0x10034,0x10022,0x10028,0x10026} }
| 0009: start_hook_chain( id=4 )
| 0009: start_hook_chain() = 0 { handle=(nil), pid=0000, tid=0000, proc=(nil), unicode=0, module=L"" }
| trace:tooltips:TOOLTIPS_WindowProc hwnd=0x10042 msg=83 wparam=1 lParam=77a6f498
| 0009: start_hook_chain( id=12 )
| 0009: start_hook_chain() = 0 { handle=(nil), pid=0000, tid=0000, proc=(nil), unicode=0, module=L"" }
| trace:x11drv:SWP_DoNCCalcSize (1,1)-(1,1)
| 0009: set_window_pos( handle=0x10042, top_win=0x10042, previous=(nil), flags=00000094, redraw_flags=00000000, window={0,0;0,0}, client={1,1;1,1} )
| 0009: set_window_pos() = INVALID_PARAMETER { new_style=00000000 }

where it all ends.

The INVALID_PARAMETER is, I think, the result of a failure of server
function validate_window_rectangles(), choking on a window with size
0,0-0,0 and client 1,1-1,1.

I guess the validation is too strict, right?

Rein.



More information about the wine-devel mailing list