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>
enlightenment_fm needs some files that are not in its subdirectory, but
rather are shared with enlightenment.
Possible solutions:
1) Use a non-recursive build for enlightenment_fm.
2) Factor out a convenience library containing necessary files
3) Copy over or link the files to build tree directory during build
For simplicity (3) is implemented here. Some files were not necessary
(e_prefix.c and e_sha1.c) and the others are now linked during build to
it's original location.
Sadly we can't globally enable subdir-objects due to gettext choking on
it so enable at least where it's necessary. Remove the following
warning from build:
src/bin/e_fm/Makefile.am:40: warning: source file '../e_prefix.c' is in a subdirectory,
src/bin/e_fm/Makefile.am:40: but option 'subdir-objects' is disabled
automake: warning: possible forward-incompatibility.
automake: At least a source file is in a subdirectory, but the 'subdir-objects'
automake: automake option hasn't been enabled. For now, the corresponding output
automake: object file(s) will be placed in the top-level directory. However,
automake: this behaviour will change in future Automake versions: they will
automake: unconditionally cause object files to be placed in the same subdirectory
automake: of the corresponding sources.
automake: You are advised to start using 'subdir-objects' option throughout your
automake: project, to avoid future incompatibilities.
src/bin/e_fm/Makefile.am:43: warning: source file '../e_fm_shared_codec.c' is in a subdirectory,
src/bin/e_fm/Makefile.am:43: but option 'subdir-objects' is disabled
src/bin/e_fm/Makefile.am:43: warning: source file '../e_fm_shared_device.c' is in a subdirectory,
src/bin/e_fm/Makefile.am:43: but option 'subdir-objects' is disabled
src/bin/e_fm/Makefile.am:43: warning: source file '../e_user.c' is in a subdirectory,
src/bin/e_fm/Makefile.am:43: but option 'subdir-objects' is disabled
src/bin/e_fm/Makefile.am:43: warning: source file '../e_sha1.c' is in a subdirectory,
src/bin/e_fm/Makefile.am:43: but option 'subdir-objects' is disabled
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>
1) efm fix: last_selection resets when icons are freed
2) When no icon is selected select first on Right/Down press or last on Left/Up keypress
3) Maintain order in range selection from first to last.
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...
there's only more than one manager when we're running true multi-head, which is pretty rare/non-existent with compositing, so we can avoid an X call here by just returning the only possible manager
i got a segv in an strncpy... but the bt missed telling me anything
other than it was in _e_border_eval(). gdb wouldn't help.
Thread 1 (Thread 0xb7859780 (LWP 1377)):
No symbol table info available.
No locals.
No symbol table info available.
No locals.
at /usr/include/i386-linux-gnu/bits/string3.h:121
buf = '\000' <repeats 4095 times>
s = <optimized out>
event = <optimized out>
pnd = <optimized out>
rem_change = 1
send_event = 1
since this is the only strncpy, i can only conclude that something is
fishy about the src or dest buffer, and i can only guess that the
strncpy is directly in e_border.c (though it could have come from an
inline func or macro form eina etc.)... but it's the best guess i have.
the strncpy will have problems if bd->client.icccm.class > 4096 in
size. buf will not be nul terminated then:
The strncpy() function is similar, except that at most n bytes of src
are copied. Warning: If there is no null byte among the first n bytes
of src, the string placed in dest will not be null-terminated.
as per manpage. so there was a lurking bug with a non 0 terminated
buffer. also added check for bd->client.icccm.class as it could be
null...
this fixes the case where a drag is occurring on a window and the window is closed/hidden before the dnd leave event occurs. previously this would break things to a moderate degree and cause further dnd operations to fail, but now we bravely soldier onward
1) invalidate moves resulting from stupid clients trying to re-set their current position (SUP WINE. YEAH, I'M TALKIN TO YOU, BUDDY. WHY YOU GOTTA BE MESSIN WITH MY WINDOW COORDS?)
2) clamp coords when screen limit policy is set to prevent clients from being outside the screen at all
3) all things are allowed, nothing is prohibited
geometry_auto_move is an option which should only be applied to "new" clients. we were erroneously applying it during client move/resize requests, which likely was causing unintended behavior. if this becomes an issue, the correct solution is to create (groan) another option to enforce window placement policy either [at all times] or [for client geometry requests]
- 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>
- Add some more debugging printouts
- When we initially plug in a monitor, set to Clone by default
- During initial clone, we cannot assume the plugged-in device
supports the same Mode so try to find a mode based on size.
- On output changes, test that an output has a crtc assigned.
- If a detached output Was the primary monitor, reset primary in config
to a valid existing monitor.
- Improve output_crtc_find code for better detection of where we can
place a new output.
- Fix "preferred mode" detection error.
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>
- Remove singular focus resource references
- Use list of focus resources
NB: Fixes zmike wayland client crash issue ;)
Signed-off-by: Chris Michael <cp.michael@samsung.com>
wayland/weston changes.
- Remove focus_resource and focus_listener
- Use a list of resources instead of singular resource
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>
changes.
- Remove function & calls to wl_*_release as they are redefined in
the client protocol again.
- Fix up calls for getting resource_user_data.
- Add WL_HIDE_DEPRECTAED define
Signed-off-by: Chris Michael <cp.michael@samsung.com>
This reverts commit 21f4a15c90.
It breaks make distcheck. Hard to track down as the error messages came
in po processing and looked like this:
0:10:58.392 make[4]: *** No rule to make target `.deps/enlightenment_sys-e_sys_main.Po'. Stop.
The subdir-objects confused our build setup. If anyone thinks this is
still needed and has a better fix go ahead.
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>
When calling pointer cursor set, if no current surface is focused then
unmap any existing pointer surface and set to NULL in the structure.
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>
Fix getting keyboard focused resource when a modifier is pressed.
Flush clients before we dispatch events (clients may add events to the
queue).
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>
NB: Ecore_IMF (when it uses the wayland module) needs to have
xdg_runtime_dir set. This change ensures that env variable is set
before we init ecore_imf.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
shelves are almost always around. that means that unless you magically
can do partial rendering, comp updates re-render shelf AND all
contents. for systems this means much mofre gl overhead thatn with
e17. to do a mid-way house, force zoomaps on for shelves, until evas
can auto stuff smart objects into buffers on its own based on behavior.
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>
wl_resource_find_for_client.
More fixups for wl_resource functions (_get_client, set_destructor, etc)
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>
this is currently GUARANTEED to break with override shaped windows, which means that if such a window is ever opened, it will NEVER receive input unless it is placed over another client window. this is due to a limitation in evas where it is impossible to (de)select input regions which forced me to choose between either having shaped override windows (such as desktop recorders) block all mouse input to the screen OR have normal override windows (gtk menus and popups...) not able to generate their own input shape at all
it has no mode set yet, then we try to get the preferred mode. If that
fails we will try the crtc size, if That fails we will fallback to a
safe 640x480. When getting preferred size, if the output does not
specifiy a preferred mode (but does list availabe modes), then we will
assume the largest size.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
outputs to zero, and free any allocated outputs before trying to apply
settings.
Also, check for valid mode (not 0) before trying to fetch mode_info.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
Wayland changes.
NB: Although the code does compile and clients do run, I RECOMMEND
that you do not use this feature right now. There is a current bug in
Wayland that is causing crashes when you close clients.
Signed-off-by: Chris Michael <cp.michael@samsung.com>
initial border pixmaps are now available for windows on other desktops immediately after startup, which should:
* improve initial redraw on first desk flip
* make comp mirrors available immediately for non-current desk windows
** fixes ibar menu instances
** fixes deskmirror redraws
if a border appears which has a pid that does not match the pid of the e_exec instance which is found for it, prevent the exec deletion until the border is deleted so that we can track it
this fixes ibar tracking of efm windows