source: mainline/uspace/srv/hid/display/display.h@ ca95ccd

Last change on this file since ca95ccd was 5d380b6, checked in by Jiri Svoboda <jiri@…>, 2 years ago

Create menu windows in the correct seat

Add a mechanism to set the seat of a new display window, UI window,
UI popup - input device ID. This is set to the ID of the device which
activated the menu (mouse, keyboard). The display server determines
the correct seat from there.

This makes sure clicking outside closes the correct pop-up window.

  • Property mode set to 100644
File size: 5.0 KB
Line 
1/*
2 * Copyright (c) 2023 Jiri Svoboda
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup display
30 * @{
31 */
32/**
33 * @file Display server display
34 */
35
36#ifndef DISPLAY_H
37#define DISPLAY_H
38
39#include <display/info.h>
40#include <errno.h>
41#include <gfx/context.h>
42#include <gfx/coord.h>
43#include <io/kbd_event.h>
44#include "types/display/cfgclient.h"
45#include "types/display/client.h"
46#include "types/display/cursor.h"
47#include "types/display/ddev.h"
48#include "types/display/display.h"
49#include "types/display/idev.h"
50#include "types/display/idevcfg.h"
51#include "types/display/ptd_event.h"
52#include "types/display/seat.h"
53#include "types/display/wmclient.h"
54
55extern errno_t ds_display_create(gfx_context_t *, ds_display_flags_t,
56 ds_display_t **);
57extern void ds_display_destroy(ds_display_t *);
58extern void ds_display_lock(ds_display_t *);
59extern void ds_display_unlock(ds_display_t *);
60extern void ds_display_get_info(ds_display_t *, display_info_t *);
61extern void ds_display_add_client(ds_display_t *, ds_client_t *);
62extern void ds_display_remove_client(ds_client_t *);
63extern ds_client_t *ds_display_first_client(ds_display_t *);
64extern ds_client_t *ds_display_next_client(ds_client_t *);
65extern void ds_display_add_wmclient(ds_display_t *, ds_wmclient_t *);
66extern void ds_display_remove_wmclient(ds_wmclient_t *);
67extern void ds_display_add_cfgclient(ds_display_t *, ds_cfgclient_t *);
68extern void ds_display_remove_cfgclient(ds_cfgclient_t *);
69extern ds_wmclient_t *ds_display_first_wmclient(ds_display_t *);
70extern ds_wmclient_t *ds_display_next_wmclient(ds_wmclient_t *);
71extern ds_window_t *ds_display_find_window(ds_display_t *, ds_wnd_id_t);
72extern ds_window_t *ds_display_window_by_pos(ds_display_t *, gfx_coord2_t *);
73extern void ds_display_enlist_window(ds_display_t *, ds_window_t *);
74extern void ds_display_add_window(ds_display_t *, ds_window_t *);
75extern void ds_display_remove_window(ds_window_t *);
76extern void ds_display_window_to_top(ds_window_t *);
77extern ds_window_t *ds_display_first_window(ds_display_t *);
78extern ds_window_t *ds_display_last_window(ds_display_t *);
79extern ds_window_t *ds_display_next_window(ds_window_t *);
80extern ds_window_t *ds_display_prev_window(ds_window_t *);
81extern errno_t ds_display_post_kbd_event(ds_display_t *, kbd_event_t *);
82extern errno_t ds_display_post_ptd_event(ds_display_t *, ptd_event_t *);
83extern void ds_display_add_seat(ds_display_t *, ds_seat_t *);
84extern void ds_display_remove_seat(ds_seat_t *);
85extern ds_seat_t *ds_display_first_seat(ds_display_t *);
86extern ds_seat_t *ds_display_next_seat(ds_seat_t *);
87extern ds_seat_t *ds_display_default_seat(ds_display_t *);
88extern ds_seat_t *ds_display_find_seat(ds_display_t *, ds_seat_id_t);
89extern ds_seat_t *ds_display_seat_by_idev(ds_display_t *, ds_idev_id_t);
90extern errno_t ds_display_add_ddev(ds_display_t *, ds_ddev_t *);
91extern void ds_display_remove_ddev(ds_ddev_t *);
92extern ds_ddev_t *ds_display_first_ddev(ds_display_t *);
93extern ds_ddev_t *ds_display_next_ddev(ds_ddev_t *);
94extern void ds_display_add_idevcfg(ds_display_t *, ds_idevcfg_t *);
95extern void ds_display_remove_idevcfg(ds_idevcfg_t *);
96extern ds_idevcfg_t *ds_display_first_idevcfg(ds_display_t *);
97extern ds_idevcfg_t *ds_display_next_idevcfg(ds_idevcfg_t *);
98extern void ds_display_add_cursor(ds_display_t *, ds_cursor_t *);
99extern void ds_display_remove_cursor(ds_cursor_t *);
100extern void ds_display_update_max_rect(ds_display_t *);
101extern void ds_display_crop_max_rect(gfx_rect_t *, gfx_rect_t *);
102extern gfx_context_t *ds_display_get_gc(ds_display_t *);
103extern errno_t ds_display_paint_bg(ds_display_t *, gfx_rect_t *);
104extern errno_t ds_display_paint(ds_display_t *, gfx_rect_t *);
105
106#endif
107
108/** @}
109 */
Note: See TracBrowser for help on using the repository browser.