Changeset 8eeffc1 in mainline for uspace/lib


Ignore:
Timestamp:
2024-06-29T00:49:17Z (16 months ago)
Author:
Mohammed Q. Hussain <maastaar@…>
Children:
9a664b6d
Parents:
af3235d
Message:

Minimize an activated window when its name is clicked from taskbar

Location:
uspace/lib/wndmgt
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/wndmgt/include/ipc/wndmgt.h

    raf3235d r8eeffc1  
    4343        WNDMGT_GET_WINDOW_INFO,
    4444        WNDMGT_ACTIVATE_WINDOW,
     45        WNDMGT_DEACTIVATE_WINDOW,
    4546        WNDMGT_CLOSE_WINDOW,
    4647        WNDMGT_GET_EVENT,
  • uspace/lib/wndmgt/include/wndmgt.h

    raf3235d r8eeffc1  
    4848extern void wndmgt_free_window_info(wndmgt_window_info_t *);
    4949extern errno_t wndmgt_activate_window(wndmgt_t *, sysarg_t, sysarg_t);
     50extern errno_t wndmgt_deactivate_window(wndmgt_t *, sysarg_t, sysarg_t);
    5051extern errno_t wndmgt_close_window(wndmgt_t *, sysarg_t);
    5152
  • uspace/lib/wndmgt/include/wndmgt_srv.h

    raf3235d r8eeffc1  
    5353        errno_t (*get_window_info)(void *, sysarg_t, wndmgt_window_info_t **);
    5454        errno_t (*activate_window)(void *, sysarg_t, sysarg_t);
     55        errno_t (*deactivate_window)(void *, sysarg_t, sysarg_t);
    5556        errno_t (*close_window)(void *, sysarg_t);
    5657        errno_t (*get_event)(void *, wndmgt_ev_t *);
  • uspace/lib/wndmgt/src/wndmgt.c

    raf3235d r8eeffc1  
    308308}
    309309
     310/** Deactivate (minimize) window.
     311 *
     312 * @param wndmgt Window management session
     313 * @param dev_id ID of input device belonging to seat whose
     314 *               focus is to be switched
     315 * @param wnd_id Window ID
     316 * @return EOK on success or an error code
     317 */
     318errno_t wndmgt_deactivate_window(wndmgt_t *wndmgt, sysarg_t dev_id,
     319    sysarg_t wnd_id)
     320{
     321        async_exch_t *exch;
     322        errno_t rc;
     323
     324        exch = async_exchange_begin(wndmgt->sess);
     325        rc = async_req_2_0(exch, WNDMGT_DEACTIVATE_WINDOW, dev_id,
     326            wnd_id);
     327
     328        async_exchange_end(exch);
     329        return rc;
     330}
     331
    310332/** Close window.
    311333 *
  • uspace/lib/wndmgt/src/wndmgt_srv.c

    raf3235d r8eeffc1  
    222222}
    223223
     224static void wndmgt_deactivate_window_srv(wndmgt_srv_t *srv, ipc_call_t *icall)
     225{
     226        sysarg_t dev_id;
     227        sysarg_t wnd_id;
     228        errno_t rc;
     229
     230        dev_id = ipc_get_arg1(icall);
     231        wnd_id = ipc_get_arg2(icall);
     232
     233        if (srv->ops->deactivate_window == NULL) {
     234                async_answer_0(icall, ENOTSUP);
     235                return;
     236        }
     237
     238        rc = srv->ops->deactivate_window(srv->arg, dev_id, wnd_id);
     239        async_answer_0(icall, rc);
     240}
     241
    224242static void wndmgt_close_window_srv(wndmgt_srv_t *srv, ipc_call_t *icall)
    225243{
     
    308326                case WNDMGT_ACTIVATE_WINDOW:
    309327                        wndmgt_activate_window_srv(srv, &call);
     328                        break;
     329                case WNDMGT_DEACTIVATE_WINDOW:
     330                        wndmgt_deactivate_window_srv(srv, &call);
    310331                        break;
    311332                case WNDMGT_CLOSE_WINDOW:
Note: See TracChangeset for help on using the changeset viewer.