Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: mwm.c Log Message: Allow _MOTIF_WM_HINTS to have only 4 elements (fixes blender, possibly others). =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/mwm.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -3 -r1.20 -r1.21 --- mwm.c 4 May 2004 19:04:33 -0000 1.20 +++ mwm.c 5 Jul 2004 11:25:20 -0000 1.21 @@ -52,6 +52,9 @@ #define MWM_INPUT_FULL_APPLICATION_MODAL 3 #define PROP_MWM_HINTS_ELEMENTS 5 +#define PROP_MWM_HINTS_ELEMENTS_MIN 4 + +static Atom _MOTIF_WM_HINTS = 0; /* Motif window hints */ typedef struct _mwmhints @@ -68,23 +71,22 @@ MWM_GetHints(EWin * ewin, Atom atom_change) { int fmt; - Atom a1, a2; + Atom a2; unsigned long num, end; MWMHints *mwmhints; unsigned char *puc; EDBUG(6, "MWM_GetHints"); + if (ewin->internal) EDBUG_RETURN_; - if (atom_change) - { - static Atom atom = 0; - if (!atom) - atom = XInternAtom(disp, "_MOTIF_WM_HINTS", False); - if (atom_change != atom) - EDBUG_RETURN_; - } + if (!_MOTIF_WM_HINTS) + _MOTIF_WM_HINTS = XInternAtom(disp, "_MOTIF_WM_HINTS", False); + + if (atom_change && atom_change != _MOTIF_WM_HINTS) + EDBUG_RETURN_; + ewin->client.mwm_decor_border = 1; ewin->client.mwm_decor_resizeh = 1; ewin->client.mwm_decor_title = 1; @@ -96,81 +98,84 @@ ewin->client.mwm_func_minimize = 1; ewin->client.mwm_func_maximize = 1; ewin->client.mwm_func_close = 1; - a1 = XInternAtom(disp, "_MOTIF_WM_HINTS", False); + puc = NULL; - XGetWindowProperty(disp, ewin->client.win, a1, 0, 20, False, a1, &a2, &fmt, - &num, &end, &puc); + XGetWindowProperty(disp, ewin->client.win, _MOTIF_WM_HINTS, 0, 20, + False, _MOTIF_WM_HINTS, &a2, &fmt, &num, &end, &puc); mwmhints = (MWMHints *) puc; - if (mwmhints) + if (!mwmhints) + EDBUG_RETURN_; + + if (num < PROP_MWM_HINTS_ELEMENTS_MIN) + goto done; + + if (mwmhints->flags & MWM_HINTS_DECORATIONS) { - if (num < PROP_MWM_HINTS_ELEMENTS) + ewin->client.mwm_decor_border = 0; + ewin->client.mwm_decor_resizeh = 0; + ewin->client.mwm_decor_title = 0; + ewin->client.mwm_decor_menu = 0; + ewin->client.mwm_decor_minimize = 0; + ewin->client.mwm_decor_maximize = 0; + if (mwmhints->decorations & MWM_DECOR_ALL) { - XFree(mwmhints); - EDBUG_RETURN_; + ewin->client.mwm_decor_border = 1; + ewin->client.mwm_decor_resizeh = 1; + ewin->client.mwm_decor_title = 1; + ewin->client.mwm_decor_menu = 1; + ewin->client.mwm_decor_minimize = 1; + ewin->client.mwm_decor_maximize = 1; } - if (mwmhints->flags & MWM_HINTS_DECORATIONS) - { - ewin->client.mwm_decor_border = 0; - ewin->client.mwm_decor_resizeh = 0; - ewin->client.mwm_decor_title = 0; - ewin->client.mwm_decor_menu = 0; - ewin->client.mwm_decor_minimize = 0; - ewin->client.mwm_decor_maximize = 0; - if (mwmhints->decorations & MWM_DECOR_ALL) - { - ewin->client.mwm_decor_border = 1; - ewin->client.mwm_decor_resizeh = 1; - ewin->client.mwm_decor_title = 1; - ewin->client.mwm_decor_menu = 1; - ewin->client.mwm_decor_minimize = 1; - ewin->client.mwm_decor_maximize = 1; - } - if (mwmhints->decorations & MWM_DECOR_BORDER) - ewin->client.mwm_decor_border = 1; - if (mwmhints->decorations & MWM_DECOR_RESIZEH) - ewin->client.mwm_decor_resizeh = 1; - if (mwmhints->decorations & MWM_DECOR_TITLE) - ewin->client.mwm_decor_title = 1; - if (mwmhints->decorations & MWM_DECOR_MENU) - ewin->client.mwm_decor_menu = 1; - if (mwmhints->decorations & MWM_DECOR_MINIMIZE) - ewin->client.mwm_decor_minimize = 1; - if (mwmhints->decorations & MWM_DECOR_MAXIMIZE) - ewin->client.mwm_decor_maximize = 1; - } - if (mwmhints->flags & MWM_HINTS_FUNCTIONS) + if (mwmhints->decorations & MWM_DECOR_BORDER) + ewin->client.mwm_decor_border = 1; + if (mwmhints->decorations & MWM_DECOR_RESIZEH) + ewin->client.mwm_decor_resizeh = 1; + if (mwmhints->decorations & MWM_DECOR_TITLE) + ewin->client.mwm_decor_title = 1; + if (mwmhints->decorations & MWM_DECOR_MENU) + ewin->client.mwm_decor_menu = 1; + if (mwmhints->decorations & MWM_DECOR_MINIMIZE) + ewin->client.mwm_decor_minimize = 1; + if (mwmhints->decorations & MWM_DECOR_MAXIMIZE) + ewin->client.mwm_decor_maximize = 1; + } + + if (mwmhints->flags & MWM_HINTS_FUNCTIONS) + { + ewin->client.mwm_func_resize = 0; + ewin->client.mwm_func_move = 0; + ewin->client.mwm_func_minimize = 0; + ewin->client.mwm_func_maximize = 0; + ewin->client.mwm_func_close = 0; + if (mwmhints->functions & MWM_FUNC_ALL) { - ewin->client.mwm_func_resize = 0; - ewin->client.mwm_func_move = 0; - ewin->client.mwm_func_minimize = 0; - ewin->client.mwm_func_maximize = 0; - ewin->client.mwm_func_close = 0; - if (mwmhints->functions & MWM_FUNC_ALL) - { - ewin->client.mwm_func_resize = 1; - ewin->client.mwm_func_move = 1; - ewin->client.mwm_func_minimize = 1; - ewin->client.mwm_func_maximize = 1; - ewin->client.mwm_func_close = 1; - } - if (mwmhints->functions & MWM_FUNC_RESIZE) - ewin->client.mwm_func_resize = 1; - if (mwmhints->functions & MWM_FUNC_MOVE) - ewin->client.mwm_func_move = 1; - if (mwmhints->functions & MWM_FUNC_MINIMIZE) - ewin->client.mwm_func_minimize = 1; - if (mwmhints->functions & MWM_FUNC_MAXIMIZE) - ewin->client.mwm_func_maximize = 1; - if (mwmhints->functions & MWM_FUNC_CLOSE) - ewin->client.mwm_func_close = 1; + ewin->client.mwm_func_resize = 1; + ewin->client.mwm_func_move = 1; + ewin->client.mwm_func_minimize = 1; + ewin->client.mwm_func_maximize = 1; + ewin->client.mwm_func_close = 1; } - XFree(mwmhints); + if (mwmhints->functions & MWM_FUNC_RESIZE) + ewin->client.mwm_func_resize = 1; + if (mwmhints->functions & MWM_FUNC_MOVE) + ewin->client.mwm_func_move = 1; + if (mwmhints->functions & MWM_FUNC_MINIMIZE) + ewin->client.mwm_func_minimize = 1; + if (mwmhints->functions & MWM_FUNC_MAXIMIZE) + ewin->client.mwm_func_maximize = 1; + if (mwmhints->functions & MWM_FUNC_CLOSE) + ewin->client.mwm_func_close = 1; } + + done: + if (mwmhints) + XFree(mwmhints); + EDBUG_RETURN_; } void -MWM_SetInfo() +MWM_SetInfo(void) { Atom a1; struct _mwminfo ------------------------------------------------------- This SF.Net email sponsored by Black Hat Briefings & Training. Attend Black Hat Briefings & Training, Las Vegas July 24-29 - digital self defense, top technical experts, no vendor pitches, unmatched networking opportunities. Visit www.blackhat.com _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs