Commit Graph

51180 Commits

Author SHA1 Message Date
Gustavo Sverzut Barbieri 5c961bba9b efl_io_copier: add flush method.
This method will force a read-write cycle and returns if it's fully
done or not. It may be used to force data to be written before a
handle is deleted (when one can't wait for the data to be written
asynchronously).
2016-11-23 12:57:10 -02:00
Jean-Philippe Andre aaaf77965a win: Add quick hack to restore mouse inputs in E Wayland
E Wayland internal windows are a special beast. Somehow all their
events are intercepted by a special input_obj... but never get
propagated back to the elm_win.

Major side-effect: you get 2 window decorations. I believe there is
some dark magic inside E that tries to figure out when to show
a decoration and this conflicts with CSD.

But hey, it's late so I want to "fix" this and figure out the details
later.
2016-11-23 23:53:50 +09:00
Jean-Philippe Andre 72694331b4 win: Fix event forwarder ad//del
On event listener del we were adding one more forward
callback. Copy & pasta error, obviously.
2016-11-23 23:48:53 +09:00
Jean-Philippe Andre ea7bbfe47d win: Factorize code for move_resize
Oops, I probably went a bit overboard with this ~_~
2016-11-23 23:48:53 +09:00
Jean-Philippe Andre 3ad4e0bdfc eo: Fix leak during shutdown() 2016-11-23 23:48:53 +09:00
Jean-Philippe Andre 69a684cf04 evas: Fix a few issues after init/shutdown/init
elm_suite would crash when CK_FORK=no is set, because evas was
badly initializing or shutting down. Note that elm_suite still
crashes with CK_FORK=no but valgrind doesn't complain.
2016-11-23 23:48:53 +09:00
Vyacheslav Reutskiy dc18e71903 ecore_file: get stat from correct file 2016-11-23 16:20:06 +02:00
Vyacheslav Reutskiy 5e25b8037c ecore_file: use win api for delete folder
The RemoveDirectory on Windows guarantee that given folder will be
delete.
2016-11-23 16:20:03 +02:00
Vyacheslav Reutskiy 56c202614b eina_file_win32: close handler in case of error
Func _eina_file_win32_first_file try to find the first file in directory
but if any file not found the file handler stay open, and func will
return error. But in this case while handle is open impossible to do
any actions. For example call eina_file_ls for empty folder, func will
return error and fold folder open. And if we try to remove this folder
Windows only mark it to delete, and remove it after the process is
complete.

Solution: close handler in error case.
2016-11-23 16:19:55 +02:00
Vyacheslav Reutskiy 164ece9e3f ecore_file: update docs for ecore_file_rmdir 2016-11-23 16:19:48 +02:00
Stefan Schmidt 6e86415b13 docs: edje: fill last gaps in edje eo file documentation 2016-11-23 14:16:24 +01:00
Stefan Schmidt 9b0bc5e029 docs: ecore_con: fill last gaps ion ecore_con eo file documentation 2016-11-23 14:16:24 +01:00
Stefan Schmidt bb155657f4 docs: evas: fill last gaps in evas eo file documentation 2016-11-23 14:16:24 +01:00
Stefan Schmidt 34385d1393 docs: elm_scroller: fill gaps in elm_scroller eo file documentation 2016-11-23 14:16:23 +01:00
Stefan Schmidt d172e16e3d docs: elm_player: fill gaps in elm_player eo file documentation 2016-11-23 14:16:23 +01:00
Marcel Hollerbach 70b24abff7 eo: inc the special count
if there is a event the callback counter should be incremented not
decremented. This should fix a few crashes i found in edje, since edje
did not knew that a element was deletion.
2016-11-23 13:42:27 +01:00
Stefan Schmidt ca56059af4 docs: elm_index: fill gaps in elm_index eo file documentation 2016-11-23 11:46:01 +01:00
Stefan Schmidt 23c9d74a8c docs: elm_toolbar: fill gaps in elm_toolbar eo file documentation 2016-11-23 11:43:39 +01:00
Stefan Schmidt d98db09fe9 docs: elm_widget: fill all gaps in elm_widget eo file documentation
This one was huge compared to the other areas. This needs a lot more love to
get on a good level docs wise.
2016-11-23 11:36:28 +01:00
Hermet Park e0da83ce56 efl interface: introduce efl_gfx_path mixin.
As we discussed, redesigned efl_gfx_shape mixin.
Split path properties/methods from the shape so that other classes benefit from the path.
2016-11-23 17:36:57 +09:00
Jean-Philippe Andre 4da634c26f elm: Mark icon as non-atspi
This fixes elm_suite
2016-11-23 14:02:01 +09:00
Jean-Philippe Andre 8c8cb0d34f elm: Safely delete ecore poller in elm_config_shutdown
This prevents some errors after elm_init / elm_shutdown / elm_init
2016-11-23 13:53:51 +09:00
Jean-Philippe Andre 5173b0d59e elm: Prepare new API for windows, including CSD on X11
This series of patches include:
1. Add experimental Client-Side Decorations (CSD) mode for
   windows on X11 (enabled with EFL_WIN_FRAME_MODE=on).
2. Use Efl.Part to set the content and background of a window.
3. Begin moving elm_win_resize_object APIs to a legacy-only
   set of features.
4. Add a new stacked box class.
5. Fix modal windows.

More patches will follow, to implement support for the conformant
features right inside elm_win, as well as polish existing features.

I am merging this now in order to spot and fix compatibility issues
as early as possible. This patch indeed reworks a lot how the
window and its edje groups work together.

Unfortunately, unless we created a new Window class, the complexity
of the code inside efl_ui_win.c has to increase. On the other hand,
all windows now have a frame object, except fake windows, which
redudes some of the differences between X11 and Wayland.

CSD are not used by default, as their support is still not complete
on X, and totally unimplemented on other platforms (OSX, MS Windows,
etc...). Eventually we could think of moving all windows to use CSD
mode like GTK3 does nowadays.

Note: The theme ABI is changed A LOT, so this may break compatibility
with older themes (I have tested a bit, though^^).

@feature
2016-11-23 13:23:52 +09:00
Jean-Philippe Andre 10e2b4417c win: Simplify elm_win_util_dialog_add
This now uses a similar code path as standard windows. Shouldn't
there be an EO class for dialogs, too?
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 0fc049a321 win: Move modal blocker to border group
Legacy themes are still supported with a fallback code.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 60308d7421 win: Code simplification 2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 29e7d477b1 win: Simplify modal legacy API and add test case
This fixes the modality of windows shown after setting
the flag.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 0de72b44c1 win: Fix support for legacy themes (elm_bg)
For standard windows, we want to create an elm_bg object if
the theme is a legacy one. Otherwise the default theme
doesn't require an extra object, just a rectangle.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 8c505e3191 win: Remove menu from EDC group (fixes compatibility)
This fixes compatibility with legacy themes (ie. every single
theme in existence beyond the default one, for now), by checking
where to swallow the menu widget. If a legacy theme is used,
the legacy swallow should be used, and it will all look correct.

Moving forward I hope to get rid of the internal edje object
entirely, except for compatibility reasons.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre fc4c07e735 win: Add frame to inline and socket windows
This simplifies the cases by adding a border edje on all
windows except fake (damn fake windows). Shadows and borders
are always disabled on such windows (but we could easily change
that in the future).
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 6bcaa8a0b9 elm: Add Efl.Ui.Box.Stack for stack boxes (EO only)
This is a very simple implementation for EO of the stack mode
of boxes, as implemented in evas_object_box_layout_stack.

@feature
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 3df7b717c9 evas/box: Add support for align with stacked boxes
@feature
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre 5f6673f623 win: Implement unresizable mode (fixed size windows)
This sends a signal to the CSD frame to hide the bottom
bar and disable the resize borders.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre c31a70a4f5 win: Add content_set API for window main content
The idea is to not have resize object in a stack anymore,
but a couple of swallows in the frame and if the stack of
resize objects is wanted, then the user can still explicitely
create it.
2016-11-23 13:04:13 +09:00
Jean-Philippe Andre aac8f6f114 evas: Add function on object to check is pointer is in
This fixes invalid mouse cursor used when windows are
created.

Due to the changes in the border theme and the fact that
a border is now always created, the event region
"elm.resize.bl" contains the point (0,0) when the window
size itself is 1x1. As a consequence every EFL application
would permanently have a cursor like the resize bottom/left
handle.

This fixes that by properly checking whether the pointer is
inside an object based on the ins list, and not just the
object geometry.

@feature

See also: b735386a45
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 9fb4f0ab2b theme: Implement CSD & non-CSD styles in window.edc
Also converts border.edc to lazEDC (easier to read, imho).

This is still work in progress but currently this supports
CSD & no-CSD modes for normal, maximized, main menu usage, shadow
on and off.

Note that shaded support is not implemented. I've made some
attempts towards this goal, with some success under X but it
was ugly code, and didn't work under Wayland (weston). So, no
extra support for shaded mode yet.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 234bc18f02 win: Always add a frame object
All windows, except for fake, inline & socket images,
should have a frame object to handle all the new APIs and
slots (background, content, indicator, etc...).

The theme will need to handle various modes:
 - full CSD
 - solid CSD without shadows
 - server-side decoration (borderless without shadows)
 - borderless with shadows

This means that the default theme must be used for windows,
so that the required edc parts exist. Apart from the standard
background, it is very unlikely that a theme will have changed
anything in win.edc, conformant.edc or border.edc.

This might prove a controversial move, but the alternative would
be to have increasingly complex code handling new themes with
a single edje object and older themes by swallowing tons of
components magically.

Eventually, the win edje object should also not be used anymore.

By default, windows should not have CSD enabled, except on Wayland.
This patch does not handle frame_obj with server-side decorations
yet.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 4b2d822733 theme: Move ews stuff to its own file
This move ews from border.edc to ews.edc
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 0e52264ae0 win: Add background part to the win border
Use Efl.Part for window to manipulate the background.

Two part names are used in EDC:
 - elm.rect.background
 - elm.swallow.background

For apps the part name is only "background".

To set a solid color background (alpha is ok):
 efl_gfx_color_set(efl_part(win, "background"), r, g, b, a);

To set an image:
 efl_file_set(efl_part(win, "background"), "image.jpg", NULL);

To set an object:
 efl_content_set(efl_part(win, "background"), subobj);

The solid bg is invisible by default, will become visible and use
COPY render mode if a color is set. Standard window uses the
swallow part.

@feature
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre cb172de3da win: Move main menu to the border edje group
The main menu can now be contained inside the CSD border
rather than inside the win edje group.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre b2dbf9d9dd win: Fix maximized geometry with CSD in X
There is still a geometry issue after un-maximizing.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 2147d5cb33 win: Handle move & resize with CSD on X
This is for client-side decorations on Xorg.

Mouse-based move and resize of the window now work fine, but
there are still a few glitches:

1- GL resize is awful (nothing much we can do)

2- Move/resize requests trigger a focus out event,
   this in turn changes the style of the window from focussed to
   unfocussed. This is thus different from what we see in Wayland
   (no focus state change at all) and in usual X11 (focus changes,
   but the frame keeps its focussed style).

   To counteract this effect, we prevent the frame from changing
   style on focus,out if we know we are moving or resizing. But
   we don't know that if the compositor moves/resizes (eg. with
   Alt key); The focus event happens too early, before the move
   or resize events. At least in E.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 2b50d56bba win: Set proper cursor for resize borders (CSD in X)
They look horrible in E (X), why is the cursor theme not applied?
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 4722b685cf ecore_evas/x: Inform WM about borders and shadows
This exploits the existing X Atom "GTK_FRAME_EXTENTS"
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 63fcd3d831 win: Make X windows border when using CSD mode 2016-11-23 13:04:12 +09:00
Jean-Philippe Andre c91360fcbd win: Apply alpha for CSD mode, even in X 2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 79b0737b6c win: Factorize code to select frame mode
This also adds an env var for debug to force the frame on or off.
2016-11-23 13:04:12 +09:00
Jean-Philippe Andre 86e18c3f61 ecore_evas/x: Take framespace into account during resize
This is another step towards CSD support for X.
2016-11-23 13:04:12 +09:00
Stephen okra Houston 6a4ae67f63 Luncher Theme: Add parts needed for the new Luncher grid. 2016-11-22 21:20:52 -06:00
Gustavo Sverzut Barbieri e6939ebc90 ecore_ipc: refactor client data processing in its own function.
When we move to efl_net we'll reuse the same function to process
incoming data, thus refactor the code in their own function so it can
be reused.
2016-11-23 00:01:14 -02:00