Commit Graph

308 Commits

Author SHA1 Message Date
emersion 8b07a4d055
Emit xwayland unmap signal before unmapping
This allows compositors to access the surface being unmapped. This
is also more consistent with the destroy signal.
2018-04-06 14:13:52 -04:00
emersion 591ea27cf9
xwayland: refactor selection code 2018-04-03 12:56:54 -04:00
emersion 67dec2da2b
xwayland: fix incoming incr transfers 2018-04-03 11:26:55 -04:00
emersion 58ac05c276
Merge branch 'master' into xwayland-dnd 2018-04-03 10:38:46 -04:00
emersion 1cd7ff7d3a
xwayland: use strndup in xwm_get_atom_name 2018-04-03 10:36:22 -04:00
emersion d7e03c7adc
xwayland: fix outgoing incr transfers 2018-04-03 10:25:50 -04:00
emersion 8f84c5b05f
xwayland: only send one target at a time 2018-04-03 00:44:04 -04:00
emersion 103e59703f
xwayland: improve xwm_selection_send_notify 2018-04-02 21:55:09 -04:00
Drew DeVault 506acbdecd Missed a spot 2018-04-02 20:57:09 -04:00
emersion 92b74071d0
xwayland: support multiple wayland → xwayland selection transfers
This fixes drag'n'drop support for Chromium.
2018-04-02 19:56:41 -04:00
emersion 8836b4f024
Merge branch 'master' into xwayland-dnd 2018-04-02 15:57:04 -04:00
emersion 692f1746cf
xwayland: specify xwm cursor stride in bytes 2018-03-31 00:22:58 -04:00
emersion 865b0aa123
xwayland: rename map_notify to map for consistency 2018-03-30 11:01:23 -04:00
emersion cadfccf1fd
xwayland: use a separate window for drag'n'drop 2018-03-29 17:53:47 -04:00
emersion 79dd4a0ff9
xwayland: receive DND_FINISHED 2018-03-29 12:11:30 -04:00
emersion ca2a73b90d
xwayland: allow drag data source transfer after drag ends 2018-03-29 11:40:19 -04:00
emersion 5dc5f446a8
xwayland: send drag'n'drop action to data source 2018-03-29 11:19:42 -04:00
emersion 6fd50947bd
xwayland: improve error handling 2018-03-28 21:36:53 -04:00
emersion 3effe153bc
xwayland: make wayland → xwayland work 2018-03-28 17:32:52 -04:00
emersion 30babb3865
xwayland: send DND_LEAVE 2018-03-28 16:26:45 -04:00
emersion e208f8dd8c
xwayland: fixes events not flushed causing issues with GTK apps 2018-03-28 16:06:49 -04:00
emersion bde859452d
xwayland: print names of unsupported properties and client messages 2018-03-28 15:45:15 -04:00
emersion 2a34b154e6
xwayland: send DND_DROP 2018-03-28 15:33:23 -04:00
emersion 73394deb76
xwayland: send DND_POSITION 2018-03-28 14:16:14 -04:00
emersion 0d7a81ccdf
xwayland: send DND_ENTER 2018-03-28 12:59:11 -04:00
emersion b6c1760de5
xwayland: create DND window, add DND atom helpers 2018-03-27 12:04:37 -04:00
emersion e78252adab
Fix segfault in xwm_read_data_source 2018-03-25 18:18:26 -04:00
Dominique Martinet 2910972b25 xwm.h: fix guard ifdef and remove wlr_ prefix from xwm_atoms_contains 2018-03-04 11:16:18 +01:00
Dominique Martinet d9a724c4a2 xcb errors: init errors context at start
`xcb_errors_context_new` is more than just a malloc, it does a few
xcb requests so we benefit from not generating a new context everytime
2018-03-03 17:06:30 +01:00
Dominique Martinet 7d1870c6f1 move xwm.h out of include/wlr
xwm.h was meant to be private, so move it to include/xwayland/xwm.h
We had an ifdef WLR_HAS_XCB_ICCCM in xwayland.h which was easy to move
to xwm, it is not safe to use the WLR_HAS_* in the public headers.

I checked a few of our current users and none rely on xwm.h being
public as expected (rootston, sway, hsroots)
2018-03-03 17:03:21 +01:00
Dominique Martinet f481791669 xcb error: get unhandled events names
This provides more friendly debug messages for unhandled events,
for example:
[xwayland/xwm.c:1033] unhandled X11 event: FocusOut (10)
[xwayland/xwm.c:1033] unhandled X11 event: MappingNotify (34)
2018-03-03 16:27:29 +01:00
Dominique Martinet 8026cd2a06 xcb error: always log sequence 2018-03-03 16:13:45 +01:00
Dominique Martinet 6f9da97565 xcb errors: address declare-assign style 2018-03-03 12:00:32 +01:00
Dominique Martinet f8428d1063 xcb errors: optional dependency with improved messages
Now message can look like:
[xwayland/xwm.c:991] xcb error: op ChangeProperty (no minor), code Window (no extension), value 6291465

instead of this one when the lib is not available:
[xwayland/xwm.c:999] xcb error: op 18:0, code 3, sequence 103, value 6291465

The value in case of Window is the window id, so we can tell what
function applied on which window which is a good start.
The sequence ought to be able to tell us more precisely which
invocation it was, but we never log it when calling functions
so is useless in practice and no longer logged.
2018-03-03 11:46:04 +01:00
Dominique Martinet 2a9ba5c8dc xcb errors: log raw values 2018-03-03 11:43:23 +01:00
Dominique Martinet 5ec06dcecd xwm: fix call of xcb_change_window_attributes for old gcc versions
gcc 6.3.0 (at least) complains about &values:
expected ‘const uint32_t * {aka const unsigned int *}’ but argument
is of type ‘uint32_t (*)[1] {aka unsigned int (*)[1]}’

Reported by thorwil on irc
2018-03-01 21:13:00 +01:00
Markus Ongyerth bb676013ed add xwayland unmanaged tests to support dmenu
This adds `wlr_xwayland_surface_is_unamanged`, to allow compositors more
fine grained control over XWayland focus.
A surface that is unmanaged should not receive focus, while other
windows that are just override redirect may want it (dmenu).
The way unamanged is determined is taken from wlc.
2018-02-26 12:02:49 +01:00
emersion b1e2718dd7
xwayland: fix some use-after-free in xwm 2018-02-23 10:20:53 +01:00
Drew DeVault 1d9be89e2d
Revert "ELF Visibility" 2018-02-19 18:01:27 -05:00
Scott Anderson 86269052eb Explicitly export EFL symbols 2018-02-19 14:26:40 +13:00
Drew DeVault 8c1cc45c7d
Merge pull request #629 from emersion/safe-wl-resource-get-user-data
Wrap wl_resource_get_user_data into safer helper functions
2018-02-16 09:27:26 -05:00
Rodrigo Lourenço 168e26489a Add missing dependencies 2018-02-14 18:42:39 +00:00
emersion 392d54a35d
Wrap wl_resource_get_user_data into safer helper functions
This ensures we're not incorrectly casting a resource.

Fixes #628
2018-02-13 23:48:46 +01:00
emersion c2e1474010
Reformat all #include directives 2018-02-12 21:29:23 +01:00
emersion 36ead80cd1
Make wlr_signal_emit_safe private 2018-02-12 19:52:47 +01:00
emersion 5e58d46cc1
Add wlr_signal_emit_safe 2018-02-12 09:12:31 +01:00
emersion 59c53e8333
Merge remote-tracking branch 'upstream/master' into output-damage 2018-01-21 22:18:06 +01:00
emersion f704c3d42b
rootston: fix damage tracking for fullscreen xwayland views 2018-01-21 22:08:38 +01:00
Johannes Schramm 47eb478c35 style: add else keywords in xwm.c 2018-01-21 17:04:23 +01:00
Johannes Schramm dcc743047b style: include brackets for if/while/for, even if it's a single statement 2018-01-21 16:28:21 +01:00
emersion eeffe11337
surface: add wlr_surface new_subsurface and wlr_subsurface destroy events 2018-01-21 14:22:33 +01:00
emersion 65b28b3823
xwayland: render children window in fullscreen 2018-01-14 18:19:37 +01:00
emersion 38ed3b4245
seat: rename selection_source to selection_data_source, remove unused data_device 2017-12-30 09:58:04 +01:00
Dominique Martinet 6ed1884c84 xwm_get_render_format: fix typo in error message 2017-12-29 21:23:55 +01:00
Dominique Martinet ec952931a1 wlr_xwayland: preserve end of struct on restart
This is more robust than trying to recopy a few fields.
Note: wlr_xwayland->events.ready now resets after each trigger, so one can
hook on it again and be called when restart is ready
2017-12-29 20:50:50 +01:00
Dominique Martinet a6fb4b007b xwm_get_render_format: check NULL return value 2017-12-29 20:31:04 +01:00
Dominique Martinet 41649a1f9a xwm_selection_finish: set NULL seat for xwayland
While they could eventually be split appart, the current approach could lead to
double wl_list_remove() calls on selections which is incorrect
2017-12-29 20:30:49 +01:00
Dominique Martinet e0eafa0429 xwayland: listen to wlr_seat destroy signal 2017-12-29 19:00:08 +01:00
Dominique Martinet 61b91a5721 xwayland restart: copy seat and events over
This is very ugly, there must be a better way to do that (not memset it?)
Meanwhile, this fixes rootston xwayland on restart
2017-12-29 17:33:11 +01:00
Dominique Martinet bb0d888f25 xwayland selection: further cleanup on Xwayland exit
This is necessary if our last primary/clipboard selection was on Xwayland,
and we try to paste to native wayland after Xwayland died
2017-12-29 16:30:59 +01:00
Dominique Martinet f8a346380c xwayland xwm_get_render_format: free reply 2017-12-29 15:56:47 +01:00
Dominique Martinet dad9543c51 Xwayland: remove xwm from selection seat listeners on destroy 2017-12-29 15:56:26 +01:00
Dominique Martinet e5dd98c7f5 xwayland/selection: handle wl_array_add failure better
Just abort and deregister instead of trying to throw some input out,
which would have lead to inconsistent paste
2017-12-28 12:17:57 +01:00
Dominique Martinet 3eb4fa15ee ENOMEM checks: consistently check wl_array_add return 2017-12-28 09:48:35 +01:00
Björn Esser ff13849624
config: Avoid clash with other config-headers 2017-12-27 17:13:58 +01:00
emersion a79dc7df51
Merge pull request #524 from acrisci/role-committed
[wip] Role committed
2017-12-27 13:02:49 +01:00
Tony Crisci 5c5f0611c4 xwayland: role committed 2017-12-27 06:50:21 -05:00
Tony Crisci e809250171
Merge pull request #519 from emersion/xwayland-primary-selection
Implement xwayland primary selection sync
2017-12-27 06:23:04 -05:00
emersion 1c9b09ca92
Add logging to selection message handlers 2017-12-27 11:58:51 +01:00
emersion b3072f81fe
Allow calling xwm_set_seat with a NULL seat 2017-12-27 11:49:25 +01:00
Björn Esser 57a09c8ca4
config: Put all defines into config.h 2017-12-26 18:51:27 +01:00
emersion 998267e291
Fix primary selection not sent to xwayland when clipboard is empty 2017-12-26 12:20:01 +01:00
emersion 4a11609b76
Fix use-after-free when destroying selection sources 2017-12-25 18:18:26 +01:00
emersion cdc21cdcff
Properly free selection sources 2017-12-25 16:23:17 +01:00
emersion 6dffaa7bb7
Implement xwayland primary selection sync 2017-12-25 16:10:16 +01:00
emersion 810c4b119b
Fix clipboard from xwayland to wayland 2017-12-15 09:42:42 +01:00
emersion 76dcb694c1
Send empty selection when clipboard is empty 2017-12-15 09:37:04 +01:00
emersion 5584f42c1e
Destroy xwm selection window on destroy 2017-12-15 00:05:05 +01:00
emersion 6b42bfad18
Merge branch 'master' into xwm-selection 2017-12-14 23:59:04 +01:00
emersion b884025558
Deny access to clipboard if no xwayland window is focused 2017-12-14 23:57:44 +01:00
emersion 75ef7860bb
Merge branch 'master' into display-destroy 2017-12-14 20:29:30 +01:00
emersion 343efd0c20
Only reply to clipboard selection events 2017-12-14 16:44:30 +01:00
emersion a4094c82c7
Support selection MIME types from wayland to xwayland 2017-12-14 16:24:12 +01:00
emersion 62a16a356d
Support selection MIME types from xwayland to wayland 2017-12-14 13:59:36 +01:00
emersion 6ef0219763
Merge branch 'master' into xwm-selection 2017-12-14 11:20:38 +01:00
Tony Crisci ea4b871e16 xwm: user custom event handler 2017-12-13 17:54:19 -05:00
emersion c67a5824b8
Merge branch 'master' into display-destroy 2017-12-11 16:14:03 +01:00
Tony Crisci 4da4048189 remove todo 2017-12-09 09:21:11 -05:00
Tony Crisci a4bb0574c4 selection fixes 2017-12-08 09:46:50 -05:00
Tony Crisci 52cda5653b Revert "xwm: only take clipboard if window is focused"
This reverts commit e3542d879d.
2017-12-08 09:23:26 -05:00
Tony Crisci 35188834db Merge branch 'master' into feature/xwm-selection 2017-12-08 09:22:44 -05:00
Tony Crisci 31bafc2461 xwm: use edges enum 2017-12-08 06:03:57 -05:00
emersion e30b943fbd
Destroy xwayland client when possible 2017-12-08 10:58:36 +01:00
emersion b06535718d
Do not destroy wl_client in wlr_xwayland_finish 2017-12-08 01:38:45 +01:00
emersion 18eb1eee3f
Listen to display destroy in xwayland, rename wlr_egl_free 2017-12-08 00:59:37 +01:00
Tony Crisci 86df909256 xwayland: remove xwayland param from xsurface methods 2017-12-03 17:30:57 -05:00
Tony Crisci 5d7eb438d9
Merge pull request #437 from emersion/fullscreen
Fullscreen support
2017-11-30 03:25:05 -05:00
Tony Crisci e3542d879d xwm: only take clipboard if window is focused 2017-11-22 14:58:36 -05:00
Greg V 1ae944c071 Use SIGUSR2 for vt switching instead of SIGUSR1
Xwayland uses SIGUSR1 to signal readiness.
With direct(-freebsd) session and Xwayland, wlroots was confusing the
Xwayland readiness signal with a vt switch signal, freezing the desktop.

Same problem was found in Weston in 2014:
https://phabricator.freedesktop.org/T7080
2017-11-22 16:29:31 +03:00
Tony Crisci fc17c74516 xwayland: clean up seat setting 2017-11-22 08:23:23 -05:00
Tony Crisci b0683874e9 xwm: send selection data 2017-11-22 08:10:06 -05:00
Greg V 71aa634ac5 Fix Xwayland second socket path on non-Linux systems
It was creating two sockets with the same path
2017-11-22 15:17:10 +03:00
Tony Crisci ea6f77b484 xwm: get selection data 2017-11-21 18:25:21 -05:00
Tony Crisci 39e2ea8420 xwm: get selection targets 2017-11-21 18:09:25 -05:00
emersion dcb168914e
Merge branch 'master' into fullscreen 2017-11-21 18:34:12 +01:00
Tony Crisci 1ada1b7f0b xwm: x11 data source 2017-11-21 11:19:55 -05:00
Tony Crisci c67cf2e9e4 xwm: handle selection stubs 2017-11-21 10:18:44 -05:00
Tony Crisci 1f976a0f25 xwm: xfixes selection notify 2017-11-21 09:25:05 -05:00
Tony Crisci e786d17f63 Merge branch 'master' into feature/xwm-selection 2017-11-21 07:55:36 -05:00
emersion 151901123f
Merge branch 'master' into refactor-wlr-list 2017-11-20 21:15:58 +01:00
emersion bc68f26960
Fix evince fullscreen under xwayland 2017-11-20 19:52:47 +01:00
Tony Crisci 444257b6b1 xwm: selection init 2017-11-20 08:51:40 -05:00
Tony Crisci 3880fb0a53 xwm: selection stubs 2017-11-20 07:42:09 -05:00
Tony Crisci 0672d9cb52 bug: properly send WM_STATE 2017-11-19 17:55:02 -05:00
emersion 016744ef4d
Refactor wlr_list inside wlroots 2017-11-19 00:17:40 +01:00
Drew DeVault a317ecdab8 Run startup command after xwayland is ready 2017-11-12 16:01:48 -05:00
emersion 26dadacb71
Add wl_shell support for maximized views 2017-11-09 20:06:05 +01:00
emersion 758514fe5d
Fix xwayland _NET_WM_STATE handling 2017-11-09 11:21:55 +01:00
emersion 900fb326f7
Fixes segfault when no xcb_render_pictforminfo_t is available 2017-11-02 17:21:00 +01:00
emersion bb76f52640
Fetch xcb_render_pictformat_t at startup 2017-11-02 16:59:57 +01:00
emersion 3f4ad47421
Use compositor theme for xwm cursor 2017-11-02 16:49:22 +01:00
emersion ddd7b7711c
Load xwm cursor from theme 2017-11-02 15:52:02 +01:00
emersion 4254c28138
Free xwm cursor in xwm_destroy 2017-11-02 11:09:14 +01:00
emersion bdaf66a292
Set xwayland root cursor 2017-11-02 00:03:55 +01:00
Dominique Martinet bf225a60d8 rootston: flush 'close' command on Xwayland
The close would otherwise wait for another xcb event to happen.
Flushing helps 'close' feel reactive.
2017-11-01 20:08:26 +01:00
Tony Crisci ce72a687ce xwm: cleanup send focus window logic 2017-10-29 10:40:16 -04:00
Tony Crisci 88316e7921 xwm: get rid of xcb call macro 2017-10-29 10:36:16 -04:00
Tony Crisci 942a19a069 xwm: cleanup and consistent naming 2017-10-29 10:31:01 -04:00
Tony Crisci 680f8a169d xwm: remove duplicate calls in net wm state read 2017-10-27 15:32:19 -04:00
Tony Crisci 325def3841 xwm: create colormap and visual depth detection 2017-10-27 15:20:50 -04:00
Tony Crisci be297d9d14 xwm: net wm state 2017-10-27 13:17:34 -04:00
Tony Crisci 6a4290b86a xwm: moveresize events 2017-10-27 10:48:09 -04:00
Tony Crisci 4a106648c4 xwm: remove incorrect implementation of net wm state 2017-10-26 15:58:18 -04:00
Tony Crisci 32b848bd46 xwm: handle focus in 2017-10-26 11:54:39 -04:00
Tony Crisci 930ab06857 xwm: send net_wm_state 2017-10-26 11:39:08 -04:00
Tony Crisci 263279b7e0 xwm: rewrite xwm initialization 2017-10-26 10:39:36 -04:00
Tony Crisci ff0006d0f0 xwm: refactor client message handler 2017-10-26 09:01:53 -04:00
Tony Crisci a861b380ef xwm: add net active window to supported 2017-10-25 20:41:55 -04:00
Tony Crisci 7914f4bda9 xwm: dont focus override redirect windows 2017-10-25 20:40:55 -04:00
Tony Crisci d6a1e6fd79 xwm: dont flush if no events 2017-10-25 18:51:15 -04:00
Tony Crisci b443b9a998 xwm: set net active window on xwm create 2017-10-25 08:42:42 -04:00
Tony Crisci 0d1dd84a48 xwm: improve activation and dont send focus twice 2017-10-25 08:39:28 -04:00
Tony Crisci 1be650d78a xwm: only emit unmap notify once 2017-10-25 07:12:25 -04:00
Tony Crisci e5ee01254b xwm: map and unmap notify 2017-10-24 21:07:46 -04:00
Tony Crisci 22435e00c5 xwm: 80col cleanup 2017-10-24 19:18:31 -04:00
Tony Crisci 7643765e7b xwm: unpaired surface list cleanup 2017-10-24 19:16:50 -04:00
Alexander Taylor 3277c6d994 Fix order of WM_HINTS and WM_PROTOCOLS in xwm atom_map 2017-10-24 19:11:57 -04:00
Tony Crisci 2ff94d0036 xwm: get rid of displayable surfaces list 2017-10-24 18:57:20 -04:00
Tony Crisci 79e14f65e0 xwm: fix lists 2017-10-24 14:37:18 -04:00
Tony Crisci fa94a06fd6 xwm: handle configure notify 2017-10-24 13:57:10 -04:00