PATCH: -multiwindow with root window hidden...
Harold L Hunt II
huntharo@msu.edu
Tue Apr 29 21:38:00 GMT 2003
Early,
I think you forgot to show what you changed to hide the root window.
Please show me what you changed to handle that.
Thanks for you patch,
Harold
Early Ehlinger wrote:
> Alright! I'm having good results with my attempt to hide the root window
> when running in
> -multiwindow mode. I've got it to where when I use the startxwin batch file
> that gets set up during the cygwin install, XWin.exe adds a tray icon and
> hides its root window. The batch file then launches an xterm and it shows
> up and works fine. I can then launch more xterms, ssl sessions, redirect
> galeon from my linux box, etc.
>
> The patch needs a few tweaks before I will feel comfortable releasing it:
>
> 1. Right now simply clicking on the icon closes it. This was more a matter
> of laziness than anything else. It takes a half a second to put the
> WM_CLOSE post and a *lot* longer to generate the menus and whatnot.
>
> 2. It currently hides the root window indiscriminately. That is, it assumes
> that
> -multiwindow is on the command line, creates the tray icon and hides the
> root window without checking that assumption at all. This was more due to
> my lack of familiarity with the code. I didn't quite know what variables to
> look for and frankly didn't care since I'm only planning on running with
> the -multiwindow switch anyway ;) If somebody wants to tackle this, my
> approach would be to add a new command line switch, say -trayicon, so that
> you would launch XWin.exe with:
>
> XWin.exe -trayicon -multiwindow -nowinkill -clipboard
>
> Except for these two caveats, I'm quite happy with the new behavior. I'd
> still like to see different icons for each X Window, but that is much less
> important to me than getting rid of that annoying root window, so I won't
> tackle that one for a *very* long time, if ever.
>
> I won't be able to work on this again for a while - I've got it where I need
> it for my purposes and my time is *very* limited. So, if anybody wants to
> try it out with the knowledge that these two problems exist, or wants to
> take over development to remove these problems, here are the changes I made:
>
> in x-devel/build/std/programs/Xserver/hw/xwin/winwndproc.c:
>
> add the following just after the other #includes:
>
> #include <shellapi.h>
>
> void init_notify_icon( HWND hwnd )
> {
> NOTIFYICONDATA nid = {0};
> nid.cbSize = sizeof( nid );
> nid.hWnd = hwnd;
> nid.uID = 0;
> nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP /* | NIF_INFO */;
> nid.uCallbackMessage = WM_APP;
> nid.hIcon = LoadIcon(g_hInstance, MAKEINTRESOURCE(IDI_XWIN));
>
> strncpy( nid.szTip , "Cygwin/XFree86 Server" , sizeof( nid.szTip ) );
>
> if ( ! Shell_NotifyIcon( NIM_ADD , &nid ) )
> ErrorF( "Shell_NotifyIcon Failed, dammit" );
> }
>
> LRESULT handle_icon_message( HWND hwnd , UINT message , WPARAM wParam ,
> LPARAM lParam )
> {
> switch( lParam )
> {
> case WM_LBUTTONUP:
> PostMessage( hwnd , WM_CLOSE , 0 , 0 );
> }
> return 0;
> }
>
> in winWindowProc( ... ), add this to the switch(message) :
>
> case WM_APP:
> return handle_icon_message( hwnd , message , wParam , lParam );
>
> And add this to the case WM_CREATE in the switch(message), just above the
> return 0 :
>
> init_notify_icon( hwnd );
>
>
> --
> -- Early Ehlinger CEO, ResPower Inc - Toll-Free : 866-737-7697
> -- www.respower.com -- 500+ GHz Supercomputer Starting At USD$0.50/GHz*Hour
>
>
>
>
More information about the Cygwin-xfree
mailing list