Posted to tcl by patthoyts at Sat Dec 05 17:32:16 GMT 2009view pretty
Attempt to sort out the flashing of Tk menu items on Ubuntu. Doesnt actually work. Index: unix/tkUnixWm.c =================================================================== RCS file: /cvsroot/tktoolkit/tk/unix/tkUnixWm.c,v retrieving revision 1.73 diff -u -p -r1.73 tkUnixWm.c --- unix/tkUnixWm.c 1 Aug 2009 08:05:11 -0000 1.73 +++ unix/tkUnixWm.c 9 Nov 2009 22:17:00 -0000 @@ -639,6 +639,14 @@ TkWmNewWindow( */ void +TkSetTransientFor(Tk_Window tkwin, Tk_Window parent) +{ + XSetTransientForHint(Tk_Display(tkwin), + ((TkWindow *)tkwin)->wmInfoPtr->wrapperPtr->window, + ((TkWindow *)parent)->wmInfoPtr->wrapperPtr->window); +} + +void TkWmMapWindow( TkWindow *winPtr) /* Top-level window that's about to be * mapped. */ @@ -668,6 +676,22 @@ TkWmMapWindow( UpdateTitle(winPtr); UpdatePhotoIcon(winPtr); + /* + * Update any class specific hints + */ + { + Atom atoms[1]; + Atom _NET_WM_WINDOW_TYPE = Tk_InternAtom((Tk_Window)wmPtr->winPtr, + "_NET_WM_WINDOW_TYPE_MENU"); + atoms[0] = Tk_InternAtom((Tk_Window)wmPtr->winPtr, + "_NET_WM_WINDOW_TYPE_UTILITY"); + XChangeProperty(wmPtr->winPtr->display, wmPtr->wrapperPtr->window, + _NET_WM_WINDOW_TYPE, XA_ATOM, 32, PropModeReplace, + (unsigned char *) &atoms, 1); + fprintf(stderr, "set utility window\n"); + } + + if (wmPtr->masterPtr != NULL) { /* * Don't map a transient if the master is not mapped.