hw/xwin: Handle more motif window decoration hinting
Handle the MWM_DECOR_MINIMIZE, MWM_DECOR_MAXIMIZE and MWM_DECOR_MENU decoration hints in a _MOTIF_WM_HINTS window property Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk> Reviewed-by: Colin Harrison <colin.harrison@virgin.net>
This commit is contained in:
parent
b8b0b841a0
commit
9a709d5028
|
@ -1582,6 +1582,8 @@ winDeinitMultiWindowWM (void)
|
||||||
#define HINT_SIZEBOX (1l<<2)
|
#define HINT_SIZEBOX (1l<<2)
|
||||||
#define HINT_CAPTION (1l<<3)
|
#define HINT_CAPTION (1l<<3)
|
||||||
#define HINT_NOMAXIMIZE (1L<<4)
|
#define HINT_NOMAXIMIZE (1L<<4)
|
||||||
|
#define HINT_NOMINIMIZE (1L<<5)
|
||||||
|
#define HINT_NOSYSMENU (1L<<6)
|
||||||
/* These two are used on their own */
|
/* These two are used on their own */
|
||||||
#define HINT_MAX (1L<<0)
|
#define HINT_MAX (1L<<0)
|
||||||
#define HINT_MIN (1L<<1)
|
#define HINT_MIN (1L<<1)
|
||||||
|
@ -1640,6 +1642,16 @@ winApplyHints (Display *pDisplay, Window iWindow, HWND hWnd, HWND *zstyle)
|
||||||
if (mwm_hint->decorations & MwmDecorBorder) hint |= HINT_BORDER;
|
if (mwm_hint->decorations & MwmDecorBorder) hint |= HINT_BORDER;
|
||||||
if (mwm_hint->decorations & MwmDecorHandle) hint |= HINT_SIZEBOX;
|
if (mwm_hint->decorations & MwmDecorHandle) hint |= HINT_SIZEBOX;
|
||||||
if (mwm_hint->decorations & MwmDecorTitle) hint |= HINT_CAPTION;
|
if (mwm_hint->decorations & MwmDecorTitle) hint |= HINT_CAPTION;
|
||||||
|
if (!(mwm_hint->decorations & MwmDecorMenu)) hint |= HINT_NOSYSMENU;
|
||||||
|
if (!(mwm_hint->decorations & MwmDecorMinimize)) hint |= HINT_NOMINIMIZE;
|
||||||
|
if (!(mwm_hint->decorations & MwmDecorMaximize)) hint |= HINT_NOMAXIMIZE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
MwmDecorAll means all decorations *except* those specified by other flag
|
||||||
|
bits that are set. Not yet implemented.
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (mwm_hint) XFree(mwm_hint);
|
if (mwm_hint) XFree(mwm_hint);
|
||||||
|
@ -1738,6 +1750,12 @@ winApplyHints (Display *pDisplay, Window iWindow, HWND hWnd, HWND *zstyle)
|
||||||
if (hint & HINT_NOMAXIMIZE)
|
if (hint & HINT_NOMAXIMIZE)
|
||||||
style = style & ~WS_MAXIMIZEBOX;
|
style = style & ~WS_MAXIMIZEBOX;
|
||||||
|
|
||||||
|
if (hint & HINT_NOMINIMIZE)
|
||||||
|
style = style & ~WS_MINIMIZEBOX;
|
||||||
|
|
||||||
|
if (hint & HINT_NOSYSMENU)
|
||||||
|
style = style & ~WS_SYSMENU;
|
||||||
|
|
||||||
SetWindowLongPtr (hWnd, GWL_STYLE, style);
|
SetWindowLongPtr (hWnd, GWL_STYLE, style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -127,10 +127,13 @@ typedef struct _winWMMessageRec{
|
||||||
|
|
||||||
#define MwmHintsDecorations (1L << 1)
|
#define MwmHintsDecorations (1L << 1)
|
||||||
|
|
||||||
#define MwmDecorAll (1l << 0)
|
#define MwmDecorAll (1L << 0)
|
||||||
#define MwmDecorBorder (1l << 1)
|
#define MwmDecorBorder (1L << 1)
|
||||||
#define MwmDecorHandle (1l << 2)
|
#define MwmDecorHandle (1L << 2)
|
||||||
#define MwmDecorTitle (1l << 3)
|
#define MwmDecorTitle (1L << 3)
|
||||||
|
#define MwmDecorMenu (1L << 4)
|
||||||
|
#define MwmDecorMinimize (1L << 5)
|
||||||
|
#define MwmDecorMaximize (1L << 6)
|
||||||
|
|
||||||
/* This structure only contains 3 elements... the Motif 2.0 structure
|
/* This structure only contains 3 elements... the Motif 2.0 structure
|
||||||
contains 5... we only need the first 3... so that is all we will define */
|
contains 5... we only need the first 3... so that is all we will define */
|
||||||
|
|
Loading…
Reference in New Issue