public void when_map_request (MapRequest event) {
    // client asks to change window state from withdrawn to normal/iconic,
    // or from iconic to normal
    Client client = (Client) Client.intern (display, event.window_id);
    if (client.early_unmapped || client.early_destroyed) return;


    // get override_redirect and map_state
    client.attributes = client.attributes ();
    if (client.attributes.override_redirect ()) return;

    manage (client);

    Window.WMHints wm_hints = client.wm_hints ();

    // assume NORMAL if initial_state not specified
    if (wm_hints == null
      || (wm_hints.flags () & Window.WMHints.STATE_HINT_MASK) == 0
      || wm_hints.initial_state () == Window.WMHints.NORMAL) {

      /* Do not do any visible operations on the window such as focusing
       * and warping pointer, until a window is actually map, ie. 
       * MapNotify.
       *
       * @see #when_map_notify(MapNotify)
       */
      client.map ();
      
    } else {			// must be iconic
      client.state = HIDDEN;
      client.set_wm_state (Window.WMState.ICONIC);
    }
  }