예제 #1
0
파일: Window.cs 프로젝트: jbnivoit/projects
        public void delete()
        {
            if (!(wm_protocol ("WM_DELETE_WINDOW"))) return;

            ClientMessage evt = new ClientMessage (display);
            Atom wm_protocols = (Atom) Atom.intern (display, "WM_PROTOCOLS");
            Atom wm_delete_window = (Atom) Atom.intern (display,
              "WM_DELETE_WINDOW");

            evt.set_format (32);
            evt.set_window (this);
            evt.set_type (wm_protocols);
            evt.set_wm_data (wm_delete_window.id);
            evt.set_wm_time (Display.CURRENT_TIME);
            send_event (false, Event.NO_EVENT_MASK, evt);
        }
예제 #2
0
파일: Window.cs 프로젝트: jbnivoit/projects
        /**
           * @see <a href="XIconifyWindow.html">XIconifyWindow</a>
           * @see <a href="icccm.html#4.1.4">ICCCM Section 4.1.4</a>
           * @see #send_event(bool, int, Event)
           */
        public void iconify()
        {
            Atom wm_change_state = (Atom) Atom.intern (display, "WM_CHANGE_STATE");

            ClientMessage evt = new ClientMessage (display);
            evt.set_format (32);
            evt.set_window (this);
            evt.set_type (wm_change_state);
            evt.set_wm_data (WMHints.ICONIC);
            send_event (false, Event.SUBSTRUCTURE_REDIRECT_MASK
              | Event.SUBSTRUCTURE_NOTIFY_MASK, evt);
        }
예제 #3
0
파일: Puppet.cs 프로젝트: jbnivoit/projects
        public void when_client_message(ClientMessage evt)
        {
            // client asks to change window state from normal to iconic
            Client client = (Client) Client.intern (display, evt.window_id ());
            if (client.early_unmapped || client.early_destroyed) return;

            Atom type = evt.type ();
            if (evt.format () == 32
              && type.name.Equals ("WM_CHANGE_STATE")
              && evt.wm_data () == Window.WMHints.ICONIC) {

              hide (client);

            } else
              alert_user ("Unhandled client message: " + type);
        }