Commit Graph

215 Commits

Author SHA1 Message Date
Mike Blumenkrantz ed897a231e de-e_comp_get()ify e
mrw I remember how to regex http://i.giphy.com/dC9dujPVeAfIY.gif
2015-03-13 15:12:20 -04:00
Mike Blumenkrantz 922af2c52f remove e_comp_list(), deprecate all related functions for pending removal
there is only one E_Comp which can now be accessed by the e_comp global.

if you're editing a file with some uses of these deprecated functions, replace their usages with appropriate references to this variable

pass -Wno-deprecated-declarations to ignore these warnings during build
2015-01-05 15:39:15 -05:00
Tom Hacohen 0bc3399274 Tiling: don't try to change the border of borderless windows.
@fix
2015-01-04 13:45:16 +00:00
Marcel Hollerbach 4c0f0c638f tiling: Implemented tiling window position manipulation
Summary:
This implements the possibility to "break out" a node in the tree which
means that the node will be appended or prependen to the parent in the
grandparent.

The other function "joins" the node to the node before or after.
Basically it will be added as a child, and if necessarry the client
of this node will be added in a new Window Tree and also added as a child.

With the new actions you can move the focused window right/left/up/down
with keybindings.

If the window will "break out" or "join" depends on the parent split type.

Sample:
1|4|6
2|4|6
3|5|6

(Same Number means same Window)

1 is focused.
Left Key is pressed.

1 is in a vertical split so the window will "break out".
Result:
2|1|4|6
2|1|5|6

Now another key:
Down Key is pressed.

1 is in a vertical split so the window will "join".
Result:
1|2|4|6
3 3|5|6

@feature

Fixes T1350

Reviewers: tasn

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1382
2014-10-29 08:15:19 +00:00
Tom Hacohen a8d8844d5c Fix tiling window properties restore issues with iconify.
Windows properties (like border) weren't being restored on iconify.
2014-10-23 13:37:59 +01:00
Tom Hacohen 37462c7cb7 Tiling: Respect min size hints (set to floating if doesn't fit).
This fix floats all the windows that don't fit because of their min size
restrictions.
It can be made better, at the moment it is very simple. An example
broken case would be the following:
Assume we have 3 windows, A, B and C.
B and C both hand a min width of half the screen.

First we create A, then B. Everything works as they share the screen,
but when we add C, both B's and C's restrictions "fail" so they are both
set to float although in reality, floating C is enough. This can be
fixed by doing a live scan of the tree every time a window is floated,
though it's not essential at the moment.

Fixes T952.
2014-08-28 16:33:54 +01:00
Tom Hacohen 4b24177b4c Tiling: Fix applying tiling on enable with a new config.
Tiling wasn't being applied when enabling it with a new config because
we were comparing with the old config instead of just always applying.

This fixes T974.
2014-08-20 11:02:20 +01:00
Mike Blumenkrantz 87a79f3dd7 improve tiling startup to not reapply its tree * n_clients 2014-07-30 00:51:03 -04:00
Tom Hacohen c29b87c927 Tiling: Fix handling of shelves with top orientation.
This uses the newly added function that lets us get the correct geometry
for all desks.

Fixes T1320.
2014-07-29 01:39:34 +01:00
Mike Blumenkrantz 87b9003092 use e_client_border_set() in tiling 2014-07-28 08:42:24 -04:00
Mike Blumenkrantz 69c89d7202 unset border.changed after changing border in tiling
fix T1456
2014-07-28 08:42:24 -04:00
Tom Hacohen 6da3771eb8 Tiling: Clean up the tiling entry check code.
This makes it a little less redundant.
2014-07-28 10:41:54 +01:00
Mike Blumenkrantz 40d0505e51 check tileable state before enforcing client entry existence
fix T1304
2014-07-27 16:58:58 -04:00
Mike Blumenkrantz d621cb6738 tiling should stop pussyfooting around frame changes and do its own gruntwork
fix T993
2014-07-27 16:53:25 -04:00
Mike Blumenkrantz 06cbbb1ac4 correctly use EC_CHANGED in tiling 2014-07-27 16:45:39 -04:00
Mike Blumenkrantz 3bb96a77f0 remove calls to e_place_zone_region_smart_cleanup() in tiling unload
this is not the correct way to use this function, and tiling should probably never call it. this is a function for (slowly) repositioning every client on the currently visible desktop while trying not to overlap. on failure, which occurs when clients cannot be placed without overlapping, it moves clients to 0,0.

fix T1310 because there is no i in team
2014-06-16 13:35:57 -04:00
Tom Hacohen b16f04279a Tiling: Mark already deleted client as non-tilable.
This should fix T1301, however I can't reproduce.
2014-06-03 12:49:10 +01:00
Tom Hacohen 70e9b54dde Tiling: Use pre_frame_assign hook instead of fetch.
This essentially reverts 8f0272eb40.

Seunghun Lee, that's why I told you to ask Mike. :)

Fixes T1311
2014-06-03 12:42:30 +01:00
Seunghun Lee 8f0272eb40 tiling: removed unnecessary resizing of window.
Summary:
change the time to call _add_hook to eval_fetch in tiling.
finally, tiling resize window after setting desk of client.

Reviewers: tasn

CC: cedric

Differential Revision: https://phab.enlightenment.org/D869
2014-05-19 09:46:05 +01:00
Seunghun Lee c907a0eead tiling: fix that tiling can't remove client in _desk_set_hook.
Summary:
initailize the tinfo before calling _remove_client.
remove call "_desk_should_tile_check" in "_remove_client", and added it before calling "_remove_client".
That's beause, in _desk_set_hook, use ev->desk (old desk) to initialize tinfo, and then only remove ec using _remove_client.

Test Plan:
(1) launch any app in one desk.
(2) change the any desk.
(3) launch browser or xchat like the app that launch time is relatively slow.
(4) change the in (1)'s desk quickly before completely launching browser or xchat.
(5) you can see wrong splited screen.

Reviewers: tasn, raster, zmike

CC: cedric

Differential Revision: https://phab.enlightenment.org/D860
2014-05-16 10:21:31 +01:00
Seunghun Lee 60d78371db tiling: fix enlightenment can be freezed by infinite event callback.
Summary:
initialize the tinfo when remove client in tiling.

the reason why of "freezing" that tiling added window twice into _G.tinfo->tree.
then tiling module set to a different size about same window as if two different window.
finally, the event "E_EVENT_CLIENT_MOVE" occurs by changing geometry, and tiling resize the window again by the event "E_EVENT_CLIENT_MOVE".

next, it is the cause of this problem.

In (4), when user types ALT+TAP.
 - tiling module adds uniconify window into _G.tinfo->tree.
 - at this time, _G.tinfo is the informaion of one desk.
 - E create input_only window and destoryed for a moment.
 - tiling module initialize the _G.tinfo by the event EVAS_CALLBACK_DEL happend by destorying input window.
 - now, _G.tinfo is the informaion of the other desk.
In (5), iconify app.
 - tiling try to remove window from _G.tinfo->tree, but failed. (problem)
 - because _G.tinfo isn't initialized to the desk including uniconify window at that time.
In (6), uniconify app.
 - tiling change the _G.tinfo, then insert client info to _G.tinfo.

so I suggest that initializing the _G.tinfo when removing window.

Test Plan:
(1) launch any app.
(2) Iconify it.
(3) change the desk different with launching app.
(4) Uniconify app by ALT+TAP.
(5) Iconify it again.
(6) Uniconify it again.

Reviewers: raster, zmike, tom, tasn

Reviewed By: tasn

CC: cedric

Differential Revision: https://phab.enlightenment.org/D850
2014-05-14 11:05:51 +01:00
Tom Hacohen dfbb42b81d Tiling: Set pass events on the split type popup. 2014-05-06 15:56:38 +01:00
Tom Hacohen 1433be5e3c Tiling: Add informational popup when changing tiling mode. 2014-05-06 15:44:55 +01:00
Tom Hacohen 10d009339a Tiling: Allow changing tiling mode through key-binding from all desktops.
Without this it is impossible to change the tiling mode using the key binding
but you can still change it using the gadget which is stupid.
2014-05-06 14:41:48 +01:00
Tom Hacohen f3d0f73cf6 Tiling: Fix toggle floating mode for untiled window.
This is useful in case they are going to become tiled, e.g maximized
or just from another desktop.
2014-05-06 14:38:44 +01:00
Tom Hacohen 938dee1e3b Tiling: Fix some issues and simplify code.
This fixes the issue with a floating window turned tiled and then closed
leaving a ghost window.
2014-05-06 14:22:04 +01:00
Tom Hacohen 07841a6b5e Tiling: start migrating the code to use smart callbacks.
Those are meant to be better than the e hooks.
2014-03-20 17:40:23 +00:00
Chris Michael 915f8f0613 @bugfix: Fix building for WAYLAND_ONLY by using the proper define
sed -i 's/WAYLAND_ONLY/HAVE_WAYLAND_ONLY/g'

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-18 07:43:04 +00:00
Carsten Haitzler 565faa1155 based on submission from Seunghun, Lee - dont access NULL desk
this effectively accepts D574 but is re-done with different formatting.
2014-03-05 15:27:15 +09:00
Tom Hacohen 652392beff Tiling2: Fix handling windows that become untilable after we've added them.
This fixes T946.
2014-02-21 09:15:18 +00:00
Tom Hacohen 5bf441960d Tiling2: Change all checks for ignored windows to check if tiled. 2014-02-21 09:15:18 +00:00
Tom Hacohen 6a7aeb7695 Tiling2: Cleaned up maximized check function a bit. 2014-02-21 09:15:18 +00:00
Tom Hacohen 555ac8c0d9 Tiling2: Fixed maximized windows handling.
This got broken with all the reshuffling. Another fix.
2014-02-21 09:15:18 +00:00
Tom Hacohen fbcd03c48a Tiling2: Merge back restore client and the non sizing variant. 2014-02-21 09:15:18 +00:00
Tom Hacohen baaad1c09a Tiling2: Fixed geometry restore for maximized and fullscreen windows. 2014-02-21 09:15:18 +00:00
Tom Hacohen 116045fb8c Tiling2: Merge all the tiling callbacks and checks to 1 place. 2014-02-21 09:15:18 +00:00
Tom Hacohen 2b778b2aea Tiling2: Added maximized to the is_tilable checks. 2014-02-21 09:15:18 +00:00
Tom Hacohen 5e25cddeb1 Tiling2: Fix handling of maximized windows.
This fixes T978.
2014-02-21 09:15:18 +00:00
Tom Hacohen 457271f167 Tiling2: Handle windows becoming fullscreen while tiled. 2014-02-21 09:15:18 +00:00
Tom Hacohen 249def581b Tiling2: Only restore maximized if different than current. 2014-02-21 09:15:18 +00:00
Tom Hacohen ce7da97d8e Tiling2: Ifdef out ecore_x specific stuff when in Wayland Only. 2014-02-21 09:15:18 +00:00
Tom Hacohen 59d428b6e6 Tiling2: Don't tile iconic windows when loading the module.
This fixes T976.
2014-02-21 09:15:18 +00:00
Tom Hacohen 8463b7af47 Tiling2: Del all callbacks when unloading module.
This fixes T971.
2014-02-21 09:15:18 +00:00
Tom Hacohen b4900203d5 Tiling2: reapply tree on frame's deletion, not client removal.
According to mike this should work better with animations.

Fixes T947.
2014-02-21 09:15:18 +00:00
Tom Hacohen 89881a0c50 Tiling2: Fixed coding conventions. 2014-02-21 09:15:17 +00:00
Tom Hacohen 4c846ca7fc Tiling2: Properly apply settings from the config dialog.
This fixes T911.
2014-02-21 09:15:17 +00:00
Tom Hacohen 555730c2bc Tiling2: Fixed setting of floating on non tiled desktops. 2014-02-21 09:15:11 +00:00
Tom Hacohen fe43bd7576 Tiling2: Store extra on more windows, including ones in non-tiling desktops. 2014-02-21 09:15:10 +00:00
Tom Hacohen 3294d8e562 Tiling2: Moved a function to a better location. 2014-02-21 09:15:10 +00:00
Tom Hacohen 08947d8220 Tiling2: Removed useless desk show hook. 2014-02-21 09:15:10 +00:00
Tom Hacohen 32e1ec2034 Tiling2: Fixed applying of desktop is tiled config.
This now changes things as we click apply.
2014-02-21 09:15:10 +00:00
Tom Hacohen 82e252fa71 Tiling2: Fixed tiling2 according to enlightenment's sticky event changes.
Changes in e were introduce in: 29cd45142a
2014-02-21 09:15:10 +00:00
Tom Hacohen f4a7b6512a Tiling2: Fixed formattign, again.
Fixes T919.
2014-02-21 09:15:10 +00:00
Tom Hacohen 92b0d0171c Tiling2: Fixed resize issues.
This fixes T913.
2014-02-21 09:15:10 +00:00
Tom Hacohen e48cd878ce Tiling2: Renamed space between windows -> padding. 2014-02-21 09:15:10 +00:00
Tom Hacohen d83e18f21e Tiling2: Implemented window padding.
Thanks to cippp for the feature request + some code.
2014-02-21 09:15:10 +00:00
Tom Hacohen b4df3d18a1 Tiling2: Use a define to set the max window padding. 2014-02-21 09:15:10 +00:00
Tom Hacohen 82fb13e6fa Tiling2: Get rid of a redundant define. 2014-02-21 09:15:10 +00:00
cippp 48c1cc947f Tiling2: Added config to set window spacing. 2014-02-21 09:15:10 +00:00
cippp f62fe4972f Tiling2: Added a link to the module's settings when right-clicking gadget. 2014-02-21 09:15:10 +00:00
Tom Hacohen 8254aa45b2 Tiling2: Added a config to disable floating mode. 2014-02-21 09:15:10 +00:00
Tom Hacohen 99e8b518f2 Tiling2: Added a gadget to indicate current tiling mode. 2014-02-21 09:15:10 +00:00
Tom Hacohen 651e627c4b Tiling2: Removed debug print that was causing segfaults. 2014-02-21 09:15:09 +00:00
Tom Hacohen ee587a37b0 Tiling2: Fixed coding conventions using efl_indent. 2014-02-21 09:15:09 +00:00
Tom Hacohen 1b4821155c Tiling2: Get rid of __UNUSED__ in favour of EINA_UNUSED. 2014-02-21 09:15:09 +00:00
Tom Hacohen bf69b855b3 Tiling2: E_Client already has a property for sticky, use it.
Before this change, I duplicated this in extra.
2014-02-21 09:15:09 +00:00
Tom Hacohen e2f4596ff7 Tiling2: Implemented mouse drag to swap.
This is a new mouse action that lets you swap window with mouse drag.
2014-02-21 09:15:09 +00:00
Tom Hacohen b48cd9c9f8 Tiling2: Fix bug with cleaning up actions when shutting down. 2014-02-21 09:15:09 +00:00
Tom Hacohen ea175537cf Tiling2: Removed redundant structure members. 2014-02-21 09:15:09 +00:00
Tom Hacohen 7aaf444ee8 Tiling2: Don't try to remove non-tiled windows from the tile tree. 2014-02-21 09:15:09 +00:00
Tom Hacohen 792022196f Tiling2: Add "floating" as a split mode.
This lets people just create floating windows, without the need to toggle.
2014-02-21 09:15:09 +00:00
Tom Hacohen ff078996ff Tiling2: Improved setting of client borders.
No need to have a special entry point for that.
This fixes the issues with persistant pixel border.
2014-02-21 09:15:09 +00:00
Tom Hacohen bb1d53614c Tiling2: Fixed issues with removing/restoring clients. 2014-02-21 09:15:09 +00:00
Tom Hacohen ca6f1e74f5 Tiling2: Fixed removing clients from extras hash. 2014-02-21 09:15:09 +00:00
Tom Hacohen f6fa07e812 Tiling2: Have a common entry func for most functions. 2014-02-21 09:15:09 +00:00
Tom Hacohen 55e669fae4 Tiling2: Simple logic cleanup. 2014-02-21 09:15:08 +00:00
Tom Hacohen 03c6fee356 Tiling2: Properly ignore e util clients.
This fixes all the error messages that are printed on e startup.
2014-02-21 09:15:08 +00:00
Tom Hacohen 21f30a1ac2 Tiling2: Update original information every time a client is added.
Even if it's not the first time that client is added.
2014-02-21 09:15:08 +00:00
Tom Hacohen b89709267d Tiling2: Fixed bug with client border menu.
This fixes duplicate entries.
2014-02-21 09:15:08 +00:00
Tom Hacohen 5b50d42521 Tiling2: Stop fiddling with stacking and layers. 2014-02-21 09:15:08 +00:00
Tom Hacohen 3114e63faf Tiling2: Don't set client layers.
This fixes some of the input region issues I was having.
The bug is still in e, but this solves some stuff.
2014-02-21 09:15:08 +00:00
Tom Hacohen e3fcc03152 Tiling2: Fixed extra hash cleanup for ignored users.
It should always be cleaned, now that we keep it for ignored windows as well.
2014-02-21 09:15:08 +00:00
Tom Hacohen 41ecdc1ebd Tiling2: Be more defensive about removing clients.
This will delete clients even in cases we didn't delete before.
2014-02-21 09:15:08 +00:00
Tom Hacohen 9adc5336c0 Tiling2: Style changes. 2014-02-21 09:15:08 +00:00
Tom Hacohen 86aa218cb2 Tiling2: Handle compositor resize hook. 2014-02-21 09:15:08 +00:00
Tom Hacohen 32c4da7f5e Tiling2: Have a desk walker function and use it. 2014-02-21 09:15:08 +00:00
Tom Hacohen 0b007b2ff6 Tiling2: Fixed re-tiling on e restart/module unload reload. 2014-02-21 09:15:08 +00:00
Tom Hacohen 39e17e96f8 Tiling2: Fixed desktop setting. 2014-02-21 09:15:08 +00:00
Tom Hacohen f0efa12921 Tiling2: Fixed error message. 2014-02-21 09:15:08 +00:00
Tom Hacohen 08b877fa1f Tiling2: Unmaximize windows when starting to tile them. 2014-02-21 09:15:08 +00:00
Tom Hacohen 6795380282 Tiling2: Added support for swapping windows. 2014-02-21 09:15:07 +00:00
Tom Hacohen d03fb0a0f8 Tiling2: Fixed error messages with ignored windows. 2014-02-21 09:15:07 +00:00
Tom Hacohen 2f80f460e4 Tiling2: Fixed moving non-tiled windows. 2014-02-21 09:15:07 +00:00
Tom Hacohen 5d044ecad3 Tiling2: Removed some redundant code. 2014-02-21 09:15:07 +00:00
Tom Hacohen df14cca8dd Tiling2: Remove the step restriction.
Enlightenment already enforces that, and using it makes things choppy.
2014-02-21 09:15:07 +00:00
Tom Hacohen b5434d1de5 Tiling2: Restrict allowed resizes of windows. 2014-02-21 09:15:07 +00:00
Tom Hacohen ae8acb24b2 Tiling2: Fixed resizing of clients at "forbidden" borders.
For example, leftmost window's left border.
2014-02-21 09:15:07 +00:00
Tom Hacohen 15a4ec0c40 Tiling2: Use resize_mode for detecting resize direction. 2014-02-21 09:15:07 +00:00
Tom Hacohen f5e96784be Tiling2: Better block of window moving. 2014-02-21 09:15:07 +00:00
Tom Hacohen dae37e1dea Tiling2: Added a menu item to toggle floating windows. 2014-02-21 09:15:07 +00:00