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_CAPTION	(1l<<3)
 | 
			
		||||
#define HINT_NOMAXIMIZE (1L<<4)
 | 
			
		||||
#define HINT_NOMINIMIZE (1L<<5)
 | 
			
		||||
#define HINT_NOSYSMENU  (1L<<6)
 | 
			
		||||
/* These two are used on their own */
 | 
			
		||||
#define HINT_MAX	(1L<<0)
 | 
			
		||||
#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 & MwmDecorHandle) hint |= HINT_SIZEBOX;
 | 
			
		||||
	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);
 | 
			
		||||
| 
						 | 
				
			
			@ -1738,6 +1750,12 @@ winApplyHints (Display *pDisplay, Window iWindow, HWND hWnd, HWND *zstyle)
 | 
			
		|||
  if (hint & HINT_NOMAXIMIZE)
 | 
			
		||||
    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);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -127,10 +127,13 @@ typedef struct _winWMMessageRec{
 | 
			
		|||
 | 
			
		||||
#define		MwmHintsDecorations	(1L << 1)
 | 
			
		||||
 | 
			
		||||
#define		MwmDecorAll		(1l << 0)
 | 
			
		||||
#define		MwmDecorBorder		(1l << 1)
 | 
			
		||||
#define		MwmDecorHandle		(1l << 2)
 | 
			
		||||
#define		MwmDecorTitle		(1l << 3)
 | 
			
		||||
#define		MwmDecorAll		(1L << 0)
 | 
			
		||||
#define		MwmDecorBorder		(1L << 1)
 | 
			
		||||
#define		MwmDecorHandle		(1L << 2)
 | 
			
		||||
#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
 | 
			
		||||
contains 5... we only need the first 3... so that is all we will define */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue