diff --git a/dlls/winex11.drv/winpos.c b/dlls/winex11.drv/winpos.c index c30ef716fa8..f215f41a044 100644 --- a/dlls/winex11.drv/winpos.c +++ b/dlls/winex11.drv/winpos.c @@ -638,6 +638,37 @@ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev ) } +/*********************************************************************** + * is_netwm_supported + */ +static BOOL is_netwm_supported( Display *display, Atom atom ) +{ + static Atom *net_supported; + static int net_supported_count = -1; + int i; + + wine_tsx11_lock(); + if (net_supported_count == -1) + { + Atom type; + int format; + unsigned long count, remaining; + + if (!XGetWindowProperty( display, DefaultRootWindow(display), x11drv_atom(_NET_SUPPORTED), 0, + ~0UL, False, XA_ATOM, &type, &format, &count, + &remaining, (unsigned char **)&net_supported )) + net_supported_count = count * (format / 8) / sizeof(Atom); + else + net_supported_count = 0; + } + wine_tsx11_unlock(); + + for (i = 0; i < net_supported_count; i++) + if (net_supported[i] == atom) return TRUE; + return FALSE; +} + + /*********************************************************************** * SysCommandSizeMove (X11DRV.@) * @@ -656,6 +687,12 @@ BOOL X11DRV_SysCommandSizeMove( HWND hwnd, WPARAM wparam ) if (!(data = X11DRV_get_win_data( hwnd ))) return FALSE; if (!data->whole_window || !data->managed) return FALSE; + if (!is_netwm_supported( display, x11drv_atom(_NET_WM_MOVERESIZE) )) + { + TRACE( "_NET_WM_MOVERESIZE not supported\n" ); + return FALSE; + } + if (syscommand == SC_MOVE) { if (!hittest) dir = _NET_WM_MOVERESIZE_MOVE_KEYBOARD; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index bdf66575101..a685e64d644 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -567,6 +567,7 @@ enum x11drv_atoms XATOM__ICC_PROFILE, XATOM__MOTIF_WM_HINTS, XATOM__KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR, + XATOM__NET_SUPPORTED, XATOM__NET_SYSTEM_TRAY_OPCODE, XATOM__NET_SYSTEM_TRAY_S0, XATOM__NET_WM_MOVERESIZE, diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index 9162857d723..0ea3a1b94b2 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -131,6 +131,7 @@ static const char * const atom_names[NB_XATOMS - FIRST_XATOM] = "_ICC_PROFILE", "_MOTIF_WM_HINTS", "_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR", + "_NET_SUPPORTED", "_NET_SYSTEM_TRAY_OPCODE", "_NET_SYSTEM_TRAY_S0", "_NET_WM_MOVERESIZE",