Commit Graph

69 Commits

Author SHA1 Message Date
Carsten Haitzler cdad184547 notification module - handle misnamed desktop files e.g. firefox 2022-06-18 09:35:51 +01:00
Carsten Haitzler b23eedae98 notifications - extend to support actions, links and img tags
we didn't support enough of noktifications to make everyone happy -
this is why ffox, chrome etc. did their own notification windows and
didn't use e's notifications. we now advertise doing everything. we
say w edo sound though don't.... will add that later, but this now
means we really do a lot more and thus pushes these other
notifications into e's notifications so we're much better now and this
annoyance i have noticed is now gone.

@feat
2022-06-18 00:46:12 +01:00
Carsten Haitzler d869db87ce popup - simplify buffer alloc for popup body and silence warning
@fix
2022-05-18 12:58:23 +01:00
Carsten Haitzler bffe5a426c notification - get rid of useless appendix code...
themes have supported notification for as logn as e17 was released
so remove useless "appendix" of code that handles if it isnt.
2022-02-20 11:53:15 +00:00
Carsten Haitzler dcc02e3bd2 notification - fix shadow around extra notifications when all shown
if you show notifications on all screens the extra ones not on the
current screen get a shadow - this is wrong. this fixes that

@fix
2022-01-19 11:52:36 +00:00
Carsten Haitzler 048a40414f remove offline+presentation mode - this has confused people
i've seen various people get confused as to why their screen won't
blank and never heard of anyone using offline mode. i think this can
retire and just disabkling blanking manually or as presentation/media
tools do these days... they ask to suspend screensaver anyway. yes it
also affects notifications - but that is a good question - if you want
these or not? may as well simplify.
2020-10-05 09:20:05 +01:00
Elyes HAOUAS 4d51984286 tree-wide: get rid of trailing whitespace (part 11)
Remove trailing whitespaces

Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D11831
2020-05-14 14:17:17 +02:00
Mike Blumenkrantz c31cb51499 replace <br> with <ps/> for all text 2017-08-21 10:16:35 -04:00
Derek Foreman 73aecd73ab Replace all timer_add with timer_loop_add
So yeah, I've literally used sed to replace every occurrence of
ecore_time_add() with ecore_timer_loop_add() because I'm reasonably
confident that no part of E has a legitimate need for timer based on the
exact current time.

It would be really nice if I'm not wrong. :)

The reason for this is the incredible spew of clock_gettime() calls I'm
seeing on an ARM system (that should have a vdso for gettime, but...)
This can amount to thousands of system calls per second.

 #YOLO
2017-02-03 15:52:28 -06:00
Carsten Haitzler 3779086a63 e icon - use new skip header async preload to make icon loads async
now they can be trule async hopefully stopping things like application
menu from stalling while loading icons header... which is really nasty
with svg's. this actually makes icons async by default which is really
EXACTLY what you want. this also prepares for later making edje loads
async.

@feature
2017-01-02 09:51:57 +09:00
Carsten Haitzler 59e2eb40f8 warnings - silence some theoreitcal wranings in build
a bunch of "potentially uninitialized variable" warnings fixed.
2016-05-15 23:14:15 +09:00
Mike Blumenkrantz 1f417792d6 reshuffle notifications on replace 2016-03-30 16:20:49 -04:00
Mike Blumenkrantz 7ae25149c7 move notification text escaping into dbus notify method callback
this ensures that notification text reaching the module can be considered
"usable" without forcing multiple escape passes onto the same notification

fix T2757
2016-03-30 16:09:25 -04:00
Mike Blumenkrantz 7a15b12d44 reshuffle all notifications on a notification merge
improves layout when a notification's size changes due to merged text
being larger than original text
2015-12-07 18:02:21 -05:00
Mike Blumenkrantz 06948d1a26 remove object event callback on notification popdown
==24509== Invalid write of size 8
==24509==    at 0x2C5ED500: _notification_popup_del_cb (e_mod_popup.c:404)
==24509==    by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92)
==24509==    by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715)
==24509==    by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264)
==24509==    by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x6091146: edje_match_callback_exec_check_finals (edje_match.c:556)
==24509==    by 0x6091146: edje_match_callback_exec (edje_match.c:711)
==24509==    by 0x60974AE: _edje_emit_cb (edje_program.c:1453)
==24509==    by 0x60974AE: _edje_emit_handle (edje_program.c:1405)
==24509==    by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787)
==24509==    by 0x60926A6: _edje_job (edje_message_queue.c:154)
==24509==    by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121)
==24509==    by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390)
==24509==    by 0xCC4B204: _ecore_event_call (ecore_events.c:565)
==24509==    by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927)
==24509==    by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983)
==24509==    by 0x4383F4: main (e_main.c:1047)
==24509==  Address 0x23b3dcb0 is 16 bytes inside a block of size 80 free'd
==24509==    at 0x4C2A65B: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==24509==    by 0x2C5ED606: _notification_popdown (e_mod_popup.c:747)
==24509==    by 0x2C5ED952: _notification_reshuffle_cb (e_mod_popup.c:700)
==24509==    by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92)
==24509==    by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715)
==24509==    by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264)
==24509==    by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x504CEF: _e_zoomap_smart_del (e_zoomap.c:266)
==24509==    by 0x91F5ABC: evas_object_smart_del (evas_object_smart.c:1019)
==24509==    by 0x91E9107: _evas_object_eo_base_destructor (evas_object_main.c:739)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x458C7A: _e_comp_object_util_del (e_comp_object.c:2402)
==24509==    by 0x91AAE93: _eo_evas_object_cb (evas_callbacks.c:92)
==24509==    by 0xE54DDEA: _eo_base_event_callback_call (eo_base_class.c:715)
==24509==    by 0xE54B67A: eo_event_callback_call (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x91AB323: evas_object_event_callback_call (evas_callbacks.c:264)
==24509==    by 0x91E8DE3: _evas_object_eo_base_destructor (evas_object_main.c:691)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0x60A3019: _edje_object_eo_base_destructor (edje_smart.c:43)
==24509==    by 0xE54A8A3: eo_destructor (in /usr/lib/libeo.so.1.15.99)
==24509==    by 0xE5443EC: _eo_del_internal (eo_private.h:221)
==24509==    by 0xE5443EC: _eo_unref (eo_private.h:295)
==24509==    by 0xE5443EC: _eo_do_end (eo.c:546)
==24509==    by 0x6091146: edje_match_callback_exec_check_finals (edje_match.c:556)
==24509==    by 0x6091146: edje_match_callback_exec (edje_match.c:711)
==24509==    by 0x60974AE: _edje_emit_cb (edje_program.c:1453)
==24509==    by 0x60974AE: _edje_emit_handle (edje_program.c:1405)
==24509==    by 0x60924EE: _edje_message_queue_process (edje_message_queue.c:787)
==24509==    by 0x60926A6: _edje_job (edje_message_queue.c:154)
==24509==    by 0xCC5087A: _ecore_job_event_handler (ecore_job.c:121)
==24509==    by 0xCC4B204: _ecore_call_handler_cb (ecore_private.h:390)
==24509==    by 0xCC4B204: _ecore_event_call (ecore_events.c:565)
==24509==    by 0xCC52AE7: _ecore_main_loop_iterate_internal (ecore_main.c:1927)
==24509==    by 0xCC52CD6: ecore_main_loop_begin (ecore_main.c:983)
==24509==    by 0x4383F4: main (e_main.c:1047)
2015-09-29 12:51:36 -04:00
Mike Blumenkrantz c8b47cf2cb delete notification mirror objects upon deleting original popup
fix T2722
2015-09-14 13:15:30 -04:00
Mike Blumenkrantz 1f9ec6a710 fix notification text to conform to spec and libnotify implementation
fix T2053
fix T2187
2015-04-30 14:11:06 -04:00
Mike Blumenkrantz 87bed22bf5 attempt to decode notification image uris with efreet before showing them
fix T1939
2015-04-20 17:24:48 -04:00
Mike Blumenkrantz d2d70fc013 make only critical notifications display in presentation mode
ref T2212
2015-03-30 12:21:14 -04:00
Mike Blumenkrantz 471dcb24cb __UNUSED__ -> EINA_UNUSED
this has been bugging me forever. __UNUSED__ is no longer a valid macro here.
2015-03-18 18:09:09 -04:00
Mike Blumenkrantz 72fccba018 remove E_Comp usage from notification popups 2015-03-18 17:35:18 -04:00
Mike Blumenkrantz 09ec213a31 remove e_util_zone_current_get() usage 2015-03-13 17:58:45 -04:00
Mike Blumenkrantz d00127c2f5 e_comp functions no longer require E_Comp param 2015-03-13 16:48:41 -04:00
Mike Blumenkrantz b63e490a33 remove e_util_comp_current_get() usage 2015-03-13 16:28:08 -04:00
Mike Blumenkrantz f130aeafce remove e_comp_evas_find() usage 2015-03-13 16:23:37 -04:00
Mike Blumenkrantz ed897a231e de-e_comp_get()ify e
mrw I remember how to regex http://i.giphy.com/dC9dujPVeAfIY.gif
2015-03-13 15:12:20 -04:00
Mike Blumenkrantz b0613520a2 pre-escape all notification body texts before display or merge
this fixes notification merging again

ref T2053
2015-02-25 20:06:45 -05:00
Mike Blumenkrantz 3e517158a2 escape notification popup text...always
fix T2053
2015-02-18 16:52:54 -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 5f1a0b4dcd add back notification merging
this was removed without warning or explanation in r82118:

    e: Change notification module to use internal notification API
    Patch by: José Roberto de Souza  <zehortigoza@profusion.mobi>

currently broken by T1954 for lines longer than 36 characters
2014-12-28 17:34:28 -05:00
Mike Blumenkrantz cf98de6f28 force shape queue on notification delete
fix T1801
2014-11-25 15:26:01 -05:00
Boris Faure 11f8c10367 notification: don't segv if no zone found to place the popup
@fix
2014-10-12 10:23:31 +02:00
Chris Michael 095d34bc90 modules/notification: e_comp_object_util_zone_get Can return NULL so
we should check the return before trying to use it. Should fix Phab
T1618

Signed-off-by: Chris Michael <cp.michael@samsung.com>
2014-09-05 12:20:54 -04:00
Mike Blumenkrantz 290e2369d3 s/sumary/summary/g 2014-07-30 19:18:24 -04:00
Mike Blumenkrantz b0cd7dbea5 make notifications fade appropriately
fix T1362
2014-06-25 16:05:26 -04:00
Mike Blumenkrantz 2047075b66 remove notification theme fallback
this will never fail since the default theme provides it
2014-06-25 16:05:26 -04:00
Cedric BAIL 3f9af38da2 edje: remove use of deprecated functions. 2014-06-07 21:10:55 +02:00
Mike Blumenkrantz ed50455cde bugfix: check notification icon size correctly
CID 1039875
2014-04-04 15:04:28 -04: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 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 046aecdf06 fix invalid read of notification popup after delete 2013-05-03 13:39:38 +01:00
Mike Blumenkrantz 53d8c89791 unbreak notification callbacks, fix notification crashes
this should not have been committed as-is, and I'm very disappointed at the lack of testing here.
2013-04-25 09:12:43 +01:00
Mike Blumenkrantz 711f91f1f6 add name to notification content objects+mirrors 2013-04-19 09:41:21 +01:00
Mike Blumenkrantz 6371da9a61 add new modes for notification display when using multiple monitors, shows a TODO bug for comp zoomap mirrors 2013-04-18 15:50:49 +01: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
José Roberto de Souza 84550effc5 e: Add client api to notifications
Patch by: José Roberto de Souza  <zehortigoza@profusion.mobi>



SVN revision: 82119
2013-01-03 22:08:10 +00:00
José Roberto de Souza 80a3d9fb7a e: Change notification module to use internal notification API
Patch by: José Roberto de Souza  <zehortigoza@profusion.mobi>



SVN revision: 82118
2013-01-03 22:08:05 +00:00
Mike Blumenkrantz 38987b7872 set name for notification popups
SVN revision: 81217
2012-12-18 08:14:43 +00:00
Carsten Haitzler 0598a7a710 merge notification with AUTHORS and remove duplicatre files. icon also
now trimmed. also use propr module namespacing for theme.



SVN revision: 79706
2012-11-26 12:37:34 +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