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
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
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
borderless
This fixes the issue of elementary windows having 2 borders, however
it does expose a new issue where those same internal elm windows now
have a black shadow border around them.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: As pointed out by shiin, this causes an infinite loop due to
e_client_ping already been called in the pre_frame callback. Thanks
for spotting this !! :)
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
The patch will setup e_client_cb_ping_poller and as long as wl_surface is
active it will unset hung
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1608
Summary:
The patch will setup e_client_cb_ping_poller and as long as surface is
active it will unset hung
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1607
Summary:
shell_surface_destroy function is a common destroy function to destroy all type of surfaces and to remove redundancy in code
Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: devilhorns
Reviewed By: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1421
xdg_shell requires a parent surface in order to create a popup, so we
should check the validity of the parent resource and error out
accordingly
Summary: Signed-off-by: vivek <vivek.ellur@samsung.com>
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1388
Don't set changes.icon during surface creation. There are functions
that get called when icccm.class changes and That is the place to set
changes.icon.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Additional authors: zmike
This fixes the issue of some wayland applications always showing up
with the e_border visible.
If we get a transient_set from wl_shell or xdg_shell, don't reset the
client's netwm.type. Some wayland applications are sending us
transient_set with parent to NULL....so don't explicitly set the
netwm.type to dialog.
@fix
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: we also need to clear parent's resource.
Test Plan: N/A
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1238
really an error.
When we call shell_surface_parent_set with a NULL parent resource,
then there is No reason to try and find the pixmap window of a NULL
parent. Avoid that function call and just set the appropriate
properties and get out.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
There are no resource free codes in xdg shell destroy handler
and xdg popup destroy handler. e should delete wayland resource as
client requested.
Test Plan:
1. run e as wayland server
2. run weston-stacking in e
3. click with right mouse button to create xdg popup surface
4. click main surface area to delete xdg popup surface
Reviewers: devilhorns, zmike, raster
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1196
Summary:
we need to set ec->parent before eval time.
that's because client can request to commit surface calling shell.configure() before eval time.
in this case, ec->parent isn't set yet, configure(move) will be failed.
in order to fix it, we have to set ec->parent in _e_shell_surface_parent_set() before eval time,
but we should check if ec already have parent, and if so, remove its parent's transients before change the value of ec->parent.
Test Plan: N/A
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1177
Summary: remove EINA_UNUSED from used function parameters
Test Plan: N/A
Reviewers: devilhorns
Subscribers: cedric
Differential Revision: https://phab.enlightenment.org/D1173
Summary:
the value of "ec->parent" should be set in evaluation time,
therefore ec->parent->transients will be reset automatically.
Reviewers: devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1155
Summary: Clear the E_Client's parent if client request to set parent to null.
Test Plan: run weston-stacking.
Reviewers: devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1154
NB: This is done for wayland clients where e_client delete function
has already freed the client wl_comp_data Before we get a shell
surface destroy message from wayland. (occurs due to async nature).
Signed-off-by: Chris Michael <cp.michael@samsung.com>
When setting transient, tell the compositor that we need to reset the
window type for this surface.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
client->parent->modal code to the compositor side.
Also, after setting netwm.type, change the set_win_type in the
compositor data field so that the compositor will handle parent->modal
on next property fetch.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary: add support for xdg_shell surface transient_for
Test Plan:
1. run e wayland server
2. run weston-stacking and set focus it
3. press 't' for creating transient_for surface
Reviewers: devilhorns, zmike, raster
CC: cedric
Differential Revision: https://phab.enlightenment.org/D1016
@feature
Summary:
there are no geometry restore codes in handler of
wl_shell_surface toplevel_set.
Test Plan:
1. run e wayland only server with devilhons's branch source (devs/devilhorns/e_comp_wl)
2. run terminology
3. make terminlogy surface to be maximized
4. make terminlogy surface to be un-maximized
5. move terminlogy surface
Reviewers: devilhorns, zmike, raster, stefan_schmidt
CC: cedric
Differential Revision: https://phab.enlightenment.org/D965
Summary: fullscreen_set handler for wl_shell_surface
Test Plan:
1. run e wayland only server with devilhons's branch source (devs/devilhorns/e_comp_wl)
2. run elementary_test -to "window states"
3. select fullscreen check box on elementary_test surface
Reviewers: devilhorns, zmike, raster, stefan_schmidt
Reviewed By: devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D966
E master
fix crash and memory leak when press and release any key repeatedly.
Summary:
since the size of wl_array is determined based on one byte,
so in order to compare with uint32_t, the size of wl_array should
be divided by uint32_t's size.
and when calculate the size of wl_array by difference between two
address, address should type cast char* as one byte.
Test Plan:
(1) run terminology
(2) input any key several time.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Summary:
This problem occurred due to xkb_keysym_t value of libxkbcommon by e wl server.
e wl server should pass keycode from evdev input device on to wl client.
In order that e wl server receives valid keycode Ecore_Event_Key should have
an extended data member. This patch should be applied with client side patch (efl).
Test Plan: run e wl server -> create wl client -> type keys
Reviewers: raster, devilhorns, zmike
Reviewed By: devilhorns
CC: cedric
Differential Revision: https://phab.enlightenment.org/D713
The keys array stores keys as unsigned int, so with a little bit of
casting voodoo, we can avoid the nasty compiler warning messages about
void pointers used in arithmetic.
Signed-off-by: Chris Michael <devilhorns@comcast.net>
pointers in E now come in two flavors, one for each protocol that we currently support. each is created from the owner compositor backend:
X pointers still work as usual
Wayland pointers are actually surfaces that we dump image data into periodically to render them as evas images
some small amounts of hack is necessary to make this work, namely blocking X pointers when a Wayland one is in use if we're running a multi-protocol compositor
* try to clear up build system for separating out ecore-x
* add #ifdefs for lots of ecore-x stuff
* break out some internal e wl functions for reuse in api
* store wl surface buffers as an inlist
* add protocol-specific client compositor data
** move lots of X client attributes here
* add pixmap type checks to a number of X-specific things, such as grabinput, to block them for non-X clients
* rearrange startup order to work with wayland
* move X screensaver code to e_comp_x
* flag modules still requiring X with -DNEED_X
huge fustercluck commit because there wasn't really a way to separate out the changes. better to just rip it all out at once.
* compositor and window management completely rewritten. this was the goal for E19, but it pretty much required everything existing to be scrapped since it wasn't optimized, streamlined, or sensible. now instead of having the compositor strapped to the window manager like an outboard motor, it's housed more like an automobile engine.
** various comp structs have been merged into other places (eg. E_Comp_Zone is now just part of E_Zone where applicable), leading to a large deduplication of attributes
** awful E_Comp_Win is totally dead, having been replaced with e_comp_object smart objects which work just like normal canvas objects
** protocol-specific window management and compositor functionality is now kept exclusively in backend files
** e_pixmap api provides generic client finding and rendering api
** screen/xinerama screens are now provided directly by compositor on startup and re-set on change
** e_comp_render_update finally replaced with eina_tiler
** wayland compositor no longer creates X windows
** compositor e_layout removed entirely
* e_container is gone. this was made unnecessary in E18, but I kept it to avoid having too much code churn in one release. its sole purpose was to catch some events and handle window stacking, both of which are now just done by the compositor infra
* e_manager is just for screensaver and keybind stuff now, possibly remove later?
* e_border is gone along with a lot of its api. e_client has replaced it, and e_client has been rewritten completely; some parts may be similar, but the design now relies upon having a functional compositor
** window configuration/focus functions are all removed. all windows are now managed solely with evas_object_X functions on the "frame" member of a client, just as any other canvas object can be managed.
*** do NOT set interceptors on a client's comp_object. seriously.
* startup order rewritten: compositor now starts much earlier, other things just use attrs and members of the compositor
* ecore_x_pointer_xy_get usage replaced with ecore_evas_pointer_xy_get
* e_popup is totally gone, existing usage replaced by e_comp_object_util_add where applicable, otherwise just placed normally on the canvas
* deskmirror is (more) broken for now
* illume is totally fucked
* Ecore_X_Window replaced with Ecore_Window in most cases
* edge binding XWindows replaced with regular canvas objects
* some E_Win functionality has changed such that delete callbacks are now correctly called in ALL cases. various dialogs have been updated to not crash as a result
comp files and descriptions:
e_comp.c - overall compositor functions, rendering/update loop, shape cutting
e_comp_x.c - X window management and compositor functionality
e_comp_wl.c - Wayland surface management and compositor functionality
e_comp_canvas.c - general compositor canvas functions and utilities
e_comp_object.c - E_Client->frame member for managing clients as Evas_Objects, utility functions for adding objects to the compositor rendering systems
additional authors: ivan.briano@intel.com
feature: new compositor
removal: e_border, e_container, e_popup
- Update shell to support multiple resources on the client side
NB: Fixes zmike wayland client crash issue ;)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- Check if surface is still focused by the pointer on focus_out events
NB: Needed due to spurious focus_out events we receive from evas/edje
- On spurious mouse_out event, check if pointer is actually still
inside the surface.
- Cleanup Move and Resize Grab code (don't need a binding event
struct here).
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Add safety checks for pointer button_count.
When releasing a busy grab, also check if surface is NULL.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Send wheel event to the pointer interface.
NB: Discomfitor/Zmike .. You Have Mouse Wheel Support Now !! ;)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This reverts commit ccb72c38ca.
Revert this (for now) because it breaks key input for wayland apps running
inside of X. Need more time to look into it....
timers are in mils ... let's do some multiplication here to stop
clients from pinging out all the time and getting killed.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Add callbacks for e_desktop_shell interface functions (cannot be NULL
anymore).
When we bind the wl_shell, we will create the e_desktop_shell.
NB: The e_desktop_shell was not being created or bound to the display
globals.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- Add NULL handler for desktop_ready callback
- Add separate binding callback function for the desktop shell
- Create desktop shell resource with proper version.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
wl_display_add_global with wl_global_create, and fix wl_client calls
to create resources with wl_resource).
NB: This brings client support up to par with version 1.2 of Wayland
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Assign the shell to the shell_surface on creation (for future
dereference)
Make grab/move/resize work again for wayland-clients
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Destroy surface ping_timer when surface is destroyed.
Use wl_resource_get_client for client comparison
Signed-off-by: Chris Michael <cp.michael@samsung.com>
for desktop_shell).
Use wl_resource_set_destructor.
When shell gets unbound, don't "free" the resource (handled internally
via wayland).
Signed-off-by: Chris Michael <cp.michael@samsung.com>
again.
Wayland moved the input handling to be inside the "compositor" now, so
we need to add functions/support for that.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Fix several bugs with regard to moving, resizing a wayland client.
Implement popup menu functionality.
Implement (but disable right now) fullscreen functionality
- NB: Disabled currently as I am hunting a potential e_border bug.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Fix some unused variables.
Be sure to destroy any ping timers on surface destroy.
End any existing popup grabs when we start a new grab.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Add function to listen for the ecore_evas resize and adjust the size
of the surface smart object.
Add support for Maximize/Unmaximize of wayland clients.
Signed-off-by: Chris Michael <cp.michael@samsung.com>