Commit Graph

342 Commits

Author SHA1 Message Date
Mike Blumenkrantz 4a33cd7ba0 only set focus on clients which are visible during client eval
focusing a client will automatically uniconify and desk flip, so
setting focus on a hidden client should be avoided during eval since
these focus-sets are not "user triggered"

this fixes issues where clients could randomly grab focus from other
desks and also restores expected behavior when restarting e on an
empty vdesk
2015-09-21 19:19:01 -04:00
Mike Blumenkrantz 7056d598c4 do not return non-visible clients for e_client_under_pointer_get()
a hidden client should not be considered "under the mouse" since its
geometry is undefined until it becomes visible again

fix T1069
2015-09-21 17:50:48 -04:00
Mike Blumenkrantz e8a9ba34b0 always send CLIENT_SHOW event when clients are shown
I think it was the case for <E19 that uniconifying a client would
not send a show event, but this is not ideal and so the event should
still be sent
2015-09-17 19:08:27 -04:00
Mike Blumenkrantz f5657fc6c1 enforce gathering client moveinfo before beginning move/resize action 2015-09-17 16:54:00 -04:00
Carsten Haitzler b73364269b e winlist focus alt-tabbing - fix focus list changes while tabbing
this should fix T2700

@fix
2015-09-12 13:38:38 +09:00
Mike Blumenkrantz 8946e3e504 unshade clients when activating
fixes issue where an activated client on another vdesk which was shaded
would appear to be unshaded but was, in fact, shaded
2015-09-08 17:01:36 -04:00
Mike Blumenkrantz 5bd8706bac force-disable refocus during desk flip on client activation
this prevents an infinite focus loop where focus will be constantly
reapplied between multiple windows if the activated window is not the
refocus window
2015-09-08 16:55:21 -04:00
Mike Blumenkrantz fb79fff70d don't set E_Client->changes.visible on successful show/hide
iirc this was a fix for something else that was going on early in
e19 development, now it creates issues when attempting to hide clients
2015-08-19 14:00:52 -04:00
Mike Blumenkrantz 0730e3853a unset E_Client->want/take_focus flags in hide callback
deferred focus should no longer be valid if a client has been hidden
before the focus-set could be triggered

fixes super fun infinite loop with desk flips
2015-08-18 18:18:12 -04:00
Mike Blumenkrantz 68da56b430 do not modify E_Client->visible value in show/hide callbacks 2015-08-18 18:17:51 -04:00
Mike Blumenkrantz 442d63d8d6 track button mask for all drags, only end drag when mask has depopulated
previously, beginning a drag with the left button, then pressing and
releasing another button would result in the drag terminating without
the original button being released
2015-08-12 15:39:42 -04:00
Mike Blumenkrantz 42bc9b0bef disable ecore-evas events on client windows during actions
this is a not-great way of hacking around various issues related to
the efl mouse button cancel patches that went in for the 1.15 cycle
which changed the entire mouse input workings of the toolkit.

to avoid further issues, the compositor will explicitly block eventing
on all internal canvases during actions
2015-07-28 16:46:00 -04:00
Mike Blumenkrantz dd1577a169 fix client smart callbacks on (un)maximize
these should match the callbacks triggered for whatever the current
maximize state is
2015-07-24 14:34:03 -04:00
Mike Blumenkrantz 21b8016c5b add clients to focus stack as necessary in e_client_unignore() 2015-07-21 14:21:36 -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 ecb5f4ca41 add E_Client->keyboard_resizing flag
there is no other indication of whether a client is resizing using the
keyboard, so this should serve as an adequate hint
2015-07-15 18:07:12 -04:00
Mike Blumenkrantz 8e5a2cb430 add client util function for determining if a backing xwindow exists 2015-07-01 16:40:10 -04:00
Mike Blumenkrantz f1f4489822 free all ec->comp_data ptrs in _e_client_del
need this to live through multiple del hooks, so simplify all code by
freeing in one place
2015-06-30 18:33:00 -04:00
Mike Blumenkrantz 7583b5ae5c use separate client hashes for x11/wl clients 2015-06-30 16:04:22 -04:00
Mike Blumenkrantz 3e6d6b348f trigger fake mouse-out on clients when unsetting focus
this will allow a more reasonable determination of pointer location
when attempting to apply mouse-based focus policies
2015-06-29 16:00:43 -04:00
Stefan Schmidt e2f87d3498 e_client: Remove deleted client from UUID store
Signed-off-by: Stefan Schmidt <s.schmidt@samsung.com>
2015-06-29 17:01:53 +02:00
Mike Blumenkrantz 179118a70c reject ignored clients from being processed in client idler 2015-06-25 20:04:31 -04:00
Mike Blumenkrantz ca013d9439 reject stacking clients from frame updates in client idler 2015-06-25 20:04:31 -04:00
Yomi 0dc33a5aeb Fix misspellings in E's files.
Summary: Fix misspellings and spaces in E's files.

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D2676
2015-06-16 16:10:21 -04:00
Toan Pham 1469e9b973 Center a dialog window when it is displaying off-screen
Summary: Center a newly created dialog window when it is displaying off-screen.  Fixes T2419

Reviewers: zmike

Subscribers: cedric

Maniphest Tasks: T2419

Differential Revision: https://phab.enlightenment.org/D2646
2015-06-16 14:28:54 -04:00
Carsten Haitzler 6b64e40122 e - e client, comp win etc. reffing fix ... part 2
this follows 56cabf59c6 then
4e5521b4d8 where i have been trying to
fix a crash with e client and comp win references etc. i have gone
over all referencing with a fine tooth comb and found all the nigglies
i can., no leaks now, no crashes, no valgrind complaints etc. so i
call this fixed now. as best i know this is new in e20, so not a
backport fix
2015-06-15 20:27:25 +09:00
Carsten Haitzler f1bd800037 e - fix crash in desktop lookup+fixup where exe_inst is null 2015-06-14 17:50:14 +09:00
Mike Blumenkrantz e70fcc565d fix focusing client on mouse events which trigger actions (with exceptions)
block focus events only if focus has changed to another client or the current
client's layer-actual has been lowered

regression from 719b2baeba
2015-05-21 12:32:26 -04:00
Mike Blumenkrantz 83eebacb5d allow new fullscreening clients to replace current nocomp where applicable 2015-05-18 13:20:35 -04:00
Mike Blumenkrantz 205d8b0b74 reject client fullscreening based on config and desk visibility 2015-05-18 13:20:35 -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 719b2baeba only apply mouse down focus events if a binding did not run on the same event
fixes the case of enabling "raise on click" and also having a mouse binding
for "lower on click" active

fix T2364
2015-04-29 17:15:43 -04:00
Mike Blumenkrantz cb9ab4e1f4 freeze evas events on clients during keyboard move/resize actions
fix T2112
2015-04-29 17:02:36 -04:00
Mike Blumenkrantz ee44d29ebc ensure client max w/h props are set before applying them to client geom 2015-04-27 12:30:29 -04:00
Carsten Haitzler 9eaac75ae2 e - e_client - fix added printf
665caad451 fix added a printf i didn't
notice - fix.
2015-04-21 11:00:24 +09:00
Carsten Haitzler 665caad451 e client - desk wait - ref it properly and clean up delfn
delfn's on desks being referred to as profile.wait_desk were never
cleared when client was freed. als the desk itself never got an obj
reference - fix that and ref/unref it.
2015-04-21 09:36:33 +09:00
Mike Blumenkrantz 934d541795 use client geometry for starting unmaximize calculations
the resize operations in this function operate off client geometry, so
stop using frame geometry

fix T2170
2015-04-20 14:32:21 -04:00
Stefan Schmidt 83572a3edb e_client: Remove self assignment from e_comp
Hopefully the last one of these self assignments.

CID 1291840
2015-04-16 17:00:08 +02:00
Mike Blumenkrantz 785cb47b89 set E_Exec_Instance desktop during client idler if none present
ref T2284
2015-04-13 16:16:37 -04:00
Mike Blumenkrantz 3498c6caf8 add colorclass editor to app menu 2015-04-05 16:27:18 -04:00
Mike Blumenkrantz da149ba021 block ignored clients from lost client list 2015-04-03 20:57:52 -04:00
Mike Blumenkrantz 58447e9508 completely remove E_Manager
the final step in flattening all the canvas/screen apis
2015-03-19 16:53:32 -04:00
Mike Blumenkrantz 75c9d9babd remove E_Comp from e_resist apis 2015-03-18 16:28:24 -04:00
Mike Blumenkrantz 2cb00285fd remove E_Comp from E_Client_Layout_Cb 2015-03-18 11:37:27 -04:00
Mike Blumenkrantz f9f7f001c9 use correct wayland ifdef for E_Client uuid generation 2015-03-13 17:29:34 -04:00
Mike Blumenkrantz 34d906fa42 e_zone functions no longer require E_Comp param 2015-03-13 17:28:49 -04:00
Mike Blumenkrantz 1736d1ecb9 e_client functions no longer require E_Comp param 2015-03-13 16:53:19 -04:00
Mike Blumenkrantz d00127c2f5 e_comp functions no longer require E_Comp param 2015-03-13 16:48:41 -04:00
Mike Blumenkrantz bacf638d73 remove E_Drag->comp and E_Comp param from e_drag_new() 2015-03-13 16:21:15 -04:00
Mike Blumenkrantz 1fe1c94245 comp canvas functions no longer require an E_Comp param 2015-03-13 16:07:08 -04:00
Mike Blumenkrantz 91edd1ce2f E_CLIENT_*FOREACH() macros no longer take a E_Comp param 2015-03-13 15:45:07 -04:00
Mike Blumenkrantz 091142b032 remove E_Client->comp 2015-03-13 15:41:21 -04:00
Carsten Haitzler 03f05d16e5 e clients - make sure we handle client with a NULL zone 2015-03-11 18:34:38 +09:00
Mike Blumenkrantz 143c0a9292 fix horizontal/vertical smart maximize
fix T2170
2015-03-06 17:16:24 -05:00
Mike Blumenkrantz a38a34d599 set ec->fullscreen before applying fullscreen geometry 2015-03-04 15:52:16 -05:00
Mike Blumenkrantz b06111b00e reject ignored clients from client mouse event functions 2015-02-26 16:17:10 -05:00
Mike Blumenkrantz 23c4d42e4c rename extremely frustratingly-named E_Screen_Limits enum and members
this came in a patch that I take full responsibility for not adequately reviewing at the time.
the names are confusing and counterintuitive, and it does not properly include the client namespace.
2015-02-18 18:34:29 -05:00
Mike Blumenkrantz 1f21efd911 clamp client size to screen when client limit policy does not allow offscreen
fix T1779
2015-02-18 18:26:16 -05:00
Mike Blumenkrantz 1301453fa4 only reject client mouse out for X clients
not sure this is still applicable since systray xembeds are gone
2015-02-13 16:24:24 -05:00
Mike Blumenkrantz e2b02d07d5 add first YOLO: e_client_focus_stack_set()
to quote ecore docs:

DO NOT use this function unless you are the person God comes to ask for
advice when He has trouble managing the Universe.
2015-02-13 15:46:52 -05:00
Mike Blumenkrantz fdeedef7fe add E_Client->mouse.in for determining mouse-in status 2015-02-12 16:18:46 -05:00
Mike Blumenkrantz e34548db01 remove unused E_Client->input_object
this is a relic from E18
2015-02-12 16:17:50 -05:00
Carsten Haitzler 5d2426cdda e - client list update after adding to client list - fix netwm bug
this fixes T2029
2015-02-06 17:58:08 +09:00
Mike Blumenkrantz 1f608490c8 make comp param in e_client_new unused 2015-02-02 12:42:43 -05:00
Mike Blumenkrantz 30f17c5680 remove no longer necessary setting of changes.size on client resize
this is unnecessary since we resize on every necessary frame anyway
2015-01-22 23:03:38 -05:00
Mike Blumenkrantz 0bac875290 remove some e_comp_get() usage in core comp/client files 2015-01-05 15:39:34 -05: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
Mike Blumenkrantz 9ff9de799a completely block border changes on MWM borderless windows
ref T1963

seriously.
2015-01-03 00:07:48 -05:00
Mike Blumenkrantz f4b8e9563c apply pointer warp effects immediately when instant warping
fix T1462
2014-11-28 15:06:47 -05:00
Mike Blumenkrantz 034c05bc0d remove unnecessary unfocused signal emit on clients 2014-11-22 08:31:59 -05:00
Mike Blumenkrantz ce8a4a2b78 remove ec->changes.internal_props
this should be set directly on the win using evas/elm apis
2014-11-20 15:26:22 -05:00
Mike Blumenkrantz 99589eb5af remove E_Win+e_canvas, convert all internal wins to use elm_win
known issues:

* keybindings for efm windows (eg. ctrl+w) are broken until the rest of the conversion is completed
2014-11-20 15:26:21 -05:00
Mike Blumenkrantz a9495340f6 fix internal window border changing 2014-11-03 14:10:17 -05:00
Chris Michael 81dcfd5f55 declare drag finished callback event if building for wayland-only
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-03 13:43:21 -04:00
Chris Michael 8889a0fc1c remove ifdef's for compiling out e_dnd support in wayland-only mode
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-10-03 13:28:58 -04:00
Mike Blumenkrantz 8814d3ad28 client hooks should not continue to be called if the client has been deleted 2014-09-23 13:17:45 -04:00
Mike Blumenkrantz 3aaa843a4f comp render queue on every client resize instead of on unmaximize 2014-09-23 10:31:04 -04:00
Stefan Schmidt 90daba7645 e_client: _e_client_cb_drag_finished is not used in wayland only mode
Mostly cosmetic as it avoid a warning of an unused function when compiling
for wayland only.
2014-09-19 09:56:10 +02:00
Mike Blumenkrantz a0179c8c59 force render queue on unmaximize if client was fullscreen
fix T1665
2014-09-18 11:52:30 -04:00
Mike Blumenkrantz 0028c7aea3 fix client positioning when initial position is offscreen or size is huge
ref T1571
2014-09-07 12:35:45 -04:00
Seunghun Lee e3f4f0f976 set the maximized valuable of E_Client before calling _e_client_frame_update when unmaximize the client.
Summary: since maximized valuable is used in _e_client_frame_update, so the valuable should be updated.

Test Plan:
(1) run any application.
(2) Maximize the app by key binding.
(3) Change the border type.
(4) Unmaximize the it by key binding.
(5) try to maximize it again, but couldn't

Reviewers: zmike

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D1357
2014-08-29 13:46:25 -04:00
Chris Michael c308904e9b fix formatting
Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-08-26 10:10:36 -04:00
Carsten Haitzler 525b963133 transient client windows - improve behavior
* if unplaced, place centered on transient-for on initial placement
  rather that screen centered
* if transient.move and transient.resize options follow options are on
  make transients floow as intended
2014-08-25 20:56:08 +09:00
Mike Blumenkrantz ef97ac2ff4 don't set frames on override clients 2014-07-29 23:47:53 -04:00
Mike Blumenkrantz 291c1f7cc5 break out client border setting into separate function 2014-07-28 08:42:24 -04:00
Mike Blumenkrantz 0c191c0a47 add missing client type checks 2014-07-14 13:12:32 -04:00
Mike Blumenkrantz 3c7fab995c +e_client_layout_cb_set()
let's keep client hooks for clients.
2014-07-07 13:42:47 -04:00
Mike Blumenkrantz db49d8cc75 Revert "bring back client hook that breaks illume2 + contact"
This reverts commit 36c3d15c0b.
2014-07-07 13:29:59 -04:00
Carsten Haitzler 36c3d15c0b bring back client hook that breaks illume2 + contact
i know it's not that pretty, but this brings back the
E_CLIENT_HOOK_CANVAS_LAYOUT as there just is no viable replacement and
thus breaks 2 modules. this fixes T1402 - we chances are just that
this needs a separate hook point as it isnt a per-client but a
per-comp hook.
2014-07-07 15:11:56 +09:00
Mike Blumenkrantz a5c098ebc5 reenable edges after signal move ends
probably fix T1363 since it is not reproducible
2014-06-25 16:05:26 -04:00
Mike Blumenkrantz ace4a32553 add desk_change client smart callback 2014-06-16 13:35:57 -04:00
Gwanglim Lee 571a696ab8 fix visibility issues related to desktop window profile
Summary:
1. fix window profile change request with wrong x window id
2. refactoring desktop window profile codes to handle e_client_desk_set correctly

Test Plan:
1. enlightenment: Settings Panel -> Screen -> Virtual Desktops -> Check "Use desktop window profile" -> Apply
2. open an efl app on 1st desktop (0-0)
3. set a window remember on efl app window
4. go to 2nd desktop (1-0)
5. open an efl app again. it should be positioned on the previous desktop (0-0)

Reviewers: zmike, raster

CC: cedric

Differential Revision: https://phab.enlightenment.org/D926
2014-06-09 13:30:04 -04:00
Mike Blumenkrantz 5ad876ccad block mouse actions on frame for iconic clients
fix T1069
2014-06-08 12:13:02 -04:00
Mike Blumenkrantz d8aa488096 completely revert all eo/eolian usage
this was a neat experiment, but apparently it's not going to be usable for a long time in anything outside efl/elm

This reverts commits f87b9900fa, a49cede790, 81038f8d02, 47cfb31752.
2014-06-04 07:27:50 -04:00
Mike Blumenkrantz 3033c550d1 set resize mode for keyboard resizes
fix T1297
2014-05-30 11:02:04 -04:00
Mike Blumenkrantz 483023051e completely redo window profiles
when this feature was added, its behavior was naively set to ignore repeated desk changes. it also was not adequately tested, resulting in a frustratingly large number of bugs.

with these changes, window profiles should no longer be the cause of client visibility being broken as caused by a failure to change desk.

fix TChutney
2014-05-29 16:57:54 -04:00
Mike Blumenkrantz 8f9a07fe3a Revert "stacking - fix stacking after/before fullscreening"
This reverts commit 1f8975d546.

totally wrong. do not externally set this.

this issue, which I cannot reproduce, is almost definitely caused due to the fact that _evas_object_layer_set() effectively calls evas_object_raise() without triggering intercept callbacks
2014-05-29 10:25:30 -04:00
Carsten Haitzler 1f8975d546 stacking - fix stacking after/before fullscreening
input events were broken due to stacking not being maintained for the
actual windows going to/from fullscreen
2014-05-29 21:45:48 +09:00
Mike Blumenkrantz 7bfeef352c block desktop instance matching for clients which have a different pid from the startup id
these should get set more accurately in a followup test

fix T1237
2014-05-09 22:53:53 -04:00
Mike Blumenkrantz adcf979e5c always unset need_unmaximize after maximize
fix T1203
2014-05-07 12:43:29 -04:00
Mike Blumenkrantz 58d8243457 force geometry setting during maximize
fixes adding maximize states
2014-05-07 12:42:41 -04:00
Stefan Schmidt cc23186dbd e_uuid_store: Use libuuid for UUID generation and handling
Instead of rolling our own we go with a known working UUID implementation
here. Dependency should be easy enough as more or less every Linux system
is shipping it anyway.
2014-04-24 11:03:52 +02:00
Carsten Haitzler 8e49b69796 re-order icon finding for border to use the most reliable source first 2014-04-19 09:08:37 +09:00
Mike Blumenkrantz 47cfb31752 comp_object now uses eo, e_comp_object_signal* -> edje_object_signal*
also cw->clip is gone
2014-04-10 19:01:47 -04:00
Tom Hacohen dc05d96659 Fix client border changing issues
The code was zeroing the flag that tells e to change the border after
the callbacks about frame changes. This means that one couldn't change
the border from within those callbacks. This commit fixes this issue.
2014-03-31 15:24:12 +01:00
Mike Blumenkrantz da5bd16e12 greatly improve child dialog placement, FIXME--
fix T980
2014-03-27 19:47:31 -04:00
Mike Blumenkrantz 50a37adb6e ignore mouse movements on client during keyboard actions
fix T1097
2014-03-27 16:47:19 -04:00
Mike Blumenkrantz 110f62ca61 always unclip/uneffect clients when changing desks
probably fix T1126
2014-03-27 16:47:18 -04:00
Carsten Haitzler 1e50cb1dc6 don't delete client objects when _e_client_hook_call returns false.
_e_client_hook_call() returns false when object refcount hit 0... ie..
it's been deleted. it's simply invalid memory access to then del the
object thats already gone to 0 refcount and been deleted/freed.
2014-03-26 15:32:53 +09:00
Mike Blumenkrantz c47bf94cdf hook sticky smart callbacks properly inside comp object 2014-03-20 11:38:58 -04:00
Mike Blumenkrantz b5a04496b7 add stick/unstick client smart callbacks 2014-03-20 11:31:32 -04:00
Chris Michael 52532f9a32 Don't leak the allocated client object if we are returning null from
e_client_new

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-03-20 10:18:44 +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
Mike Blumenkrantz d8375aaf9d Revert "apply client resize limit for all possible size values during maximize calcs"
This reverts commit 08acb0c6aa.

fix T1102
2014-03-17 12:49:44 -04:00
Mike Blumenkrantz 2b3906d8da bugfix: don't crash when passing NULL desk to e_client_under_pointer_get
CID 1186204
2014-03-13 11:47:44 -04:00
Mike Blumenkrantz 3583d76839 trivial dead code--
CID 1187923
2014-03-13 11:42:49 -04:00
Mike Blumenkrantz bf66547c15 fix null termination of client desktop string matching
CID 1155274
2014-03-13 10:28:33 -04:00
Mike Blumenkrantz 1abc612569 ensure valid client layers in client stack iterating functions
CIDs 1155288, 1155280
2014-03-13 10:27:35 -04:00
Seunghun Lee 08acb0c6aa apply client resize limit for all possible size values during maximize calcs
Summary:
there was a problem that the app like gnome-terminal had not been restored to origin size after maximization.
I think that's because E overwrite the data of saved.x/y to maximized size in ConfigureRequest handler.
The reason why ConfigureReuqest happen is that the window tried to resize itself properly, since E resize window without regard of size hints.

Reviewers: zmike, seoz

CC: cedric

Differential Revision: https://phab.enlightenment.org/D633
2014-03-13 10:15:13 -04:00
Mike Blumenkrantz 3f5ac7d9ab use static array of inlists for client hooks to reduce overhead 2014-03-13 09:35:06 -04:00
Mike Blumenkrantz f82351d3e2 reset client urgency on focus-out and iconify 2014-03-05 10:08:09 -05:00
Mike Blumenkrantz 9ad04eb877 redo client urgency again with separate flag for actual urgent state
preserve icccm flag for accurate detection
2014-03-05 10:08:09 -05:00
Mike Blumenkrantz 5241140dd2 don't run client visibility idler updates for iconic clients 2014-03-04 15:20:24 -05:00
Mike Blumenkrantz 7b44add514 redo iconic setting for new clients 2014-03-04 15:20:24 -05:00
Mike Blumenkrantz c720451933 force client urgency unsetting on focus
fix T1016
2014-02-27 21:05:33 -05:00
Daniel Kolesa 6085d79df8 e_client: build fix 2014-02-25 19:40:37 +00:00
Mike Blumenkrantz c4a9adebc8 bugfix: don't use raise stack for iterating clients
T914
2014-02-21 17:53:14 -05:00
Mike Blumenkrantz d6c037ff30 fix maximize size calculation on non-current desks with shelves 2014-02-21 17:19:02 -05:00
Mike Blumenkrantz 21d9b84c53 force resizing when changing desk on same screen
this normally happens in zone_set
2014-02-21 17:19:01 -05:00
Mike Blumenkrantz 0e66cdda82 only move/resize non-override internal clients during eval
T1007
2014-02-21 16:44:12 -05:00
Mike Blumenkrantz f75a923ab0 break out client focus reset into separate function 2014-02-21 16:44:12 -05:00
Mike Blumenkrantz 88831252c8 use current desk when unsetting client sticky property
T989
2014-02-21 16:44:12 -05:00
Mike Blumenkrantz 0bd9052c7e better fix for exec client removal: don't remove if exec is deleted 2014-02-18 06:56:54 -05:00
Mike Blumenkrantz 4c2db4342a bugfix: unref client when removing from exec if exec is deleted
fixes a race condition where client would never be freed when closing lots of windows simultaneously
2014-02-17 16:21:02 -03:00
Mike Blumenkrantz e6fa8f3176 don't unfullscreen clients if:
* iconic

* hidden (desk flipped)

* not on current zone

T920
2014-02-14 15:08:23 -05:00
Mike Blumenkrantz aa37188e02 add maximize_pre and unmaximize_pre smart callbacks 2014-02-12 20:37:39 -05:00
Mike Blumenkrantz 0b2e3ea2e3 add unmaximize_done client smart callback 2014-02-12 19:50:17 -05:00
Mike Blumenkrantz 82faa72a45 move maximize_done client smart callback to the end of maximize 2014-02-12 19:49:58 -05:00
Mike Blumenkrantz 0d2945149a client signal actions are not mouse actions
mouse actions have a different end path which causes pointer popping to not occur

T913
2014-02-12 12:06:13 -05:00
Mike Blumenkrantz 1f534c3b32 set client move/resize vars in time for client hooks 2014-02-12 11:50:00 -05:00
Mike Blumenkrantz 5a14f9f00e unset client.saved after unmaximize callback 2014-02-11 19:28:25 -05:00
Mike Blumenkrantz 3f5b5b03b2 call unmaximize smart callback for all unmaximizes, fix client sizing on directional unmax 2014-02-11 19:01:36 -05:00
Mike Blumenkrantz ffe5670b39 add "maximize_done" smart callback for clients 2014-02-11 18:48:56 -05:00
Mike Blumenkrantz 29cd45142a remove E_EVENT_CLIENT_(UN)STICK, use E_EVENT_CLIENT_PROPERTY & E_CLIENT_PROPERTY_STICKY 2014-02-10 20:10:38 -05:00
Mike Blumenkrantz c47a7e9b8f improve _e_client_move_begin():
* set ec->moving before MOVE_BEGIN hook

* remove comp grab on failure

* only raise if move succeeds
2014-02-07 14:29:07 -05:00
Mike Blumenkrantz 86d92adba6 set ecresize in e_client_resize_begin() 2014-02-07 14:24:37 -05:00
Mike Blumenkrantz 2817bf025b more e_client_resize_begin() improvements: remove comp grab on failure 2014-02-07 14:23:55 -05:00
Mike Blumenkrantz dab9f9eb3c don't double unset resize_mode on e_client_resize_begin() failure 2014-02-07 12:04:06 -05:00
Mike Blumenkrantz e68837c1d6 e_client_resize_begin() fixes
* make return value accurate

* unset resize_mode on failure
2014-02-07 12:01:12 -05:00
Mike Blumenkrantz 059870b970 layer setting on overrides during client_new wasn't a placeholder, just using the wrong value
T908
2014-02-07 09:23:50 -05:00
Mike Blumenkrantz ea7c0c3dcd improve stringshare use in e_client_desk_set 2014-02-06 12:52:48 -05:00
Mike Blumenkrantz 569c90e87f e_client_util_is_stacking() -> e_client_is_stacking()
regrettably, this can't be in e_client.x because it needs E_Comp struct members and header order does not allow for this :(
2014-02-05 10:58:57 -05:00
Mike Blumenkrantz 8d71213839 e_client_name_get() -> e_client_util_name_get()
this should be inlined
2014-02-05 10:55:50 -05:00
Mike Blumenkrantz eba912cf6a e_client_resizing_get() -> e_client_util_resizing_get()
functions in e_client.x should be namespaced with e_client_util to indicate that they are inline (and in e_client.x)
2014-02-05 10:51:36 -05:00
Mike Blumenkrantz 20c09a3891 don't check client zone during idler
this happens on every move and resize, no need to check it a third time
2014-02-03 13:58:57 -05:00
Mike Blumenkrantz 7efa7b3f27 don't overwrite existing coords on creation of override client
overrides come with their own placement for zones
2014-02-03 13:55:38 -05:00
Mike Blumenkrantz d293b368b8 bugfix: screen limits policy no longer breaks X client positioning
this has been broken since it was added, and I strongly regret allowing it to be added.
2014-02-03 12:52:35 -05:00
Mike Blumenkrantz 7ef4340c3f revert 83397e1bde 2014-01-29 21:12:07 -05:00
Carsten Haitzler 83397e1bde fix segv where comp_data is null but still accessed
it seems i have an override-redirect window just off the bottom-right
of my screen - i think its the scim input panel status. what happens
is it is "managed" by comp but then deleted (_e_comp_x_hook_client_del
called), BUT _e_comp_x_object_add is called with a deferred event for
that client to add it again (likely this is a race) which finds he
client in a state of not having comp_data as the E_FREE in
_e_comp_x_hook_client_del() frees it and sets it to NULL. move the
comp_data free to the actual client free (which is the last time a
client is valid at all) solves this.
2014-01-30 08:55:28 +09:00
Mike Blumenkrantz 2c41e314d0 check sticky flag when setting comp hidden on desk set
seriously guys, I fixed sticky windows this time. seriously.
2014-01-27 21:49:34 -05:00
Mike Blumenkrantz cf267da573 also fix unsticking clients
e_client_desk_set() will sort out the hidden flag here automatically, so unsetting it is always the better choice
2014-01-27 21:44:05 -05:00
Mike Blumenkrantz 35aaabc491 fix toggling sticky state on clients
previously this would break windows if it was set based on persisting X hints
2014-01-27 21:35:39 -05:00
Mike Blumenkrantz 3dd0ea5189 break out client urgency setting into separate api function
this unclutters the client idler a little and also makes it easier to correctly set the urgency hint for clients
2014-01-27 21:35:39 -05:00
Mike Blumenkrantz 7a8a06ec7e set all clients to NORMAL layer by default
I added a workaround for overrides a while ago when things were less good and then didn't take it out again when things became more good

T718
2014-01-27 10:58:41 -05:00
Mike Blumenkrantz cd2cde6477 clean up client delete+unfocus
previously there were cases where client focus was not explicitly unset on delete, which resulted in expected client hooks not being called and minor inconveniences to occur
2014-01-27 10:58:41 -05:00
Mike Blumenkrantz 4614d8b0fb and fix window_move action by putting this line back 2014-01-23 09:12:10 -05:00
Mike Blumenkrantz b1fd48af59 don't double grab compositor input during client actions
T844
2014-01-23 08:52:45 -05:00
Mike Blumenkrantz b4a9c55115 attempt to revert focus when iconifying a client 2014-01-20 16:43:47 -05:00
Mike Blumenkrantz 6ef655d2dd feature: blanking options for wakeup on events (urgent + notify) 2014-01-20 16:08:14 -05:00
Mike Blumenkrantz aefaaea57b unify client borderless checks to use util function 2014-01-20 15:12:40 -05:00
Mike Blumenkrantz d42b24632e also update frame immediately during unmaximize 2014-01-20 00:08:25 -05:00
Mike Blumenkrantz ef2a96eb82 apply frame changes before entering/exiting fullscreen
T816
2014-01-20 00:03:51 -05:00
Mike Blumenkrantz bcee2e34aa break out client frame setting into helper function 2014-01-20 00:00:45 -05:00
Mike Blumenkrantz ec8424fb16 remove duplicate shaped client handling 2014-01-19 03:33:40 -05:00
Mike Blumenkrantz 8ce457889e ensure withdrawn state is always set
this is what was breaking shows on things like yakuake
2014-01-19 03:33:39 -05:00
Mike Blumenkrantz 43a8bbcc30 don't always raise clients on maximize 2014-01-17 17:41:30 -05:00
Mike Blumenkrantz 999f217f8b set pass events on deleted clients 2014-01-17 11:36:35 -05:00
Mike Blumenkrantz 41429d188b fix fullscreen client crash
T796
2014-01-17 10:55:06 -05:00
Mike Blumenkrantz fda2442fe5 enforce correct geometry for client->saved.{x,y}
this is for CLIENT geometry and does NOT include the zone x/y
2014-01-16 20:27:07 -05:00
Mike Blumenkrantz c50eeab227 don't do client stacking remember/event if not redirected 2014-01-16 11:36:16 -05:00
Carsten Haitzler 00cb30ac6e window icon dnd - make sure icon is properly positioned under mouse 2014-01-16 21:05:57 +09:00
Mike Blumenkrantz f12cdee3ca adjust frame icon drag geometry
T776
2014-01-15 23:11:12 -05:00
Mike Blumenkrantz b0d53be21d fix remember geometry updating
T791
2014-01-15 22:54:08 -05:00
Mike Blumenkrantz 17291018db override/placed gets set on compositor side 2014-01-15 21:04:10 -05:00
Mike Blumenkrantz 32fd2f1776 fix keyboard move/resize info display 2014-01-15 17:01:44 -05:00
Mike Blumenkrantz a084217ba9 don't hints on override clients
T772
2014-01-15 12:13:04 -05:00
Mike Blumenkrantz 166ed0d234 feature: new focus option "raise on revert focus"
this option provides the functionality which was intended by the old and broken "raise on focus" option. it raises windows ONLY when reverting focus in cases not directly triggered by the user or any application
2014-01-14 20:28:59 -05:00
discomfitor b67d94210a feature: add layer_block client flag to bypass any layer/stacking checks and "just do it" for cool effects
this flag allows a client's layer to be changed instantly with no protocol-level checks or work, allowing compositor effects to do their work more easily
2014-01-14 20:28:59 -05:00
Mike Blumenkrantz f637cbf08e deskmirror is now a fully-functional E api
* finish updating for E19 api

* fix visibility changing on sources

** use that shelf data item added in previous commit to detect shelf visibility

* fix sizing (but not scaling :() and positioning of sources

* also fix stacking
2014-01-14 20:28:58 -05:00
Mike Blumenkrantz d307214c8d check for efreet desktop if EITHER icccm name/class is set
allows wayland clients, which only set class here, to find their desktop
2014-01-14 20:28:58 -05:00
Mike Blumenkrantz 0beaea217a remove awful LAYOUT client hook 2014-01-14 20:28:57 -05:00
Mike Blumenkrantz 86656e4df9 compositor rewrite / charlie-foxtrot situation
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
2014-01-14 20:22:02 -05:00