Commit Graph

275 Commits

Author SHA1 Message Date
Mike Blumenkrantz 11ec0ea86b make nocomp-skipable objects not require shelf 2014-07-30 14:23:25 -04:00
Cedric BAIL 3f9af38da2 edje: remove use of deprecated functions. 2014-06-07 21:10:55 +02:00
Mike Blumenkrantz 157702c6d1 block shelf autoshow if fullscreen client is present
T1232
2014-05-07 16:04:48 -04:00
Mike Blumenkrantz 11f9dcfd72 fix null deref in e_shelf
CID 1039825
2014-04-04 15:26:11 -04:00
Mike Blumenkrantz 18120e1b5a remove invalid shelf autohide window check which would always be wrong 2014-03-27 16:47:18 -04:00
Carsten Haitzler 0313a54da4 e-object-check - this has been turned off since 2007 - back on
this is crazy. all the E_OBJECT_CHECK macros have been off since 2007.
this is just nuts. either remove them, or have them on by default, but
not off. so this turns them back on and fixes code to actually compile
again with them on, as this broke over the years. a lot of code
expects/assumes thatthese willcheck types and null ptrs, but they
don't because they are off by default.
2014-02-26 04:28:12 +09:00
Mike Blumenkrantz 9356644acc set shelves to lowest object on layer 2014-02-06 21:43:40 -05:00
Mike Blumenkrantz 8b6d217e0c set shelf data on shelf comp object
probably good practice to set object data to comp objects? this makes it easier to use with deskmirror
2014-01-14 20:23:06 -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
Mike Blumenkrantz 7435381907 only clip shelf object to zone if shelf is not a popup
T629
2013-12-13 09:09:56 -05:00
Mike Blumenkrantz caa41d0c7c force hide of new shelves when not visible 2013-12-10 15:36:28 -05:00
Mike Blumenkrantz ed7b29d50f all comp wins now have zoomaps, zooming effect lovers rejoice 2013-04-16 13:51:50 +01:00
Mike Blumenkrantz 505cec1d91 giant comp rejiggering commit #5:
* border frame/object now drawn directly on compositor canvas

* border shadows now in border theme with edje hint, non-updated themes still receive comp object shadows FOR NOW

* e_border MOVE/RESIZE pointer mode defines are now e_pointer.h enums

* added BD_CHANGED() util macro for setting bd->changed and printing a debug line to assist in finding places where this all-important flag is wrongly set

* bd->bg_win removed entirely

* bd->pointer objects moved to compositor object; now only one pointer object exists for each compositor

* resizing windows now shows a new and totally-intended scaling effect for window contents

* some additional retooling of border deletion/free callbacks

* fixed lurking potential bug where window could recieve focus from autoraise timer after border had been deleted

* more comp shape improvements/rewrites

* desk transitions are now BROKEN(ish)

* various modules updated to not be totally broken with these changes
2013-04-15 08:39:16 +01:00
Mike Blumenkrantz fca3799f44 shelf gadcon can no longer resize smaller than 16x16 2013-02-22 13:18:30 +00:00
Mike Blumenkrantz 339e4ad906 fix gadcon dnd window for shelf and gadman desktop to use comp canvas window
SVN revision: 84102
2013-02-19 10:05:16 +00:00
Mike Blumenkrantz f36ecd9d3d giant comp rejiggering commit #2: popups are now objects drawn directly onto the compositor canvas with no xwindows of their own
* added a number of new e_comp functions and macros

* options for disabling effects on objects: this option does not currently have any effect

* all modules which used gadcon popups have been adjusted

* all modules which used input windows to detect close events for gadcon popups have been adjusted to use new popup autoclose functionality

* shelves are now always drawn on the compositor canvas, meaning objects will never get clipped by the shelf (ticket #1810)

* shelves no longer have an event object

SVN revision: 84060
2013-02-18 13:43:47 +00:00
Mike Blumenkrantz aa6a2d173d giant comp rejiggering commit because anything smaller would have broken something:
* remove xwin for container canvas: now drawn directly on the compositor canvas

* added SHAPE_DEBUG define for bored developers

* bindings now use new e struct for mouse/wheel events

* container+zone now get mouse events from smart callbacks instead of x events

* rename comp api namespace

* change comp underlay theme to have a swallow for the wallpaper

* add names to all zone/container/comp objects to make debugging much easier

* some minor related updates to go along with this

SVN revision: 83752
2013-02-07 13:20:07 +00:00
Mike Blumenkrantz 41759238cd a much requested feature: drag-only edge bindings
ticket #281


SVN revision: 83628
2013-02-05 13:13:33 +00:00
Miculcy Brian cc6581a8f9 Shelf option 'overlapping' made clearer and disabled when window automatic movement on shelf hide isn't set.
SVN revision: 82871
2013-01-16 09:56:50 +00:00
Mike Blumenkrantz 9e8e755cdf formatting: all at once
SVN revision: 82625
2013-01-11 10:34:29 +00:00
Igor Murzov 678645f3ac Better gettext usage in a few places
SVN revision: 82293
2013-01-05 22:54:51 +00:00
Hannes Janetzek 303abf60de e17/shelf: fix wrong autohide with systray on second zone
SVN revision: 81557
2012-12-21 15:54:45 +00:00
Mike Blumenkrantz b393de2eaa fix shelf autohide on click
ticket #2051


SVN revision: 81362
2012-12-19 13:59:36 +00:00
Mike Blumenkrantz 44c599480b changing shelf style no longer repopulates the gadcon
SVN revision: 81329
2012-12-19 09:16:09 +00:00
Mike Blumenkrantz 504c88e033 fix shelf autohiding for when people slowly, over the course of an hour or longer, move their mouses a single pixel distance out of the shelf onto a gtk app
ticket #1884


SVN revision: 81327
2012-12-19 08:55:51 +00:00
Mike Blumenkrantz 8077e1aafb always unpopulate shelf before changing orientation so systray doesn't ibtch
SVN revision: 80768
2012-12-12 14:56:17 +00:00
Mike Blumenkrantz 86aa333211 disable currently-set orientation for shelf on orientation change menu
SVN revision: 80766
2012-12-12 14:44:10 +00:00
Mike Blumenkrantz b341cd4689 unbreak mouse move events when autohiding shelves are present
ticket #1961
ticket #zmikeisdumb


SVN revision: 80659
2012-12-11 14:20:53 +00:00
Massimo Maiurana 96fac26f2f Mark some strings for translation. (patch from Igor Murzov)
SVN revision: 80551
2012-12-09 14:39:30 +00:00
Mike Blumenkrantz f233e0d59d fix shelf autohiding when the mouse goes directly from a shelf into the window of a shitty toolkit which blocks X mouse movement events
ticket #1884


SVN revision: 80343
2012-12-06 11:03:32 +00:00
Mike Blumenkrantz 955c24344a fix shelf autohide calculations for non-zero zones
ticket #1884


SVN revision: 80334
2012-12-06 10:27:15 +00:00
Mike Blumenkrantz 503d7305db Dear all,
As I've said before, I'm attached a patch for minor bugs in the e17 again.
 Please take a look at attached patch.

 01. missing E_FREE(wev) if zone is null
     File: src/bin/e_actions.c: 1467
     Function: ACT_FN_GO_EDGE macro function
     null check of zone and wev, it would be better to separate them.

 02. dead code
     File: src/bin/e_configure.c: 338
     Function: _e_configure_efreet_desktop_update

 03. array buf might be overwritten by "buf[i] = '\0'"
     File: src/bin/e_eap_editor.c: 412
     Function: _e_desktop_edit_user_local_desktop_filename_generate

 04. missing null check
     File: src/bin/e_fm.c
     Function: e_fm2_icon_get: 2196
     It would be better to check ic->info.file in e_fm2_icon_get
     before passing to _e_fm2_file_is_edje because it doesn't check
     null pointer.

 05. array 'path' might be overwritten by "path[i + 1] = XXX"
     File: src/bin/e_fm.c: 4299
     Function: _e_fm2_uri_parse

 06. missing null check
     File: src/bin/e_fm_device.c: 468
     Function: e_fm2_device_mount_find
     If the null pointer is passed to e_fm2_device_mount_find,
     then it attempt to compare string using strncmp without null
     check.
     e.g., e_fm2_path_set
           -> real_path = _e_fm2_dev_path_map: this function could return null.
           -> sd->realpath = real_path;
           -> e_fm2_device_mount_find(sd->realpath)

 07. missing free(fstrip)
     File: src/bin/e_import_config_dialog.c: 34
     Function: _import_edj_gen

 08. missing _module_free(cfm)
     File: src/bin/e_int_config_modules.c: 530
     Function: _load_modules

 09. missing free(class) in for loop
     File: src/bin/e_int_menus.c: 1187
     Function: _e_int_menus_clients_add_by_class

 10. missing free(roots)
     File: src/bin/e_main.c: 1646
     Function: _e_main_screens_init
     Actually only e_win_init function could return 0.
     But I've added free to other codes for the consistency.

 11. missing null check of 'es->cfg'
     File: src/bin/e_shelf.c: 2583
     Function: _e_shelf_bindings_add
     'es->cfg' might be null. please look at e_shelf_position_calc.

 12. no ect->category check before comparing string values
     File: src/bin/e_theme.c: 387
     Function: e_theme_config_remove
     I'm not sure, but inner if block checks ect->category before
     deleting a string.

 13. missing E_FREE(wcb) in while loop
     File: src/bin/e_widget_ilist.c: 146
     Function: _queue_timer

 14. dereferencing freed pointer 'entry'
     File: src/modules/quickaccess/e_mod_quickaccess.c: 583
     Function: _e_qa_event_border_remove_cb

 15. missing E_FREE(trov)
     File: src/modules/tiling/e_mod_tiling.c: 3106
     Function: _do_transition_overlay

 Thanks & Regards,
 Gwanglim


SVN revision: 80231
2012-12-05 11:13:09 +00:00
Mike Blumenkrantz 6d4150fcad increase shelf show timeout after module init end
SVN revision: 79828
2012-11-29 12:15:11 +00:00
Mike Blumenkrantz 1af4e65b56 fix shelf crash when attempting to animate an autohide during screen rotation
SVN revision: 79804
2012-11-29 05:23:52 +00:00
Mike Blumenkrantz e5903f4740 add support for and use eina_list_last_data_get
SVN revision: 79144
2012-11-12 10:05:09 +00:00
Mike Blumenkrantz 1fbcc07e04 whoops forgot to ref
SVN revision: 78833
2012-11-02 08:03:35 +00:00
Mike Blumenkrantz 14e898b6a7 add shelf rename events
SVN revision: 78831
2012-11-02 07:53:37 +00:00
Mike Blumenkrantz 1f552955a7 fix shelf magic fail
SVN revision: 78601
2012-10-29 08:01:25 +00:00
Carsten Haitzler 6ce5bb59ef gaaaarh! long standing shelf bug - dont emit signal to right obvject
for orientation of shelf gadget frame! fix!



SVN revision: 78368
2012-10-23 14:20:19 +00:00
Mike Blumenkrantz 04c72fa6a1 remove zone move/resize handler for shelf, triggers crazy autohide behavior
also fixes ticket #1644


SVN revision: 78174
2012-10-18 09:14:13 +00:00
Mike Blumenkrantz 23f35193cf fix shelf crash from ticket #1635
SVN revision: 78152
2012-10-18 07:39:02 +00:00
Mike Blumenkrantz e92d150180 shelves now watch for zone move/resize events and check their locations upon any changes to ensure that they don't move off screen with the randr dialog. note that this will also cause shelves to re-hide themselves when toggling autohide
SVN revision: 77875
2012-10-11 12:49:13 +00:00
Mike Blumenkrantz 04cc83c4e5 add menu item to enable shelf autohiding
SVN revision: 77848
2012-10-11 07:56:16 +00:00
Mike Blumenkrantz 71f57bb52d gadcon location gadget_add callbacks now have a gadcon client param so the config can be retrieved since these callbacks are (currently) only used for changing locations of gadgets
also the related gcc param in gadget_del can now have a NULL config to signify that the gadget has been moved to a new gadcon

this means that moving a gadget to a new location will no longer cause it to lose its gadget config

ticket #1594


SVN revision: 77521
2012-10-05 09:57:34 +00:00
Mike Blumenkrantz 46702481d6 simplify worst case shelf visibility check
SVN revision: 77503
2012-10-05 06:44:53 +00:00
Mike Blumenkrantz 832be52b04 check for shelf visibility on init before showing
ticket #1595


SVN revision: 77502
2012-10-05 06:43:44 +00:00
Mike Blumenkrantz b0df4fc70f move shelf visible detection code from e_desk to e_shelf
SVN revision: 77416
2012-10-04 09:53:52 +00:00
Sebastian Dransfeld 436323bf59 e: cleanup layer handling
It seems people put random numbers as layers, so it is better to define
available layer numbers.

This patch also puts popups below fullscreen windows, as it sucks to get
popups during presentations. A better solution is maybe to put popups
above fullscreen, but have a presentation mode to put fullscreen windows
above popups?

SVN revision: 77293
2012-10-02 08:54:35 +00:00
Mike Blumenkrantz eace74147d add timers to shelves which still haven't shown at module_init_end to show after 1s
SVN revision: 76953
2012-09-21 09:39:26 +00:00
Mike Blumenkrantz da42dfa979 add shelf menu option to refresh shelf contents
SVN revision: 76936
2012-09-21 07:45:39 +00:00