it seems that I always have this thing stuck open for a long period of time after moving my mouse out through it. I suspect that most times when a user moves the cursor out of the menu and does not immediately move it back or to the icon, the menu probably shouldn't hang around. likewise, when it moves out of the icon, maybe we give a little extra time to reach the menu, but not so much that it hangs around if the icon was exited through the side
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
after this commit, the new-but-invisible module "lokker" (or other custom loaded module) is in charge of creating all graphics for the lock screen, and it will be added to the user's config. failure to load a lockscreen module will just result in a black screen
desklock subsystem now handles all the pre/post lock stuff while the modules themselves are responsible for creating visuals and calling auth functions to determine whether to unlock the screen
p16 is a pager replacement module which uses deskmirror to show you live views of each desktop. it has a separate theme and reuses a lot of pager code.
not sure if original pager should be kept, but it's still around for now.
pager and pager16 both provide the same gadget and cannot be loaded simultaneously
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
adds a probably-working wayland framebuffer output module
Additional authors:
Chris Michael <cp.michael@samsung.com>
Signed-off-by: Chris Michael <cp.michael@samsung.com>
this is the first of the wayland output modules, and it is extremely simple as a result of the compositor rewrite. for any other wayland output modules, it should be enough to simply create an ecore_evas canvas and do startup in this way.
* 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
given that compositing is always enabled and that it's crucial to be able to change these settings, potentially having them unavailable is not a great way to live
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
this is the correct way to write a build system. one toplevel Makefile.am with the rest of the directories having include Makefile.mk files.
additional authors:
Iván Briano <ivan.briano@intel.com>
previous operation resulted in repeated show/hide signals which looked bad.
going to have to investigate timer settings on this, current behavior, while a step in the right direction, seems unusable for me with the mismatch of no delay to show, LOOOOOOONG delay to hide
this fixes strict aliasing wanrings (-Wstrict-aliasing) whihc are a
result of imported md5 code being just really stupid with casting an
array to a ptr when there is no need.
this adds moldova (moldavian?) flag for layouts of keyboards and
refreshes some of the generic images for unknown, latin america, brail
and arabic "flag" images, and forces flag icons to be 2:1 aspect
ration with icon centered within that area to address T647
realistically I shouldn't have merged this into the release last year.
failing that, I probably should have removed it after the release.
even if I didn't remove it, I should have at least updated/tested it.
I did none of these things, and neither did anyone else, and thus we have an unmaintained module in core.
NOT ON MY WATCH
previously we'd clamp to the current screen, but that's not really necessary. also e_popup sucks, so trying to create zone-relative coords is not going to work -> just use first zone always
this will shut coverty up (hopefully). it doesn't know that a re-exec
of the process will mean the code never gets out of the if ()...
unless the restart action is never found... and that never happens.
if someone were to ... replace the default theme... and would be missing
groups... in theory the min size calc may fail thus leaving min w/h
unset, so just set them anyway.
In my previous commit I did not took into account that ein_file_mkstemp
does not alter the given filename. This is different from mkstemp and I
missed that.
We now ask for the new filename and use it instead.
This prevent music player that support the dbus activation system
to be launched at module startup. Instead of blindly request properties
first check if the name has an owner.
As a side effect now the module fully support the dbus activation system:
if your player is not running it will be launched when you click his
name or any of the controls in the popup.
Note: If your player does not provide the autorun feature you can just
create a .service file in dbus share folder with the following content:
[D-BUS Service]
Name=org.mpris.MediaPlayer2.quodlibet
Exec=/usr/bin/quodlibet
...of course you must change the name of your player ;)
provide a config upgrade path to version 13 which nulls/frees out
theme config (save memory - but more housekeeping), and that also
copeis ofer all files in ~/.e/e/themes to ~/.elementary/themes so you
don't lose themes you personally have and deletes the old e theme dir
if this succeeds.
also remove all #includes of Elementary.h and Emotion.h from single c
files as they are requirements now and in e.h
also remove theme path vars and code as theme path is no longer used.
now e only uses elementary's theme. this is to stop the bitrot and
forking of e's theme vs the unified elm theme that has everything for
e in it already. this obviously makes elm a requirement of e18 on, and
this also notes that emotion is always in efl these days, so its no
longer an option, and ecore-imf is no longer used as edje does the
entires now itself. in future it'll all be elm.
this is a major unification point for themes for elm and e. this will
need some testing, but everything seems to work day-to-day, but theme
selector is untested.
this also removes the theme selector for splash as that is now simply
unified with the same theme as everything else.
this now uses the system ecore timedate change event instead of a
local timerfd. centralized implementation now.
also it fixes yhe eio monitor to ALSO monitor /etc as well to detect
changes to timzesone and filter down to the files needed.
mode->name is NULL by checking mode id instead of name.
Also if we are disabling a monitor, set current mode to 0.
Signed-off-by: Chris Michael <devilhorns@comcast.net>
Now, if a clone cannot be set to the same resolution as the parent,
then we will go through all the parent modes and try to find one that
Both support.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
cloning.
Don't free the mode_info returned from mode find as this mode info is
still part of the monitors collection of modes.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
buckle up. for the first time in history, a config option is getting removed instead of added.
the reasons for this removal are many, but let's go way back to the beginning and see why it was added:
oh wait, we can't because the commit message (from 2006) is
>> patches that i said were in - commit. (see my reply emails)
>> also finish off a TODO item or 2
reading through the TODO items which were also crossed off in that commit, I'm assuming that this was the "option to NOT raise on focus in click to focus" item.
== REASON 1 ==
the problem here is that there's another, BETTER option called "click raises window" (always_click_to_raise) which does the same thing, except it doesn't totally fuck you when you get a random X focus event, which happens more often than you might think.
this means that, to avoid broken behavior which might cause your windows to spastically raise for a few frames in common cases (using winlist...) with click-to-focus, you have to know that this is the default-enabled option that's fucking you, and you have to remember to manually disable it every time. if you DON'T know that this is the option that's fucking you, and you just see windows randomly raising on their own, you'll probably either ignore it or file a bug, when this is supposed to be a "feature" that actually worked in reverse, since it was intended only for disabling.
== REASON 2 ==
there's also auto-raise, which can be set to 0.0s, which is effectively the same thing since it also triggers on focus but can be configured not to fuck your window stack
== REASON 3 ==
aaand finally, this option makes any sort of pointer focus model impossible to use, since your windows will constantly be raising all over as you move the mouse
tl;dr: I'm removing it, e-dealwithit.gif
I've never seen anyone use the analog clock, so this should save people some time when adding new clocks on their screen
next step: make the clock able to do timezones...
- Detect when cloning is changed and update monitor "changes"
- When cloning, we cannot necessarily match parent's Mode, so find a
mode which matches on Size.
- Fix mouse pointer change issue where pointer was not being unset.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- 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>
this was, I guess, an attempt to provide users with an easily accessible ibar icon when starting a new config. problem: xterm isn't installed by default on ANY distributions! so now we end up providing a launcher which is guaranteed to fail, and that makes us look pretty stupid. same thing goes for mplayer.
regardless of whether they're installed, however, these aren't our apps, so we shouldn't be trying to provide .desktops for them: doing that tell users that we support and recommend the use of these apps, and I'm not prepared to make that claim for any app other than powerpoint.
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>
monitor existing, then disable the ability to toggle the indicator.
NB: This is for silly people who (for whatever reason) decide that
it's a good idea to try and turn off their Only monitor.
NB: Fixes Phab Ticket T257
Signed-off-by: Chris Michael <cp.michael@samsung.com>
- Add previous monitor geometry to smart data structure.
- When we set the crtc, also set the monitor current geometry.
- Add function to return the previous monitor geometry.
- On a mouse up, check for monitor location difference versus previous
geometry, if nothing changed then we have no 'move' to do.
- When we start a resize, record the previous geometry and raise the
monitor.
- When a monitor is moved/resized we call the position_update function
which already loops all monitors, so no need to loop them twice.
- Fix position_update function to allow some Snapping Fuzziness so
that on a move/resize any adjoining monitors (within tolerance) will
more reliably snap to each other.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
After a monitor has been moved, snap it to the closest monitor.
NB: This should fix cases where a monitor could not be positioned next
to another monitor which had a resolution of 1368. Previously, the
second monitor could only move to 1366 due to a rounding issue when
converting coordinates to virtual. Now, the second monitor (when
finished moving) will Snap to the proper position.
NB: (Currently) In order for the snapping to work, either the
monitors' X axis or Y axis must be equal. Ideally, this should be
fixed to allow for some percentage of position flexibility.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
smart data's list of modes. This will get freed when the dialog closes.
Fix some formatting for 80 columns.
NB: Should fix etrunko crash ;)
Signed-off-by: Chris Michael <devilhorns@comcast.net>
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>