diff --git a/src/kernel/qwidget_x11.cpp b/src/kernel/qwidget_x11.cpp index 71c36373..2aff3012 100644 --- a/src/kernel/qwidget_x11.cpp +++ b/src/kernel/qwidget_x11.cpp @@ -630,7 +630,10 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow) wsa.save_under = True; XChangeWindowAttributes( dpy, id, CWOverrideRedirect | CWSaveUnder, &wsa ); - x11SetWindowType(); + XClassHint class_hint; + class_hint.res_name = (char *) tqAppName(); // application name + class_hint.res_class = (char *) tqAppClass(); // application class + XSetClassHint( dpy, id, &class_hint ); } else if ( topLevel && !desktop ) { // top-level widget TQWidget *p = parentWidget(); // real parent if (p) @@ -693,8 +696,6 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow) else XDeleteProperty(dpy, id, qt_xa_motif_wm_hints); - x11SetWindowType(); - // set _NET_WM_WINDOW_STATE if (curr_winstate > 0) XChangeProperty(dpy, id, qt_net_wm_state, XA_ATOM, 32, PropModeReplace, @@ -709,11 +710,6 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow) else XDeleteProperty(dpy, id, qt_net_wm_action); - // set _NET_WM_PID - long curr_pid = getpid(); - XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, - (unsigned char *) &curr_pid, 1); - #ifndef QT_NO_XSYNC // set _NET_WM_SYNC_COUNTER createSyncCounter(); @@ -725,19 +721,31 @@ void TQWidget::create( WId window, bool initializeWindow, bool destroyOldWindow) // when we create a toplevel widget, the frame strut should be dirty fstrut_dirty = 1; + } else { + // non-toplevel widgets don't have a frame, so no need to + // update the strut + fstrut_dirty = 0; + } + + if (initializeWindow && (popup || (topLevel && !desktop))) { // properties set on all toplevel windows + x11SetWindowType(); + + // set _NET_WM_PID + long curr_pid = getpid(); + XChangeProperty(dpy, id, qt_net_wm_pid, XA_CARDINAL, 32, PropModeReplace, + (unsigned char *) &curr_pid, 1); + // declare the widget's object name as window role XChangeProperty( dpy, id, tqt_window_role, XA_STRING, 8, PropModeReplace, (unsigned char *)name(), tqstrlen( name() ) ); // set client leader property + if ( !qt_x11_wm_client_leader ) + qt_x11_create_wm_client_leader(); XChangeProperty( dpy, id, qt_wm_client_leader, XA_WINDOW, 32, PropModeReplace, (unsigned char *)&qt_x11_wm_client_leader, 1 ); - } else { - // non-toplevel widgets don't have a frame, so no need to - // update the strut - fstrut_dirty = 0; } if ( initializeWindow ) {