diff options
author | emersion <contact@emersion.fr> | 2017-12-14 11:20:38 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-12-14 11:20:38 +0100 |
commit | 6ef021976384163cf9fde90d635a2e22479d107a (patch) | |
tree | 2c426fa4ce6b30b29bed1fb567ffc74a7d60009f /xwayland | |
parent | 4da404818957d37fba4c0d6346a5f2f8a8e6db38 (diff) | |
parent | a9fb071d49b244b72846b384a9e2ef2d9b03a05f (diff) |
Merge branch 'master' into xwm-selection
Diffstat (limited to 'xwayland')
-rw-r--r-- | xwayland/selection.c | 2 | ||||
-rw-r--r-- | xwayland/xwayland.c | 2 | ||||
-rw-r--r-- | xwayland/xwm.c | 7 | ||||
-rw-r--r-- | xwayland/xwm.h | 105 |
4 files changed, 8 insertions, 108 deletions
diff --git a/xwayland/selection.c b/xwayland/selection.c index ba386341..220736d4 100644 --- a/xwayland/selection.c +++ b/xwayland/selection.c @@ -7,7 +7,7 @@ #include <fcntl.h> #include "wlr/util/log.h" #include "wlr/types/wlr_data_device.h" -#include "xwm.h" +#include "wlr/xwm.h" static const size_t incr_chunk_size = 64 * 1024; diff --git a/xwayland/xwayland.c b/xwayland/xwayland.c index 4db30985..c884dc63 100644 --- a/xwayland/xwayland.c +++ b/xwayland/xwayland.c @@ -19,7 +19,7 @@ #include "wlr/util/log.h" #include "wlr/xwayland.h" #include "sockets.h" -#include "xwm.h" +#include "wlr/xwm.h" #ifdef __FreeBSD__ static inline int clearenv(void) { diff --git a/xwayland/xwm.c b/xwayland/xwm.c index f1add638..4027b77e 100644 --- a/xwayland/xwm.c +++ b/xwayland/xwm.c @@ -12,7 +12,7 @@ #include "wlr/types/wlr_surface.h" #include "wlr/xwayland.h" #include "wlr/xcursor.h" -#include "xwm.h" +#include "wlr/xwm.h" #ifdef HAS_XCB_ICCCM #include <xcb/xcb_icccm.h> @@ -946,6 +946,11 @@ static int x11_event_handler(int fd, uint32_t mask, void *data) { while ((event = xcb_poll_for_event(xwm->xcb_conn))) { count++; + if (xwm->xwayland->user_event_handler && + xwm->xwayland->user_event_handler(xwm, event)) { + break; + } + if (xwm_handle_selection_event(xwm, event)) { free(event); continue; diff --git a/xwayland/xwm.h b/xwayland/xwm.h deleted file mode 100644 index 47e674c0..00000000 --- a/xwayland/xwm.h +++ /dev/null @@ -1,105 +0,0 @@ -#ifndef XWAYLAND_INTERNALS_H -#define XWAYLAND_INTERNALS_H - -#include <xcb/render.h> -#include <wayland-server-core.h> -#include <wlr/xwayland.h> - -enum atom_name { - WL_SURFACE_ID, - WM_DELETE_WINDOW, - WM_PROTOCOLS, - WM_HINTS, - WM_NORMAL_HINTS, - WM_SIZE_HINTS, - MOTIF_WM_HINTS, - UTF8_STRING, - WM_S0, - NET_SUPPORTED, - NET_WM_S0, - NET_WM_PID, - NET_WM_NAME, - NET_WM_STATE, - NET_WM_WINDOW_TYPE, - WM_TAKE_FOCUS, - WINDOW, - _NET_ACTIVE_WINDOW, - _NET_WM_MOVERESIZE, - _NET_WM_NAME, - _NET_SUPPORTING_WM_CHECK, - _NET_WM_STATE_FULLSCREEN, - _NET_WM_STATE_MAXIMIZED_VERT, - _NET_WM_STATE_MAXIMIZED_HORZ, - WM_STATE, - CLIPBOARD, - WL_SELECTION, - TARGETS, - CLIPBOARD_MANAGER, - INCR, - TEXT, - TIMESTAMP, - ATOM_LAST, -}; - -extern const char *atom_map[ATOM_LAST]; - -enum net_wm_state_action { - NET_WM_STATE_REMOVE = 0, - NET_WM_STATE_ADD = 1, - NET_WM_STATE_TOGGLE = 2, -}; - -struct wlr_xwm { - struct wlr_xwayland *xwayland; - struct wl_event_source *event_source; - struct wlr_seat *seat; - - xcb_atom_t atoms[ATOM_LAST]; - xcb_connection_t *xcb_conn; - xcb_screen_t *screen; - xcb_window_t window; - xcb_visualid_t visual_id; - xcb_colormap_t colormap; - xcb_render_pictformat_t render_format_id; - xcb_cursor_t cursor; - - // selection properties - xcb_window_t selection_window; - xcb_selection_request_event_t selection_request; - xcb_window_t selection_owner; - xcb_timestamp_t selection_timestamp; - int incr; - int data_source_fd; - int property_start; - xcb_get_property_reply_t *property_reply; - struct wl_event_source *property_source; - int flush_property_on_delete; - struct wl_array source_data; - xcb_atom_t selection_target; - bool selection_property_set; - - struct wlr_xwayland_surface *focus_surface; - - struct wl_list surfaces; // wlr_xwayland_surface::link - struct wl_list unpaired_surfaces; // wlr_xwayland_surface::unpaired_link - - const xcb_query_extension_reply_t *xfixes; - - struct wl_listener compositor_surface_create; - struct wl_listener seat_selection_change; -}; - -struct wlr_xwm *xwm_create(struct wlr_xwayland *wlr_xwayland); - -void xwm_destroy(struct wlr_xwm *xwm); - -void xwm_set_cursor(struct wlr_xwm *xwm, const uint8_t *pixels, uint32_t stride, - uint32_t width, uint32_t height, int32_t hotspot_x, int32_t hotspot_y); - -int xwm_handle_selection_event(struct wlr_xwm *xwm, xcb_generic_event_t *event); - -void xwm_selection_init(struct wlr_xwm *xwm); - -void xwm_set_seat(struct wlr_xwm *xwm, struct wlr_seat *seat); - -#endif |