Commit Graph

186 Commits

Author SHA1 Message Date
Ryan Dwyer
60a174eb11 xwayland: Introduce request_activate event 2018-09-02 08:50:17 +02:00
Ryan Dwyer
69a5279f79 xwayland: Add WM_STATE modal property
Adds a modal property to indicate whether the surface wants to be a
modal.
2018-09-02 08:50:04 +02:00
Markus Ongyerth
81cc842f8f reintroduce xwayland is_unmanaged
153f37bdf5 (#1145) removed the
wlr_xwayland_is_unamanged function while fixing OR, because it was
belieived that it's supposed to work around the broken OR handling.

This was a misunderstanding. is_unmanaged is (while sort of a hack)
intended to work around inherent differences between "real" X sessions
and our Xwayland/wayland situation.

The main reason it exists is to support applications like rofi and dzen,
while not handing focus to other OR windows (which should *not* be
required).
Traditionally, these applications just grabbed input from X and didn't
need to be focused by any logic in the WM. Which of course doesn't work
in wayland compositors. So we have to give them focus in some way.
Giving *every* OR window focus, breaks other applications that don't
expect focus to change.

A testcase that was pointed out to me where wlr_xwayland_is_unamanged was
breaking things is https://github.com/swaywm/sway/issues/2128 (syncplay,
gitk, gitgui)
Supposedly it broke using keyboard to navigate the menus.
I can't reproduce this with this patch. The popups can be navigated as
long as the parent has focus.
2018-07-29 14:43:17 +02:00
Drew DeVault
f1b65b34a6
Merge pull request #1127 from emersion/surface-precommit
surface: add wlr_surface_role.precommit
2018-07-27 13:21:03 -04:00
Drew DeVault
4b096fc114 Revert "Merge pull request #1153 from emersion/include-config"
This reverts commit ef0a6ea4d2, reversing
changes made to 8d03bc9178.
2018-07-21 09:44:20 -04:00
emersion
41094a7df5 Always include config.h 2018-07-21 13:08:23 +01:00
Ryan Dwyer
dc58c1356d Introduce set_hints event for xwayland 2018-07-19 21:07:11 +10:00
emersion
5dca4741df xwayland: make xwm_surface_activate static 2018-07-18 19:59:58 +01:00
emersion
153f37bdf5 xwayland: handle override_redirect flag changes
The override_redirect flag can change on configure notify and
on map notify. This adds an event to know when it changes.

This removes wlr_xwayland_surface_is_unmanaged which was wrongly
using the window type to decide whether the view should be
unmanaged.

A similar patch was proposed to Weston, but has never been
merged upstream [1].

[1]: https://patchwork.freedesktop.org/patch/211161/
2018-07-18 18:51:03 +01:00
emersion
16d7e09d99 surface: add wlr_surface_role.precommit
This allows to emit the unmap event before the surface becomes
actually unmapped for most shells.
2018-07-15 19:30:19 +01:00
Drew DeVault
e226e2c011 Missed some old wlr_log calls 2018-07-11 18:36:31 -04:00
Drew DeVault
c0b4217fce
Merge pull request #1116 from emersion/surface-role
surface: replace wlr_surface_set_role_committed with wlr_surface_role
2018-07-11 15:27:42 -07:00
emersion
7cbef15206
util: add wlr_ prefix to log symbols 2018-07-09 22:49:54 +01:00
emersion
33db4263a0
surface: replace wlr_surface_set_role_committed with wlr_surface_role 2018-07-07 22:45:16 +01:00
Armin Preiml
26b2012b5e fix style issue 2018-07-03 15:11:02 +02:00
Armin Preiml
e6d613ca2e fix: add stack update on focus change
Enable the stack update again for focus changes on non-focusable views.
2018-07-03 15:03:00 +02:00
Armin Preiml
f93234d6f5 fix: tabs instead of spaces 2018-06-29 19:25:20 +02:00
Armin Preiml
d0b3aed584 do not send focus request to a window that doesn't allow this 2018-06-29 17:58:47 +02:00
Dominique Martinet
4a1c9a1925 xwm: fix use-after-free involving parents/children
Happens when e.g. closing gimp.

==24039==ERROR: AddressSanitizer: heap-use-after-free on address 0x6150001a7a78 at pc 0x7f09b09f1bb2 bp 0x7ffcf0237bf0 sp 0x7ffcf0237be0
WRITE of size 8 at 0x6150001a7a78 thread T0
    #0 0x7f09b09f1bb1 in wl_list_remove ../util/signal.c:55
    #1 0x7f09b094cf03 in xwayland_surface_destroy ../xwayland/xwm.c:295
    #2 0x7f09b0950245 in xwm_handle_destroy_notify ../xwayland/xwm.c:717
    #3 0x7f09b095304a in x11_event_handler ../xwayland/xwm.c:1149
    #4 0x7f09b0c68f01 in wl_event_loop_dispatch src/event-loop.c:641
    #5 0x7f09b0c67601 in wl_display_run src/wayland-server.c:1260
    #6 0x40a2f4 in main ../sway/main.c:433
    #7 0x7f09b011018a in __libc_start_main (/lib64/libc.so.6+0x2318a)
    #8 0x40b749 in _start (/opt/wayland/bin/sway+0x40b749)

0x6150001a7a78 is located 120 bytes inside of 496-byte region [0x6150001a7a00,0x6150001a7bf0)
freed by thread T0 here:
    #0 0x7f09b2b58880 in __interceptor_free (/lib64/libasan.so.5+0xee880)
    #1 0x7f09b094d1a1 in xwayland_surface_destroy ../xwayland/xwm.c:315
    #2 0x7f09b0950245 in xwm_handle_destroy_notify ../xwayland/xwm.c:717
    #3 0x7f09b095304a in x11_event_handler ../xwayland/xwm.c:1149
    #4 0x7f09b0c68f01 in wl_event_loop_dispatch src/event-loop.c:641
    #5 0x7f09b0c67601 in wl_display_run src/wayland-server.c:1260
    #6 0x40a2f4 in main ../sway/main.c:433
    #7 0x7f09b011018a in __libc_start_main (/lib64/libc.so.6+0x2318a)
    #8 0x40b749 in _start (/opt/wayland/bin/sway+0x40b749)

previously allocated by thread T0 here:
    #0 0x7f09b2b58e50 in calloc (/lib64/libasan.so.5+0xeee50)
    #1 0x7f09b094b585 in xwayland_surface_create ../xwayland/xwm.c:119
    #2 0x7f09b0950151 in xwm_handle_create_notify ../xwayland/xwm.c:706
    #3 0x7f09b0953032 in x11_event_handler ../xwayland/xwm.c:1146
    #4 0x7f09b0c68f01 in wl_event_loop_dispatch src/event-loop.c:641
    #5 0x7f09b0c67601 in wl_display_run src/wayland-server.c:1260
    #6 0x40a2f4 in main ../sway/main.c:433
    #7 0x7f09b011018a in __libc_start_main (/lib64/libc.so.6+0x2318a)
    #8 0x40b749 in _start (/opt/wayland/bin/sway+0x40b749)
2018-06-25 17:28:44 +09:00
Ilia Bozhinov
5dd1a838f3 xwm: set the proper event mask in client messages
Fixes #927
2018-05-26 10:08:20 +03:00
emersion
cf10cbc00c
Use UTF-8 xwayland window title if available 2018-05-04 20:44:00 +01:00
emersion
001045e47a
xwayland: make utility windows unmanaged again
7f70d244a9 made utility windows
managed, because it made sense according to the spec. Turns out
Firefox uses them for popups.
2018-04-27 10:44:20 +01:00
Drew DeVault
04af09862a
Merge pull request #918 from emersion/xwayland-unmapped-request-configure
xwayland: forward configure events to compositor when unmapped
2018-04-27 10:49:31 +02:00
emersion
7f70d244a9
xwayland: fix some Chromium comboboxes
Some comboboxes (e.g. in chrome://flags) are advertized as…
Notifications of course! Yeah, notifications, the thing that
tells you you have mail, your battery is low, or the dog has
eaten your carpet. This isn't the first time we notice Chromium's
X11 backend is pretty shit.

Anyway, added notifications and splash screens to the list of
unmanaged windows. Also removed utility windows because those
should be managed, but maybe I'm wrong and I'll revert this.
2018-04-26 23:18:59 +01:00
emersion
af668ceb7c
xwayland: forward configure events to compositor when unmapped 2018-04-26 22:18:31 +01:00
emersion
625a7a48dc
Don't use the wlr_ prefix for static functions 2018-04-25 23:51:00 +01:00
emersion
3bce5dfc9f
Fix segfaults in wlr_surface_is_* 2018-04-21 19:04:48 +01:00
emersion
fa02e30adf
xwayland: emit new_surface when unmapped 2018-04-13 14:37:13 +02:00
emersion
8dec7036d0
Always unmap before destroying surface 2018-04-11 23:09:13 -04:00
emersion
17d0440b75
Add wlr_xwayland_surface_ping 2018-04-08 16:28:01 -04:00
emersion
c55ad11d96
xwayland: add _NET_WM_WINDOW_TYPE_MENU support 2018-04-08 12:02:52 -04:00
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
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
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
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
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
b6c1760de5
xwayland: create DND window, add DND atom helpers 2018-03-27 12:04:37 -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