question: boolean isStateChange ( XDecoratedPeer window , XPropertyEvent e ) { if ( ! window . isShowing ( ) ) { stateLog . finer ( "Window is not showing" ) ; return false ; } int wm_state = window . getWMState ( ) ; if ( wm_state == XUtilConstants . WithdrawnState ) { stateLog . finer ( "WithdrawnState" ) ; return false ; } else { if ( stateLog . isLoggable ( PlatformLogger . Level . FINER ) ) { stateLog . finer ( "Window WM_STATE is " + wm_state ) ; } } boolean is_state_change = false ; if ( e . get_atom ( ) == XA_WM_STATE . getAtom ( ) ) { is_state_change = true ; } for ( XStateProtocol proto : getProtocols ( XStateProtocol . class ) ) { is_state_change |= proto . isStateChange ( e ) ; if ( stateLog . isLoggable ( PlatformLogger . Level . FINEST ) ) { stateLog . finest ( proto + ": is state changed = " + is_state_change ) ; } } return is_state_change ; }
target:  \ Notice window state change when WM changes a property on the window ... \