From 49a5db38696d5c768ec5e2a4add25c264844c8c3 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 15 Oct 2012 16:17:46 +0200 Subject: [PATCH] user32: Don't show the icon title for off-screen icons. --- dlls/user32/winpos.c | 67 ++++++++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c index a04bf2c1903..5a2f1f22bbe 100644 --- a/dlls/user32/winpos.c +++ b/dlls/user32/winpos.c @@ -660,42 +660,43 @@ BOOL WINPOS_RedrawIconTitle( HWND hWnd ) /*********************************************************************** * WINPOS_ShowIconTitle */ -static BOOL WINPOS_ShowIconTitle( HWND hwnd, BOOL bShow ) +static void WINPOS_ShowIconTitle( HWND hwnd, BOOL bShow ) { - if (!GetPropA( hwnd, "__wine_x11_managed" )) + WND *win = WIN_GetPtr( hwnd ); + HWND title = 0; + + TRACE("%p %i\n", hwnd, (bShow != 0) ); + + if (!win || win == WND_OTHER_PROCESS || win == WND_DESKTOP) return; + if (win->rectWindow.left == -32000 || win->rectWindow.top == -32000) { - WND *win = WIN_GetPtr( hwnd ); - HWND title = 0; - - TRACE("%p %i\n", hwnd, (bShow != 0) ); - - if (!win || win == WND_OTHER_PROCESS || win == WND_DESKTOP) return FALSE; - title = win->icon_title; - WIN_ReleasePtr( win ); - - if( bShow ) - { - if (!title) - { - title = ICONTITLE_Create( hwnd ); - if (!(win = WIN_GetPtr( hwnd )) || win == WND_OTHER_PROCESS) - { - DestroyWindow( title ); - return FALSE; - } - win->icon_title = title; - WIN_ReleasePtr( win ); - } - if (!IsWindowVisible(title)) - { - SendMessageW( title, WM_SHOWWINDOW, TRUE, 0 ); - SetWindowPos( title, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | - SWP_NOACTIVATE | SWP_NOZORDER | SWP_SHOWWINDOW ); - } - } - else if (title) ShowWindow( title, SW_HIDE ); + TRACE( "not showing title for hidden icon %p\n", hwnd ); + bShow = FALSE; } - return FALSE; + else title = win->icon_title; + WIN_ReleasePtr( win ); + + if (bShow) + { + if (!title) + { + title = ICONTITLE_Create( hwnd ); + if (!(win = WIN_GetPtr( hwnd )) || win == WND_OTHER_PROCESS) + { + DestroyWindow( title ); + return; + } + win->icon_title = title; + WIN_ReleasePtr( win ); + } + if (!IsWindowVisible(title)) + { + SendMessageW( title, WM_SHOWWINDOW, TRUE, 0 ); + SetWindowPos( title, 0, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE | + SWP_NOACTIVATE | SWP_NOZORDER | SWP_SHOWWINDOW ); + } + } + else if (title) ShowWindow( title, SW_HIDE ); } /*******************************************************************