Commit Graph

276 Commits

Author SHA1 Message Date
Mike Blumenkrantz 632e4097b5 always send valid size geom when configuring xdg6 popups
sending 0x0 here when passed (which happens during initial commit)
breaks the universe
2016-11-29 11:44:29 -05:00
Mike Blumenkrantz 79d157f5d5 fix use of E_CONTAINS macro for xdg-shell positioners
last week was backwards week
2016-11-29 11:30:27 -05:00
Mike Blumenkrantz 7851769eab handle illegal xdg-shell resource unbinds
this occurs when the shell resource dies before all the surfaces/positioners
are destroyed. usually this means the client has aborted, so there's no point in
sending an error or doing anything beyond performing a thorough cleanup
2016-11-29 11:30:24 -05:00
Mike Blumenkrantz 50b2712f61 destroy xdg role surfaces if base surface is destroyed
this is illegal, but at least we should not leak the client when it happens
2016-11-29 11:09:31 -05:00
Mike Blumenkrantz 2a9d4e73c5 correctly handle xdg surface deletion and pointer clearing
fixes crashing/leaking when deleting surfaces
2016-11-29 11:08:46 -05:00
Mike Blumenkrantz bf40d92ad8 handle xdg-shell maximize/unmaximize calls correctly 2016-11-29 10:11:23 -05:00
Chris Michael ddaf5b9a20 add missing EINA_UNUSED for unused function parameters
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2016-11-23 11:02:49 -05:00
Mike Blumenkrantz 5497fadce4 xdg6 support 2016-11-22 11:31:22 -05:00
Mike Blumenkrantz ad3d0bd8c5 split wl_desktop_shell into separate files per shell
this should make it easier to selectively disable shells, and it will
definitely simplify future shell additions
2016-10-10 11:30:52 -04:00
Derek Foreman e4da5ba56a Auto generate wayland protocol
Replaces any checked-in wayland protocol files with auto-generation.

In some cases this means renaming include files that didn't use "standard"
names, or adding missing xml files.  Any source edits are simple search and
replace, there should be no functional changes.
2016-09-26 15:23:50 -05:00
Mike Blumenkrantz 54fa1a0ca4 adjust xdg-shell window menu coords by client's coords
the coords passed in this method are relative to the window geometry
2016-07-19 14:15:21 -04:00
Mike Blumenkrantz 5546c2a425 set unmax flag for xdg shell unmaximize
ref b5576dbb8c
2016-07-13 11:26:16 -04:00
Derek Foreman 1f44a593c2 Track whether a surface is an xdg one 2016-06-29 16:19:20 -05:00
Derek Foreman 7b470c402e Set up attributes properly for wl_shell transient windows
This fixes Qt sub-windows.
2016-06-29 13:20:45 -05:00
Derek Foreman bdf1017f90 Don't send configure to wl_shell popups
This confuses Qt badly, and rightly so, because we shouldn't be
doing it.
2016-06-23 11:26:57 -05:00
Derek Foreman 453e6adc33 Use e_client_util_is_popup for checking wayland clients
All the different popup types are tested by the helper function,
the current wayland tests were missing some.
2016-06-23 11:22:47 -05:00
Derek Foreman 11796c8b88 Update some wl_shell window handling logic
Our xdg_shell implementation has received some fixes that are also
applicable to wl_shell.  Qt still uses wl_shell, so we do have a test
case, and do need to keep it up to date.

This copies some window attributes, clamping logic, and diagnostic prints
from the xdg_shell implementation.
2016-06-21 12:33:49 -05:00
Mike Blumenkrantz 0f022976e0 use pending wl maximize value to determine maximize flag in xdg configure
fixes some cases where fast configures would break maximizing
2016-06-20 16:04:10 -04:00
Derek Foreman b6819e5a77 Fix wl_shell popup livelock
Trying to put wl_shell popups in the popup layer results in stacking
problems later and a never ending loop.

Just don't.

fix T3433
2016-06-16 14:37:15 -05:00
Derek Foreman 4f8dd3f1e5 Fix wl_shell clamping rules
The current clamping logic clamps submenus so that they're contained
within their parent instead of adjacent to them.
2016-06-15 16:39:08 -05:00
Derek Foreman 2463ce8b43 Fix crash in wl_shell surface destroy
wl_shell doesn't set up shell.data, but this destructor is shared
with xdg_shell which does.
2016-06-15 15:19:32 -05:00
Mike Blumenkrantz ac86429a2c manage pending state list more effectively in wl shell
fix T3433
2016-05-10 11:34:48 -04:00
Mike Blumenkrantz 33503babc8 apply xdg-shell activated state based on popup surface focus hierarchy
if a popup is activated, the originating toplevel surface should also remain
focused
2016-04-27 11:28:07 -04:00
Mike Blumenkrantz 53320330c6 protect xdg-shell functions from accessing deleted client data
this is mostly an issue for internal windows since they get deleted by
the compositor before the client is aware
2016-04-25 14:11:24 -04:00
Mike Blumenkrantz 6aee63d1dc redo wl (xdg)shell surface ping
- remove (wrong) global variables which tracked client-specific resources
- start ping upon creating a shell surface
- track client-specific shell resources on a per-client basis
2016-04-18 15:37:22 -04:00
Mike Blumenkrantz a86af80da0 trivial wl shell module cleanups
remove some old comments, don't pass global data as function param
2016-04-18 15:30:03 -04:00
Mike Blumenkrantz 536a3a7ff6 make startup/restart app exec timing protocol-specific
this allows different display protocols to start their applications at
different times to ensure that any initialization has completed prior to
starting anything requiring a window

fix T3475
2016-04-18 15:27:47 -04:00
Mike Blumenkrantz 10bd6e5fcc handle maximize_anims_disabled for client-side maximize toggles
fix T3434
2016-04-11 14:38:03 -04:00
Mike Blumenkrantz 63af4ea865 buffer server-side (un)maximize commands to ensure synchronization in wayland
maximize is client-initiated and compositor-enforced in wayland, meaning that a
maximize should only be acted upon in the compositor after the client has
acknowledged that it has transitioned into the maximized state (likely removing
part of its csd region) and has resized itself to match the expected maximize
size

fix T3297
2016-04-08 16:08:32 -04:00
Mike Blumenkrantz 992e04feb2 wayland client maximize/fullscreen cleanups
ref da74e690f0
2016-04-05 16:54:04 -04:00
Mike Blumenkrantz da74e690f0 redo xdg shell to enforce double buffering of client-side configure serials
xdg shell configure states (maximize, fullscreen) return a client ack when the
client has applied the state. the ack, followed by the next surface commit,
indicates that the surface is ready to be transitioned into the configured state
2016-04-05 15:05:10 -04:00
Mike Blumenkrantz c27e033d66 remove clamping for wl xdg popup configures
I don't remember why I added it but it's wrong and so was I
2016-03-31 14:58:55 -04:00
Mike Blumenkrantz 2bf2772712 don't set wl xdg popups to POPUP layer, set popups as placed on creation
resolves random popup placements
2016-03-31 14:06:29 -04:00
Mike Blumenkrantz 607975ccc0 enforce wl xdg popup stacking relative to parent stacking 2016-03-31 14:05:47 -04:00
Mike Blumenkrantz 336721e693 set destructor for xdg popups when setting implementation
popups never get deleted without this
2016-03-31 14:04:47 -04:00
Mike Blumenkrantz 56121908d5 remove wl xdg popup new_client stuff from get_popup method
ref d7f7eb9448
2016-03-31 12:54:21 -04:00
Mike Blumenkrantz d7f7eb9448 redo wayland client unignore mechanism
wayland clients were previously set as ignored until they obtained
a shell surface in order to avoid early execution of things like placement.

this had no effect.

the ignore must last until the first commit, at which point surfaces have been
sized and can be placed accurately without needing to move the surface around
a lot of times due to resize/frame adjust/birthdays
2016-03-24 16:43:32 -04:00
Derek Foreman 6f3e670f75 Fix xdg-shell destructors
_e_shell_surface_destroy() is already the implementation's destructor, so
it'll be called when the surface is destroyed anyway.  What we have to do
here is just call wl_resource_destroy(resource) - which will call that
function for us.

It'll also do us the favor of actually destroying the resource and
removing it from the client's resource list so we won't get a SECOND call
to _e_shell_surface_destroy() on client exit.
2016-02-18 12:31:31 -06:00
Mike Blumenkrantz f54bf1ec60 allocate E_Shell_Data for all xdg surfaces (popups)
this crashes if the shell surface does not have shell data
2016-01-21 17:21:31 -05:00
Mike Blumenkrantz 0df8c94572 set want_focus for xdg popup surfaces on creation
these types of surfaces should grab focus as early as possible, and
setting the flag at this time ensures that it will be handled during
the next client eval
2016-01-19 13:45:08 -05:00
Mike Blumenkrantz d52fffeec9 call xdg surface map when creating a surface for visible internal windows
if windows are created during startup, they will attempt to show themselves
before xdg surface operations are available, leading to a scenario where they
will never successfully map themselves. if the elm win object is visible, this
indicates a mapped internal window, so directly call the map function at this
time to make the window visible
2016-01-19 13:43:06 -05:00
Derek Foreman 3304ea7b6c Remove inappropriate usage of %m
Summary:
printf %m stringifies and prints errno.  This is actually hugely confusing
if used in error messages after failures that don't set errno.

You may get "Success", or you may get an errno that was harmless ages
ago.

Some of the functions followed by %m have only some error paths that
set errno, or make multiple system calls that can set errno
independently - knowing the errno at failure time is unlikely to be
useful in these cases.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3571
2016-01-14 12:41:47 -05:00
Chris Michael e40033be0a Fix type of size fields for E_Shell_Data
In the xdg_surface_configure_send function, the size params
(width/height) come in as int32_t. This patch makes the E_Shell_Data
fields for width & height match those (else we end up with compiler
warnings when comparing int32_t to uint32_t).

Signed-off-by: Chris Michael <cpmichael@osg.samsung.com>
2015-12-15 10:20:33 -05:00
Mike Blumenkrantz bfd11c68ca add wayland shell private data for managing shell-specific data
also cache xdg configure infos and avoid sending duplicate events
2015-12-10 13:24:55 -05:00
Derek Foreman 81ff082e0d Stop using MIN macros when choosing versions for wayland resources
Summary:
libwayland-server.so will post an error if the requested version
is higher than the supported one anyway, so there's no point in
doing this.

Using MIN() to pick versions is a client side idiom.

 #kansas

Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3385
2015-11-26 20:12:47 -05:00
Mike Blumenkrantz a3266d5d89 ref clients while a wayland shell surface exists
in the case where a client is deleted, it's possible that the shell
surface may persist longer than the duration of the normal client delete
cycle, so it's necessary to ensure that the client will continue to exist
until the shell surface has been destroyed
2015-11-20 15:04:07 -05:00
Boram Park 00a597213d wl_desktop_shell: return void
Summary:
_e_input_panel_cb_surface_get() returns void.

Signed-off-by: Boram Park <boram1288.park@samsung.com>

Reviewers: zmike, stefan_schmidt, gwanglim, raster, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D3119
2015-10-01 08:43:19 -04:00
Mike Blumenkrantz 89a789fe3d redo CSD for wayland clients to use comp object frame geometry
this fixes issues with client placement and is a more native solution
than the previous hacks
2015-09-29 18:53:03 -04:00
Seunghun Lee 26d352f219 Add module "wl_text_input" for supporting *wl_text_input* and *wl_input_method* protocol in wayland.
Summary:
this patch allow to use virtual keyboard such as weston-keyboard.
it was tested in wayland verion 1.6.

Test Plan:
<prerequisite>
- Configure with --enable-wl-text-input
- edit configuration file, e.cfg to enable module wl_text_input.

1. run enlightenment as a wayland display server.
2. run weston-keyboard.
3. run weston-editor.

Reviewers: raster, Sergeant_Whitespace, devilhorns, zmike

Reviewed By: zmike

Subscribers: ManMower, Sergeant_Whitespace, cedric, jihoon

Differential Revision: https://phab.enlightenment.org/D2275
2015-08-20 14:55:55 -04:00
Mike Blumenkrantz 3f13b6889d replace existing usage of x/wl_comp_data with corresponding globals 2015-08-13 16:05:57 -04:00
Chris Michael d4f9ee417d wl_desktop_shell: Formatting
NB: No functional changes

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-07-28 14:37:26 -04:00
Mike Blumenkrantz 0d19a5914b apply csd sizing transform for wayland configure events
when not resizing, the sizes passed to configure should be based on the
window size and not the surface size. in order to calculate this, it's
necessary to keep track of the last-known window geometry for non-maximized
states and create offsets with which to calculate new sizes

this fixes directional maximizes as well as unmaximizing
2015-07-24 16:35:21 -04:00
Mike Blumenkrantz 0321fd690e do not send duplicate configures for wayland clients during maximize
this seems to not have caused any real issues, but it made debugging
more of a pain and is unnecessary connection noise
2015-07-24 16:33:33 -04:00
Mike Blumenkrantz 7aea28a86b do not attempt to remove wl xdg popup clients from focus stack
these have never been added to the focus stack, so removing them is useless
2015-07-21 14:19:39 -04:00
Mike Blumenkrantz bd776b157f add e_client_unignore() for triggering events when unignoring a client
mainly for use in wayland compositing since all surfaces are ignored
until they get a shell surface or a commit
2015-07-17 15:30:30 -04:00
Mike Blumenkrantz d7c58215f4 set wl client surface pointer in surface create method
remnant from when clients were created by the shell
2015-06-25 20:04:31 -04:00
Mike Blumenkrantz eec5cf6a67 remove E_Comp_Data typedef, use backend-specific typedefs unconditionally
this turned into a bit of a charlie-foxtrot due to constant pointer aliasing
in the wl compositor codebase

no functional changes
2015-06-25 20:04:31 -04:00
Chris Michael a57ce9ca85 wl-desktop-shell: Don't crash when trying to place popup menus in QT apps
This is a partial fix for T2517. It fixes the crash, but does not
address popup menu placement.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-25 12:05:05 -04:00
Chris Michael 475a246ea9 wl-desktop-shell: Remove useless return at end of function
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-25 09:45:28 -04:00
Chris Michael 609fa7100d wl-desktop-shell: Fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-25 09:30:59 -04:00
Chris Michael d73b3d1e70 wl-desktop-shell: Fix popup menu placement for xdg surfaces
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-09 09:43:34 -04:00
Chris Michael db66433374 wl-desktop-shell: Fix T2357: Update xdg_shell for version 5
Summary: This fixes the Enlightenment wayland desktop shell by
updating it to support xdg_shell version 5. Fixes T2357 where gtk apps
would not work. Confirmed working now.

@fix

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-06-08 12:23:40 -04:00
Boram Park 5c46de06c6 e_comp_wl: fix not sending a mouse enter event to client.
Summary:
First of all, currently cdata->ptr.x,y contains e_client related pos.
But, cdata is owned by e_comp, not per e_client. So cdata->ptr.x,y should contain
absolute pos.
And, when a pointer resource is created, enter event should be sent to client.

Change-Id: I21cb031e293fe281e35ba89f3a96116a28a48856
Signed-off-by: Boram Park <boram1288.park@samsung.com>

Test Plan:
1. run e as wayland server
2. move cursor to around 50,50
3. run elementary_test
4. click the mouse left button on slide toggle widget.
   (Don't move a cursor out of elementary_test. If you do, you can't find bug)

Reviewers: gwanglim, raster, devilhorns, ManMower, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2330
2015-05-18 11:53:05 -04:00
Chris Michael 646db93b53 add missing EINA_UNUSED for function paramater
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-18 09:20:16 -04:00
Derek Foreman 7f6f4b6966 wayland: Remove a lot of E_Comp_Data pointers
Summary: We should just use e_comp->wl_comp_data everywhere we can.

Reviewers: devilhorns, zmike

Reviewed By: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2507
2015-05-18 09:08:52 -04:00
Chris Michael 829c9ffc73 wl-desktop-shell: Quiet debug output
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-13 14:50:40 -04:00
Chris Michael 0a94e8ba71 enlightenment: Make E build again with EFL from git
sed -i 's/EAPI/E_API/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-05-07 15:13:10 -04:00
Mike Blumenkrantz f843b48eb2 update wl shell parent setting code to use clients instead of pixmaps
ref T2354
2015-04-22 14:55:45 -04:00
Mike Blumenkrantz 96f07bff8a wl client pixmaps now use a different method for creating the pixmap id 2015-04-21 15:19:20 -04:00
Mike Blumenkrantz 617c2d96ff move wl E_Client creation to same place as E_Pixmap creation
ensure that surface manipulation functions will succeed even with no shell surface
2015-03-30 12:13:04 -04:00
Mike Blumenkrantz 2810a4802a remove E_Comp usage from wl desktop shell 2015-03-18 17:34:16 -04:00
Mike Blumenkrantz 0ddedd09a4 wl compile fixes 2015-03-13 20:09:54 -04:00
Mike Blumenkrantz 1736d1ecb9 e_client functions no longer require E_Comp param 2015-03-13 16:53:19 -04:00
Mike Blumenkrantz 091142b032 remove E_Client->comp 2015-03-13 15:41:21 -04:00
Mike Blumenkrantz d42586869e fix wl shell client borders for internal, borderful clients...again 2015-03-13 15:03:13 -04:00
Mike Blumenkrantz b688ddbeb0 don't crash when creating external shell surface clients
sadconditionals.jpg
2015-03-12 14:53:46 -04:00
Mike Blumenkrantz bb77ddf22c correctly apply wl shell client border states only for non-internal clients 2015-03-12 14:48:46 -04:00
Mike Blumenkrantz f1b47ca2af don't create new wl shell clients for internal windows 2015-03-12 14:42:00 -04:00
Mike Blumenkrantz 3f5d25a535 don't identify all wl shell clients as internal...you crackhead 2015-03-12 13:13:55 -04:00
Mike Blumenkrantz 3e4d5ddfc3 always create new client for wl shell surfaces
this should be a more correct way of handling (shell) surfaces since
there's never a time when we won't want to create a new client
2015-03-10 18:27:08 -04:00
Mike Blumenkrantz 4140fb728a don't attempt to find wl shell E_Client when one cannot exist 2015-03-10 16:37:30 -04:00
Derek Foreman 9ef66f7fae Wayland: Don't consume serials when not sending events
Reviewers: zmike, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2134
2015-03-10 15:52:31 -04:00
Mike Blumenkrantz b069009a16 grab wl shell surface geom and use for adjusting resize operations
I think this still may not be 100% perfect,
but it's more like 95% perfect now instead of 50%
2015-03-03 16:48:25 -05:00
Derek Foreman d576c58bd7 clamp to parent height, not parent y co-ordinate.
Summary:
Clamping to Y makes pop ups get shifted up if a window is
near the top of the screen.

Reviewers: devilhorns, zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2060
2015-02-26 15:27:52 -05:00
Bryce Harrington 89dbb9bd27 cosmetic: Whitespace cleanup of wayland client files
Summary:
cosmetic: Cleanup whitespace for wayland compositor

There is excess trailing whitespace in several of the files for the
wayland implementation.  These patches attempt to apply the spacing
rules for Enlightenment as documented at:
https://phab.enlightenment.org/w/coding_convention/

The whitespace rules are applied using the following emacs tabbing
settings:

 (defun start-efl-c-mode ()
  "C mode with adjusted defaults for use with Enlightenment
  development."
  (interactive)
  (c-mode)
  (c-set-style "gnu")
  (setq tab-width 8)
  (setq indent-tabs-mode nil)
  (setq c-basic-offset 3)
  (setq defun-block-intro 3)
  (setq statement-block-intro 3)
  (setq case-label 1)
  (setq statement-case-intro 3)
 )

This patchset also eliminates all tabs in favor of whitespace, as per
the coding style rules.

Reviewers: zmike, cedric, devilhorns

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2048
2015-02-24 17:34:20 -05:00
Chris Michael 9e585e3f79 remove unused variable
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2015-02-24 15:36:34 -05:00
Bryce Harrington 40998b8a6e Code cleanup and check for OOM condition with wl_array_add
Summary:
wayland: Check wl_array_add return for OOM condition
cosmetic: Make error return check syntax consistent with rest of code
wayland: Reuse use_adj to track child-forced adjust
wayland: Refactor to collapse if chain
wayland: Refactor _e_comp_wl_client_priority_adjust to collapse if chain
 + This uses early returns to unwrap a couple if clauses to make the code a bit less nesty.
wayland: Refactor if statements for consistency with rest of file

Reviewers: cedric, zmike, devilhorns

Subscribers: devilhorns, cedric

Differential Revision: https://phab.enlightenment.org/D2034
2015-02-24 14:47:56 -05:00
Mike Blumenkrantz 62328e0c90 remove wl override clients from focus stack
no more client cursor clients in winlist hoorayyyyy
2015-02-13 15:48:00 -05:00
Mike Blumenkrantz 92079a11e7 allow focus on normal wl clients again 2015-02-13 15:45:03 -05:00
Mike Blumenkrantz 1ef496c9cc remove unneeded client attr setting in wl shell
these are always set by the wl new client hook
2015-02-13 15:41:58 -05:00
Mike Blumenkrantz af0508baf9 set wl popups to appropriate layer in shell module 2015-02-13 15:24:24 -05:00
Mike Blumenkrantz e80bd28d33 don't set geometry during wl client surface mapping
this happens automatically in other places, calling it here breaks client placement

 #barrel
2015-02-11 17:15:31 -05:00
Mike Blumenkrantz a9b56c4c28 reenable new_client for wl clients, but force moveresize actions to succeed 2015-02-11 17:00:59 -05:00
Mike Blumenkrantz 8541c13b06 unset new_client flag for wayland clients
this is only applicable for X clients
2015-02-10 15:51:35 -05:00
Mike Blumenkrantz c67e31f99b remove unnecessary EC_CHANGED from wl shell creation
new clients are always changed, this is redundant
2015-02-04 18:09:32 -05:00
Mike Blumenkrantz c196ce0c12 clamp wl popup coords to parent when possible 2015-02-04 18:09:00 -05:00
Mike Blumenkrantz ad41e45b84 set wl popups as overrides
not technically correct but will mimic expected behavior more accurately
2015-02-04 18:01:38 -05:00
Mike Blumenkrantz 8d5ab29625 don't create wl clients as re_manage 2015-02-02 12:41:39 -05:00
Mike Blumenkrantz 2a51535fc0 Revert "move wl pixmap creation into shell, fix pixmap id usage"
This reverts commit c1a93d893e.
2015-01-28 17:29:17 -05:00
Mike Blumenkrantz c1a93d893e move wl pixmap creation into shell, fix pixmap id usage
using raw surface id here guarantees overlap between surfaces for different apps. instead, shift and add app pid to ensure uniqueness

 #barrel
2015-01-28 17:04:59 -05:00