From 02379472ae1b4c15b2704505e1056da458719c28 Mon Sep 17 00:00:00 2001 From: cpk Date: Fri, 2 Nov 2001 17:07:52 +0000 Subject: [PATCH] Alright, I spent some time now reading e17's code. Here's what I've changed, this is big, so read this carefully :) * I've added debugging macros for messages and function call tracing. Usage: D("Creating item %i %i %i\n", x, y, z); Define DEBUG to use the D macro. D_ENTER; D_RETURN; D_RETURN_(x); These are for call tracing. Use D_RETURN_(x) when returning something from a function. Define DEBUG_NEST to use this. * added iconbar header file to Makefile.am * added proper new()/cleanup() calls for E_Delayed_Action; * I've completely rewritten the object and observer handling. Bye bye macros, this was nasty. It'll be hard enough to avoid leaks with usecounting in C. We now basically have the same system as gtk. There's a clear separation of observer and object code now. An E_Object by itself has nothing to do with observing or being observed, therefore, there are now E_Observers and E_Observees that are derived from E_Object. IMPORTANT: The cleanup system now reflects the reference count system, therefore, all ..._free() calls are now static, because the destructor should never be called explicitly, but implicitly through e_object_unref(). The object handling now is as follows: - The cleanup functions clean up everything that is contained in a struct, but NOT the struct itself. Instead of the final free() call, they call the destructor of the base class. The calls will walk up the hierarchy and clean up what's contained in every struct, and the final e_object_cleanup() will free the structure itself. E_Delayed_Action is a good example. - The only calls that influence the reference count are e_object_ref() and e_object_unref(). If you need to do things before an object gets destroyed, you can query the use count using e_object_get_usecount() and check if it's equal to 1. So this: OBJ_UNREF(b); OBJ_IF_FREE(b) { ecore_window_reparent(e->win, 0, 0, 0); e_icccm_release(e->win); OBJ_FREE(b); } now is this: if (e_object_get_usecount(E_OBJECT(b)) == 1) { ecore_window_reparent(e->win, 0, 0, 0); e_icccm_release(e->win); } e_object_unref(E_OBJECT(b)); object.h and observer.h are completely commented, it shouldn't be too hard to understand. This'll need to be documented in the manual anyway. * E_Objects are now used in lots of places where void* were used as pointers to objects before, especially in the actions code. This is obviously better, as it will generate compiler warnings when people want to pass things to functions that expect E_Objects. This could probably be more restrictive. * Added typedefs for the function prototypes in E_Action_Impl. Those fat signatures were just painful to read in the function declarations/implementations. * I've also tried to give parameters more useful names. Calling an object "o" is a lot of fun when you want to grep for it. * Included is also Graham's latest menu.c patch. Sorry for the delay, Graham. * I've added checks to the menu code that make sure that menus don't pop up when they're empty (which resulted in a little useless rectangle). I guess that's it for now. Sorry if I broke anything, but this was necessary imho. SVN revision: 5605 --- config.h.in | 250 +++++++---- data/scripts/build_iconbar_db.sh | 2 +- doc/manual.raw | 3 + po/ChangeLog | 12 + po/Makefile.in.in | 192 +++----- src/Makefile.am | 14 +- src/actions.c | 740 ++++++++++++++++++++----------- src/actions.h | 70 +-- src/background.c | 52 ++- src/background.h | 10 +- src/border.c | 547 ++++++++++++++++------- src/border.h | 7 +- src/config.c | 52 ++- src/cursors.c | 33 +- src/debug.c | 86 ++++ src/debug.h | 64 +++ src/delayed.c | 64 ++- src/delayed.h | 29 +- src/desktops.c | 106 ++++- src/desktops.h | 3 +- src/e.h | 91 ---- src/e_ferite.c | 23 +- src/embed.c | 101 ++++- src/entry.c | 183 +++++++- src/exec.c | 30 +- src/fs.c | 47 +- src/guides.c | 69 ++- src/icccm.c | 133 +++++- src/iconbar.c | 216 ++++++--- src/iconbar.h | 6 +- src/keys.c | 21 + src/main.c | 13 + src/match.c | 5 + src/menu.c | 460 ++++++++++++++++--- src/menu.h | 6 +- src/menubuild.c | 87 +++- src/menubuild.h | 4 +- src/object.c | 79 ++++ src/object.h | 78 ++++ src/observer.c | 146 ++++++ src/observer.h | 107 +++++ src/place.c | 78 +++- src/place.h | 21 +- src/resist.c | 10 +- src/scrollbar.c | 144 +++++- src/text.c | 90 +++- src/util.c | 107 +++-- src/view.c | 483 ++++++++++++++++---- src/view.h | 7 +- 49 files changed, 3968 insertions(+), 1213 deletions(-) create mode 100644 src/debug.c create mode 100644 src/debug.h create mode 100644 src/object.c create mode 100644 src/object.h create mode 100644 src/observer.c create mode 100644 src/observer.h diff --git a/config.h.in b/config.h.in index aa79be36e..de4217ab6 100644 --- a/config.h.in +++ b/config.h.in @@ -1,48 +1,4 @@ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. - This function is required for alloca.c support on those systems. */ -#undef CRAY_STACKSEG_END - -/* Define if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define if you need to in order for stat and other things to work. */ -#undef _POSIX_SOURCE - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* If using the C implementation of alloca, define if you know the - direction of stack growth for your system; otherwise it will be - automatically deduced at run-time. - STACK_DIRECTION > 0 => grows toward higher addresses - STACK_DIRECTION < 0 => grows toward lower addresses - STACK_DIRECTION = 0 => direction of growth unknown - */ -#undef STACK_DIRECTION - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - +/* config.h.in. Generated automatically from configure.ac by autoheader. */ #undef ENLIGHTENMENT_VERSION #undef ENLIGHTENMENT_MAJOR #undef ENLIGHTENMENT_MINOR @@ -60,81 +16,191 @@ #undef PACKAGE_LIB_DIR #undef USE_FERITE -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT +/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP + systems. This function is required for `alloca.c' support on those systems. + */ +#undef CRAY_STACKSEG_END -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT +/* Define if using `alloca.c'. */ +#undef C_ALLOCA -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY +/* Define to 1 if translation of program messages to the user's native + language is requested. */ +#undef ENABLE_NLS -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT +/* Define if you have `alloca', as a function or macro. */ +#undef HAVE_ALLOCA -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD +/* Define if you have and it should be used (not on Ultrix). */ +#undef HAVE_ALLOCA_H -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the strchr function. */ -#undef HAVE_STRCHR - -/* Define if you have the strdup function. */ -#undef HAVE_STRDUP - -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_ARGZ_H -/* Define if you have the header file. */ +/* Define if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the `feof_unlocked' function. */ +#undef HAVE_FEOF_UNLOCKED + +/* Define if you have the `fgets_unlocked' function. */ +#undef HAVE_FGETS_UNLOCKED + +/* Define if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define if you have the `getegid' function. */ +#undef HAVE_GETEGID + +/* Define if you have the `geteuid' function. */ +#undef HAVE_GETEUID + +/* Define if you have the `getgid' function. */ +#undef HAVE_GETGID + +/* Define if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define if you have the `getuid' function. */ +#undef HAVE_GETUID + +/* Define if you have the iconv() function. */ +#undef HAVE_ICONV + +/* Define if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if you have and nl_langinfo(CODESET). */ +#undef HAVE_LANGINFO_CODESET + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define if you have the header file. */ #undef HAVE_LIMITS_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_LOCALE_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ #undef HAVE_MALLOC_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have the `mempcpy' function. */ +#undef HAVE_MEMPCPY + +/* Define if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define if you have the `munmap' function. */ +#undef HAVE_MUNMAP + +/* Define if you have the header file. */ #undef HAVE_NL_TYPES_H -/* Define if you have the header file. */ +/* Define if you have the `putenv' function. */ +#undef HAVE_PUTENV + +/* Define if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define if you have the `setlocale' function. */ +#undef HAVE_SETLOCALE + +/* Define if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define if you have the `stpcpy' function. */ +#undef HAVE_STPCPY + +/* Define if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ #undef HAVE_STRING_H -/* Define if you have the header file. */ +/* Define if you have the `strtoul' function. */ +#undef HAVE_STRTOUL + +/* Define if you have the header file. */ #undef HAVE_SYS_PARAM_H -/* Define if you have the header file. */ +/* Define if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define if you have the `tsearch' function. */ +#undef HAVE_TSEARCH + +/* Define if you have the header file. */ #undef HAVE_UNISTD_H -/* Define if you have the i library (-li). */ -#undef HAVE_LIBI +/* Define if you have the `__argz_count' function. */ +#undef HAVE___ARGZ_COUNT + +/* Define if you have the `__argz_next' function. */ +#undef HAVE___ARGZ_NEXT + +/* Define if you have the `__argz_stringify' function. */ +#undef HAVE___ARGZ_STRINGIFY + +/* Define as const if the declaration of iconv() needs const. */ +#undef ICONV_CONST /* Name of package */ #undef PACKAGE +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown */ +#undef STACK_DIRECTION + +/* Define if you have the ANSI C header files. */ +#undef STDC_HEADERS + /* Version number of package */ #undef VERSION /* Define if using the dmalloc debugging malloc package */ #undef WITH_DMALLOC +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define as `__inline' if that's what the C compiler calls it, or to nothing + if it is not supported. */ +#undef inline + +/* Define to `long' if does not define. */ +#undef off_t + +/* Define to `unsigned' if does not define. */ +#undef size_t diff --git a/data/scripts/build_iconbar_db.sh b/data/scripts/build_iconbar_db.sh index 1ad009a6b..663e271f8 100755 --- a/data/scripts/build_iconbar_db.sh +++ b/data/scripts/build_iconbar_db.sh @@ -5,7 +5,7 @@ BIT=$1"/.e_iconbar.bits.db" setup () { - PREFIX="/usr/local" + PREFIX="/usr/local/e17" SYSIC="/usr/share/pixmaps" USRIC=$HOME"/stuff/icons" NUM=0 diff --git a/doc/manual.raw b/doc/manual.raw index cc90e95a3..c6dd0fff8 100644 --- a/doc/manual.raw +++ b/doc/manual.raw @@ -133,6 +133,9 @@ !Isrc/iconbar.c !Isrc/menu.h !Isrc/menu.c +!Isrc/object.h +!Isrc/observer.h +!Isrc/place.h !Isrc/view.h diff --git a/po/ChangeLog b/po/ChangeLog index f394d3ab9..69891f6c0 100644 --- a/po/ChangeLog +++ b/po/ChangeLog @@ -1,3 +1,15 @@ +2001-10-22 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.39. + +2001-10-21 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.39. + +2001-10-21 gettextize + + * Makefile.in.in: Upgrade to gettext-0.10.39. + 2001-10-13 gettextize * Makefile.in.in: Upgrade to gettext-0.10.39. diff --git a/po/Makefile.in.in b/po/Makefile.in.in index cf3aa8cb7..28726a21f 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -1,14 +1,18 @@ # Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper +# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License +# be used in projects which are not available under the GNU General Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. PACKAGE = @PACKAGE@ VERSION = @VERSION@ +# These two variables depend on the location of this directory. +subdir = po +top_builddir = .. + SHELL = /bin/sh @SET_MAKE@ @@ -18,24 +22,20 @@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ -datadir = $(prefix)/@DATADIRNAME@ +datadir = @datadir@ localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = $(prefix)/share/gettext/po -subdir = po - -DESTDIR = +gettextsrcdir = $(datadir)/gettext/po INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ +MKINSTALLDIRS = @MKINSTALLDIRS@ +mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` CC = @CC@ -GENCAT = @GENCAT@ -GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ +GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ -XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ -MSGMERGE = PATH=../src:$$PATH msgmerge +XGETTEXT = @XGETTEXT@ +MSGMERGE = msgmerge DEFS = @DEFS@ CFLAGS = @CFLAGS@ @@ -45,20 +45,17 @@ INCLUDES = -I.. -I$(top_srcdir)/intl COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) -SOURCES = cat-id-tbl.c POFILES = @POFILES@ GMOFILES = @GMOFILES@ DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) +$(POFILES) $(GMOFILES) POTFILES = \ CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -INSTOBJEXT = @INSTOBJEXT@ .SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat +.SUFFIXES: .c .o .po .pox .gmo .mo .c.o: $(COMPILE) $< @@ -72,19 +69,19 @@ INSTOBJEXT = @INSTOBJEXT@ .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) -o $$file $< - -.po.cat: - sed -f ../intl/po2msg.sed < $< > $*.msg \ - && rm -f $@ && $(GENCAT) $@ $*.msg + && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< all: all-@USE_NLS@ -all-yes: cat-id-tbl.c $(CATALOGS) +all-yes: $(CATALOGS) all-no: -$(srcdir)/$(PACKAGE).pot: $(POTFILES) +# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', +# otherwise packages like GCC can not be built if only parts of the source +# have been downloaded. + +$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ --add-comments --keyword=_ --keyword=N_ \ --files-from=$(srcdir)/POTFILES.in \ @@ -92,78 +89,35 @@ $(srcdir)/$(PACKAGE).pot: $(POTFILES) || ( rm -f $(srcdir)/$(PACKAGE).pot \ && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) -$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: -$(srcdir)/stamp-cat-id: $(PACKAGE).pot - rm -f cat-id-tbl.tmp - sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ - | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp - if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ - rm cat-id-tbl.tmp; \ - else \ - echo cat-id-tbl.c changed; \ - rm -f $(srcdir)/cat-id-tbl.c; \ - mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ - fi - cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id - install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ -install-data-no: all -install-data-yes: all - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \ - else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \ - fi - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - case "$$cat" in \ - *.gmo) destdir=$(DESTDIR)$(gnulocaledir);; \ - *) destdir=$(DESTDIR)$(localedir);; \ - esac; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - dir=$$destdir/$$lang/LC_MESSAGES; \ - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $$dir; \ - else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \ - fi; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - fi; \ - if test -r $$cat.m; then \ - $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - if test -r $(srcdir)/$$cat.m ; then \ - $(INSTALL_DATA) $(srcdir)/$$cat.m \ - $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - true; \ - fi; \ - fi; \ - done if test "$(PACKAGE)" = "gettext"; then \ - if test -r "$(MKINSTALLDIRS)"; then \ - $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \ - else \ - $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \ - fi; \ + $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ else \ : ; \ fi +install-data-no: all +install-data-yes: all + $(mkinstalldirs) $(DESTDIR)$(datadir) + @catalogs='$(CATALOGS)'; \ + for cat in $$catalogs; do \ + cat=`basename $$cat`; \ + lang=`echo $$cat | sed 's/\.gmo$$//'`; \ + dir=$(localedir)/$$lang/LC_MESSAGES; \ + $(mkinstalldirs) $(DESTDIR)$$dir; \ + if test -r $$cat; then \ + $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ + echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ + else \ + $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ + echo "installing $(srcdir)/$$cat as" \ + "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ + fi; \ + done # Define this as empty until I found a useful application. installcheck: @@ -172,76 +126,68 @@ uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ - rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ + lang=`echo $$cat | sed 's/\.gmo$$//'`; \ + rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ done - rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in + if test "$(PACKAGE)" = "gettext"; then \ + rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ + else \ + : ; \ + fi check: all -cat-id-tbl.o: ../intl/libgettext.h - dvi info tags TAGS ID: mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp + rm -f core core.* *.pox $(PACKAGE).po *.new.po rm -fr *.o clean: mostlyclean distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m + rm -f Makefile Makefile.in POTFILES *.mo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f $(GMOFILES) -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: update-po $(DISTFILES) +distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) +dist distdir: + $(MAKE) update-po + @$(MAKE) dist2 +# This is a separate target because 'update-po' must be executed before. +dist2: $(DISTFILES) dists="$(DISTFILES)"; \ for file in $$dists; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ + if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ + cp -p $$dir/$$file $(distdir); \ done update-po: Makefile $(MAKE) $(PACKAGE).pot - PATH=`pwd`/../src:$$PATH; \ + if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ cd $(srcdir); \ - catalogs='$(CATALOGS)'; \ + catalogs='$(GMOFILES)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - mv $$lang.po $$lang.old.po; \ + lang=`echo $$cat | sed 's/\.gmo$$//'`; \ echo "$$lang:"; \ - if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ - rm -f $$lang.old.po; \ + if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ + mv -f $$lang.new.po $$lang.po; \ else \ echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.po; \ - mv $$lang.old.po $$lang.po; \ + rm -f $$lang.new.po; \ fi; \ done + $(MAKE) update-gmo -POTFILES: POTFILES.in - ( if test 'x$(srcdir)' != 'x.'; then \ - posrcprefix='$(top_srcdir)/'; \ - else \ - posrcprefix="../"; \ - fi; \ - rm -f $@-t $@ \ - && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ - -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ - | sed -e '$$s/\\$$//') > $@-t \ - && chmod a-w $@-t \ - && mv $@-t $@ ) +update-gmo: Makefile $(GMOFILES) + @: -Makefile: Makefile.in.in ../config.status POTFILES - cd .. \ +Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in + cd $(top_builddir) \ && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ $(SHELL) ./config.status diff --git a/src/Makefile.am b/src/Makefile.am index 408ab11db..dd35496e7 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -2,9 +2,14 @@ DISTCLEANFILES = e_ferite_gen_* +## Enable -DDEBUG for debugging messages, -DDEBUG_NEST +## for call tracing. Caution -- this will produce a *lot* +## of output! +DEBUGFLAGS = -g -DDEBUG -DDEBUG_NEST + INCLUDES = \ -I$(top_srcdir)/intl \ - @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ @ferite_cflags@ + @evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ @ferite_cflags@ $(DEBUGFLAGS) bin_PROGRAMS = enlightenment @@ -24,6 +29,7 @@ enlightenment_SOURCES = \ border.h border.c \ config.h config.c \ cursors.c cursors.h \ + debug.c debug.h \ delayed.h delayed.c \ desktops.h desktops.c \ embed.c embed.h \ @@ -33,6 +39,7 @@ enlightenment_SOURCES = \ $(ferite_c) \ guides.h guides.c \ icccm.h icccm.c \ + iconbar.h iconbar.c\ icons.c \ ipc.h ipc.c \ keys.h keys.c \ @@ -40,6 +47,8 @@ enlightenment_SOURCES = \ match.c match.h \ menu.h menu.c \ menubuild.h menubuild.c \ + object.h object.c \ + observer.h observer.c\ pack.c \ place.c place.h \ resist.h resist.c \ @@ -48,7 +57,6 @@ enlightenment_SOURCES = \ text.h text.c \ util.h util.c \ view.h view.c \ - e.h \ - iconbar.c + e.h enlightenment_LDADD = @evas_libs@ @edb_libs@ @ebits_libs@ @ecore_libs@ @efsd_libs@ @ferite_libs@ -lm -lc $(INTLLIBS) diff --git a/src/actions.c b/src/actions.c index 732d86e2e..f92a825fb 100644 --- a/src/actions.c +++ b/src/actions.c @@ -1,5 +1,6 @@ #include "actions.h" #include "config.h" +#include "debug.h" #include "border.h" #include "desktops.h" #include "exec.h" @@ -13,62 +14,103 @@ static Evas_List action_impls = NULL; static Evas_List current_actions = NULL; static Evas_List current_timers = NULL; -static void e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Event_Key_Modifiers mods, void *o); -static void e_action_free(E_Action *a); +static void e_action_find(char *action, E_Action_Type act, int button, char *key, + Ecore_Event_Key_Modifiers mods, E_Object *object); +static void e_action_cleanup(E_Action *a); -static void e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_move_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_move_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy); +static void e_act_move_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy); +static void e_act_move_stop (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_h_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy); +static void e_act_move_cont (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry, int dx, int dy); -static void e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_v_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_resize_v_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy); +static void e_act_resize_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_close_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_stop (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_kill_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_cont (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry, int dx, int dy); -static void e_act_shade_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_h_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_raise_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_h_stop (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_h_cont (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry, int dx, int dy); -static void e_act_raise_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_v_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_exec_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_v_stop (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_menu_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_resize_v_cont (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry, int dx, int dy); -static void e_act_exit_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_close_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_restart_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_kill_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_stick_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_shade_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_sound_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_raise_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_iconify_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_lower_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_max_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_raise_lower_start (E_Object *object, E_Action *a, + void *data, int x, int y, int rx, int ry); -static void e_act_snap_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_exec_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_zoom_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_menu_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); -static void e_act_desk_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); -static void e_act_raise_next_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); +static void e_act_exit_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_restart_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_stick_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_sound_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_iconify_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_max_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_snap_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_zoom_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_desk_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); + +static void e_act_raise_next_start (E_Object *object, E_Action *a, void *data, + int x, int y, int rx, int ry); static void -e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Event_Key_Modifiers mods, void *o) +e_action_find(char *action, E_Action_Type act, int button, + char *key, Ecore_Event_Key_Modifiers mods, E_Object *object) { char *actions_db; E_DB_File *db; @@ -85,21 +127,30 @@ e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Even static Evas_List actions = NULL; E_CFG_FILE(cfg_actions, "actions"); + D_ENTER; + E_CONFIG_CHECK_VALIDITY(cfg_actions, "actions"); + /* if we had a previous list - nuke it */ + + /* FIXME: this has potential to segfault if reference + counting is actually used and those actions are + referenced in more than one place --cK. + */ + if (actions) { for (l = actions; l; l = l->next) { a = l->data; - if (a) e_action_free(a); + if (a) e_action_cleanup(a); } actions = evas_list_free(actions); } /* now build the list again */ actions_db = e_config_get("actions"); db = e_db_open_read(actions_db); - if (!db) return; + if (!db) D_RETURN; if (!e_db_int_get(db, "/actions/count", &num)) goto error; for (i = 0; i < num; i++) { @@ -123,7 +174,7 @@ e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Even a = NEW(E_Action, 1); ZERO(a, E_Action, 1); - OBJ_INIT(a, e_action_free); + e_object_init(E_OBJECT(a), (E_Cleanup_Func) e_action_cleanup); a->name = a_name; a->action = a_action; @@ -184,7 +235,7 @@ e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Even aa = NEW(E_Action, 1); ZERO(aa, E_Action, 1); - OBJ_INIT(aa, e_action_free); + e_object_init(E_OBJECT(aa), (E_Cleanup_Func) e_action_cleanup); e_strdup(aa->name, a->name); e_strdup(aa->action, a->action); @@ -194,18 +245,22 @@ e_action_find(char *action, E_Action_Type act, int button, char *key, Ecore_Even e_strdup(aa->key, a->key); aa->modifiers = a->modifiers; aa->action_impl = ap; - aa->object = o; + aa->object = object; aa->started = 0; current_actions = evas_list_append(current_actions, aa); } } next: } + + D_RETURN; } static void -e_action_free(E_Action *a) +e_action_cleanup(E_Action *a) { + D_ENTER; + /* it's a key? lets ungrab it! */ if ((a->key) && (strlen(a->key) > 0) && (a->grabbed)) { @@ -214,20 +269,28 @@ e_action_free(E_Action *a) else e_keys_ungrab(a->key, (Ecore_Event_Key_Modifiers)a->modifiers, 0); } + IF_FREE(a->name); IF_FREE(a->action); IF_FREE(a->params); IF_FREE(a->key); - FREE(a); + + e_object_cleanup(E_OBJECT(a)); + + D_RETURN; } int -e_action_start(char *action, E_Action_Type act, int button, char *key, Ecore_Event_Key_Modifiers mods, void *o, void *data, int x, int y, int rx, int ry) +e_action_start(char *action, E_Action_Type act, int button, + char *key, Ecore_Event_Key_Modifiers mods, + E_Object *object, void *data, int x, int y, int rx, int ry) { Evas_List l; int started_long_action = 0; - e_action_find(action, act, button, key, mods, o); + D_ENTER; + + e_action_find(action, act, button, key, mods, object); again: for (l = current_actions; l; l = l->next) { @@ -249,7 +312,7 @@ e_action_start(char *action, E_Action_Type act, int button, char *key, Ecore_Eve { obj = a->object; if (a->started) - OBJ_REF(obj); + e_object_ref(obj); } a->action_impl->func_start(a->object, a, data, x, y, rx, ry); } @@ -257,18 +320,23 @@ e_action_start(char *action, E_Action_Type act, int button, char *key, Ecore_Eve if (!a->started) { current_actions = evas_list_remove(current_actions, a); - OBJ_DO_FREE(a); + e_object_unref(E_OBJECT(a)); goto again; } } - return started_long_action; + + D_RETURN_(started_long_action); } void -e_action_stop(char *action, E_Action_Type act, int button, char *key, Ecore_Event_Key_Modifiers mods, void *o, void *data, int x, int y, int rx, int ry) +e_action_stop(char *action, E_Action_Type act, int button, + char *key, Ecore_Event_Key_Modifiers mods, E_Object *object, + void *data, int x, int y, int rx, int ry) { Evas_List l; + D_ENTER; + again: for (l = current_actions; l; l = l->next) { @@ -312,7 +380,7 @@ e_action_stop(char *action, E_Action_Type act, int button, char *key, Ecore_Even if (a->object) { obj = a->object; - OBJ_UNREF(obj); + e_object_unref(obj); } a->action_impl->func_stop(a->object, a, data, x, y, rx, ry); a->started = 0; @@ -321,22 +389,27 @@ e_action_stop(char *action, E_Action_Type act, int button, char *key, Ecore_Even if (!a->started) { current_actions = evas_list_remove(current_actions, a); - OBJ_DO_FREE(a); + + e_object_unref(E_OBJECT(a)); goto again; } } - return; + + D_RETURN; UN(action); UN(mods); - UN(o); + UN(object); } void -e_action_cont(char *action, E_Action_Type act, int button, char *key, Ecore_Event_Key_Modifiers mods, - void *o, void *data, int x, int y, int rx, int ry, int dx, int dy) +e_action_cont(char *action, E_Action_Type act, int button, char *key, + Ecore_Event_Key_Modifiers mods, E_Object *object, void *data, + int x, int y, int rx, int ry, int dx, int dy) { Evas_List l; + D_ENTER; + for (l = current_actions; l; l = l->next) { E_Action *a; @@ -345,44 +418,47 @@ e_action_cont(char *action, E_Action_Type act, int button, char *key, Ecore_Even if ((a->started) && (a->action_impl->func_cont)) a->action_impl->func_cont(a->object, a, data, x, y, rx, ry, dx, dy); } - return; + + D_RETURN; UN(action); UN(act); UN(button); UN(key); UN(mods); - UN(o); + UN(object); } void -e_action_stop_by_object(void *o, void *data, int x, int y, int rx, int ry) +e_action_stop_by_object(E_Object *object, void *data, int x, int y, int rx, int ry) { Evas_List l; - e_action_del_timer_object(o); + e_action_del_timer_object(object); again: for (l = current_actions; l; l = l->next) { E_Action *a; a = l->data; - if ((a->started) && (o == a->object)) + if ((a->started) && (object == a->object)) { E_Object *obj; if (a->object) { obj = a->object; - OBJ_UNREF(obj); + e_object_unref(obj); } if (a->action_impl->func_stop) a->action_impl->func_stop(a->object, a, data, x, y, rx, ry); a->started = 0; current_actions = evas_list_remove(current_actions, a); - OBJ_DO_FREE(a); + e_object_unref(E_OBJECT(a)); goto again; } } + + D_RETURN; } void @@ -390,6 +466,8 @@ e_action_stop_by_type(char *action) { Evas_List l; + D_ENTER; + for (l = current_actions; l; l = l->next) { E_Action *a; @@ -403,38 +481,57 @@ e_action_stop_by_type(char *action) if (a->object) { obj = a->object; - OBJ_UNREF(obj); + e_object_unref(obj); } a->action_impl->func_stop(a->object, a, NULL, 0, 0, 0, 0); a->started = 0; } } + + D_RETURN; +} + + +static void +e_action_impl_cleanup(E_Action_Impl *eai) +{ + D_ENTER; + + e_object_cleanup(E_OBJECT(eai)); + + D_RETURN; } void -e_action_add_proto(char *action, - void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry), - void (*func_cont) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy), - void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry)) +e_action_add_impl(char *action, E_Action_Start_Func func_start, + E_Action_Cont_Func func_cont, E_Action_Stop_Func func_stop) { E_Action_Impl *ap; + D_ENTER; + ap = NEW(E_Action_Impl, 1); - - OBJ_INIT(ap, NULL); + ZERO(ap, E_Action_Impl, 1); + + e_object_init(E_OBJECT(ap), (E_Cleanup_Func) e_action_impl_cleanup); e_strdup(ap->action, action); ap->func_start = func_start; ap->func_cont = func_cont; ap->func_stop = func_stop; action_impls = evas_list_append(action_impls, ap); + + D_RETURN; } + void -e_action_del_timer(void *o, char *name) +e_action_del_timer(E_Object *object, char *name) { Evas_List l; + + D_ENTER; again: for (l = current_timers; l; l = l->next) @@ -442,7 +539,7 @@ e_action_del_timer(void *o, char *name) E_Active_Action_Timer *at; at = l->data; - if ((at->object == o) && + if ((at->object == object) && (name) && (at->name) && (!strcmp(at->name, name))) @@ -454,31 +551,39 @@ e_action_del_timer(void *o, char *name) goto again; } } + + D_RETURN; } void -e_action_add_timer(void *o, char *name) +e_action_add_timer(E_Object *object, char *name) { E_Active_Action_Timer *at; + D_ENTER; + at = NEW(E_Active_Action_Timer, 1); - at->object = o; + at->object = object; e_strdup(at->name, name); current_timers = evas_list_append(current_timers, at); + + D_RETURN; } void -e_action_del_timer_object(void *o) +e_action_del_timer_object(E_Object *object) { Evas_List l; + D_ENTER; + again: for (l = current_timers; l; l = l->next) { E_Active_Action_Timer *at; at = l->data; - if (at->object == o) + if (at->object == object) { ecore_del_event_timer(at->name); current_timers = evas_list_remove(current_timers, at); @@ -487,33 +592,39 @@ e_action_del_timer_object(void *o) goto again; } } + + D_RETURN; } void e_action_init(void) { - e_action_add_proto("Window_Move", e_act_move_start, e_act_move_cont, e_act_move_stop); - e_action_add_proto("Window_Resize", e_act_resize_start, e_act_resize_cont, e_act_resize_stop); - e_action_add_proto("Window_Resize_Horizontal", e_act_resize_h_start, e_act_resize_h_cont, e_act_resize_h_stop); - e_action_add_proto("Window_Resize_Vertical", e_act_resize_v_start, e_act_resize_v_cont, e_act_resize_v_stop); - e_action_add_proto("Window_Close", e_act_close_start, NULL, NULL); - e_action_add_proto("Window_Kill", e_act_kill_start, NULL, NULL); - e_action_add_proto("Window_Shade", e_act_shade_start, NULL, NULL); - e_action_add_proto("Window_Raise", e_act_raise_start, NULL, NULL); - e_action_add_proto("Window_Lower", e_act_lower_start, NULL, NULL); - e_action_add_proto("Window_Raise_Lower", e_act_raise_lower_start, NULL, NULL); - e_action_add_proto("Execute", e_act_exec_start, NULL, NULL); - e_action_add_proto("Menu", e_act_menu_start, NULL, NULL); - e_action_add_proto("Exit", e_act_exit_start, NULL, NULL); - e_action_add_proto("Restart", e_act_restart_start, NULL, NULL); - e_action_add_proto("Window_Stick", e_act_stick_start, NULL, NULL); - e_action_add_proto("Sound", e_act_sound_start, NULL, NULL); - e_action_add_proto("Window_Iconify", e_act_iconify_start, NULL, NULL); - e_action_add_proto("Window_Max_Size", e_act_max_start, NULL, NULL); - e_action_add_proto("Winodw_Snap", e_act_snap_start, NULL, NULL); - e_action_add_proto("Window_Zoom", e_act_zoom_start, NULL, NULL); - e_action_add_proto("Desktop", e_act_desk_start, NULL, NULL); - e_action_add_proto("Window_Next", e_act_raise_next_start, NULL, NULL); + D_ENTER; + + e_action_add_impl("Window_Move", e_act_move_start, e_act_move_cont, e_act_move_stop); + e_action_add_impl("Window_Resize", e_act_resize_start, e_act_resize_cont, e_act_resize_stop); + e_action_add_impl("Window_Resize_Horizontal", e_act_resize_h_start, e_act_resize_h_cont, e_act_resize_h_stop); + e_action_add_impl("Window_Resize_Vertical", e_act_resize_v_start, e_act_resize_v_cont, e_act_resize_v_stop); + e_action_add_impl("Window_Close", e_act_close_start, NULL, NULL); + e_action_add_impl("Window_Kill", e_act_kill_start, NULL, NULL); + e_action_add_impl("Window_Shade", e_act_shade_start, NULL, NULL); + e_action_add_impl("Window_Raise", e_act_raise_start, NULL, NULL); + e_action_add_impl("Window_Lower", e_act_lower_start, NULL, NULL); + e_action_add_impl("Window_Raise_Lower", e_act_raise_lower_start, NULL, NULL); + e_action_add_impl("Execute", e_act_exec_start, NULL, NULL); + e_action_add_impl("Menu", e_act_menu_start, NULL, NULL); + e_action_add_impl("Exit", e_act_exit_start, NULL, NULL); + e_action_add_impl("Restart", e_act_restart_start, NULL, NULL); + e_action_add_impl("Window_Stick", e_act_stick_start, NULL, NULL); + e_action_add_impl("Sound", e_act_sound_start, NULL, NULL); + e_action_add_impl("Window_Iconify", e_act_iconify_start, NULL, NULL); + e_action_add_impl("Window_Max_Size", e_act_max_start, NULL, NULL); + e_action_add_impl("Winodw_Snap", e_act_snap_start, NULL, NULL); + e_action_add_impl("Window_Zoom", e_act_zoom_start, NULL, NULL); + e_action_add_impl("Desktop", e_act_desk_start, NULL, NULL); + e_action_add_impl("Window_Next", e_act_raise_next_start, NULL, NULL); + + D_RETURN; } @@ -533,7 +644,7 @@ e_action_init(void) /* init func */ static void -e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_move_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; E_Guides_Mode move_mode = E_GUIDES_BOX; @@ -545,14 +656,16 @@ e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5); E_CFG_INT(cfg_guides_display_location, "settings", "/guides/display/location", E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE); + D_ENTER; + E_CONFIG_INT_GET(cfg_window_move_mode, move_mode); E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x); E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y); E_CONFIG_INT_GET(cfg_guides_display_location, display_loc); - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.fixed) return; + if (!b) D_RETURN; + if (b->client.fixed) D_RETURN; if (move_mode >= E_GUIDES_BOX) b->hold_changes = 1; /* if non opaque */ b->mode.move = 1; @@ -574,7 +687,8 @@ e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry e_guides_resize(b->current.w, b->current.h); e_guides_show(); } - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -584,14 +698,16 @@ e_act_move_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry } static void -e_act_move_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_move_stop (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - - b = o; + + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.fixed) return; + if (!b) D_RETURN; + if (b->client.fixed) D_RETURN; b->hold_changes = 0; /* if non opaque */ b->current.requested.x = b->current.x; b->current.requested.y = b->current.y; @@ -607,7 +723,8 @@ e_act_move_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry e_border_adjust_limits(b); e_guides_hide(); e_desktops_add_border(b->desk, b); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -617,14 +734,16 @@ e_act_move_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry } static void -e_act_move_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) +e_act_move_cont (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) { E_Border *b; + + D_ENTER; - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.fixed) return; + if (!b) D_RETURN; + if (b->client.fixed) D_RETURN; b->current.requested.x += dx; b->current.requested.y += dy; if (dx != 0) b->current.requested.dx = dx; @@ -639,7 +758,8 @@ e_act_move_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry e_guides_resize(b->current.w, b->current.h); e_guides_display_text(buf); } - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -650,7 +770,7 @@ e_act_move_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; E_Guides_Mode resize_mode = E_GUIDES_BOX; @@ -661,17 +781,19 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5); E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5); E_CFG_INT(cfg_guides_display_location, "settings", "/guides/display/location", E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE); + + D_ENTER; E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode); E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x); E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y); E_CONFIG_INT_GET(cfg_guides_display_location, display_loc); - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (resize_mode >= E_GUIDES_BOX) b->hold_changes = 1; /* if non opaque */ ecore_window_gravity_set(b->win.client, StaticGravity); @@ -728,7 +850,8 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int e_guides_resize(b->current.w, b->current.h); e_guides_show(); } - return; + + D_RETURN; UN(a); UN(data); UN(rx); @@ -736,16 +859,18 @@ e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int } static void -e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_stop (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; b->hold_changes = 0; /* if non opaque */ b->current.requested.x = b->current.x; b->current.requested.y = b->current.y; @@ -757,7 +882,8 @@ e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ecore_window_gravity_set(b->win.client, NorthWestGravity); e_border_set_gravity(b, NorthWestGravity); e_guides_hide(); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -767,16 +893,18 @@ e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int } static void -e_act_resize_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) +e_act_resize_cont (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) { E_Border *b; + + D_ENTER; - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (b->mode.resize == 1) { b->current.requested.w -= dx; @@ -811,7 +939,8 @@ e_act_resize_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int e_guides_resize(b->current.w, b->current.h); e_guides_display_text(buf); } - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -822,7 +951,7 @@ e_act_resize_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int static void -e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_h_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; E_Guides_Mode resize_mode = E_GUIDES_BOX; @@ -833,16 +962,18 @@ e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, in E_CFG_FLOAT(cfg_guides_display_x, "settings", "/guides/display/x", 0.5); E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5); E_CFG_INT(cfg_guides_display_location, "settings", "/guides/display/location", E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE); + + D_ENTER; E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode); E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x); E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y); E_CONFIG_INT_GET(cfg_guides_display_location, display_loc); - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (resize_mode >= E_GUIDES_BOX) b->hold_changes = 1; /* if non opaque */ ecore_window_gravity_set(b->win.client, StaticGravity); @@ -877,7 +1008,8 @@ e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, in e_guides_resize(b->current.w, b->current.h); e_guides_show(); } - return; + + D_RETURN; UN(a); UN(data); UN(y); @@ -886,15 +1018,18 @@ e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, in } static void -e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_h_stop (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - - b = o; + + + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->current.shaded != 0) D_RETURN; b->hold_changes = 0; /* if non opaque */ b->current.requested.x = b->current.x; b->current.requested.y = b->current.y; @@ -906,7 +1041,8 @@ e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in ecore_window_gravity_set(b->win.client, NorthWestGravity); e_border_set_gravity(b, NorthWestGravity); e_guides_hide(); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -916,15 +1052,17 @@ e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in } static void -e_act_resize_h_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) +e_act_resize_h_cont (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.w == b->client.max.w) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.w == b->client.max.w) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (b->mode.resize == 5) { b->current.requested.w -= dx; @@ -944,7 +1082,7 @@ e_act_resize_h_cont (void *o, E_Action *a, void *data, int x, int y, int rx, in e_guides_resize(b->current.w, b->current.h); e_guides_display_text(buf); } - return; + D_RETURN; UN(a); UN(data); UN(x); @@ -956,7 +1094,7 @@ e_act_resize_h_cont (void *o, E_Action *a, void *data, int x, int y, int rx, in static void -e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_v_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; E_Guides_Mode resize_mode = E_GUIDES_BOX; @@ -968,15 +1106,17 @@ e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, in E_CFG_FLOAT(cfg_guides_display_y, "settings", "/guides/display/y", 0.5); E_CFG_INT(cfg_guides_display_location, "settings", "/guides/display/location", E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE); + D_ENTER; + E_CONFIG_INT_GET(cfg_window_resize_mode, resize_mode); E_CONFIG_FLOAT_GET(cfg_guides_display_x, align_x); E_CONFIG_FLOAT_GET(cfg_guides_display_y, align_y); E_CONFIG_INT_GET(cfg_guides_display_location, display_loc); - b = o; + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (resize_mode >= E_GUIDES_BOX) b->hold_changes = 1; /* if non opaque */ ecore_window_gravity_set(b->win.client, StaticGravity); @@ -1013,7 +1153,7 @@ e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, in e_guides_resize(b->current.w, b->current.h); e_guides_show(); } - return; + D_RETURN; UN(a); UN(data); UN(x); @@ -1022,15 +1162,17 @@ e_act_resize_v_start (void *o, E_Action *a, void *data, int x, int y, int rx, in } static void -e_act_resize_v_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_resize_v_stop (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; b->hold_changes = 0; /* if non opaque */ b->current.requested.x = b->current.x; b->current.requested.y = b->current.y; @@ -1042,7 +1184,7 @@ e_act_resize_v_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in e_border_set_gravity(b, NorthWestGravity); b->changed = 1; e_guides_hide(); - return; + D_RETURN; UN(a); UN(data); UN(x); @@ -1052,15 +1194,17 @@ e_act_resize_v_stop (void *o, E_Action *a, void *data, int x, int y, int rx, in } static void -e_act_resize_v_cont (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) +e_act_resize_v_cont (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.min.h == b->client.max.h) return; - if (b->current.shaded != 0) return; + if (!b) D_RETURN; + if (b->client.min.h == b->client.max.h) D_RETURN; + if (b->current.shaded != 0) D_RETURN; if (b->mode.resize == 7) { b->current.requested.h -= dy; @@ -1080,7 +1224,7 @@ e_act_resize_v_cont (void *o, E_Action *a, void *data, int x, int y, int rx, in e_guides_resize(b->current.w, b->current.h); e_guides_display_text(buf); } - return; + D_RETURN; UN(a); UN(data); UN(x); @@ -1092,16 +1236,20 @@ e_act_resize_v_cont (void *o, E_Action *a, void *data, int x, int y, int rx, in static void -e_act_close_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_close_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (b->win.client) e_icccm_delete(b->win.client); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1112,16 +1260,19 @@ e_act_close_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_kill_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_kill_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (b->win.client) ecore_window_kill_client(b->win.client); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1140,17 +1291,19 @@ e_act_cb_shade(int val, void *data) int si; int pix_per_sec = 3200; + D_ENTER; + b = data; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (val == 0) { - OBJ_REF(b); + e_object_ref(E_OBJECT(b)); t = ecore_get_time(); ecore_window_gravity_set(b->win.client, SouthWestGravity); - e_action_del_timer(b, "shader"); - e_action_add_timer(b, "shader"); + e_action_del_timer(E_OBJECT(b), "shader"); + e_action_add_timer(E_OBJECT(b), "shader"); } dif = ecore_get_time() - t; @@ -1165,10 +1318,12 @@ e_act_cb_shade(int val, void *data) ecore_add_event_timer("shader", 0.01, e_act_cb_shade, 1, data); else { - e_action_del_timer(b, "shader"); + e_action_del_timer(E_OBJECT(b), "shader"); ecore_window_gravity_reset(b->win.client); - OBJ_UNREF(b); + e_object_ref(E_OBJECT(b)); } + + D_RETURN; } static void e_act_cb_unshade(int val, void *data); @@ -1181,17 +1336,19 @@ e_act_cb_unshade(int val, void *data) int si; int pix_per_sec = 3200; + D_ENTER; + b = data; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (val == 0) { - OBJ_REF(b); + e_object_ref(E_OBJECT(b)); t = ecore_get_time(); ecore_window_gravity_set(b->win.client, SouthWestGravity); - e_action_del_timer(b, "shader"); - e_action_add_timer(b, "shader"); + e_action_del_timer(E_OBJECT(b), "shader"); + e_action_add_timer(E_OBJECT(b), "shader"); } dif = ecore_get_time() - t; @@ -1207,24 +1364,29 @@ e_act_cb_unshade(int val, void *data) ecore_add_event_timer("shader", 0.01, e_act_cb_unshade, 1, data); else { - e_action_del_timer(b, "shader"); + e_action_del_timer(E_OBJECT(b), "shader"); ecore_window_gravity_reset(b->win.client); - OBJ_UNREF(b); + e_object_ref(E_OBJECT(b)); } + + D_RETURN; } static void -e_act_shade_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_shade_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (b->current.shaded == 0) e_act_cb_shade(0, b); else e_act_cb_unshade(0, b); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1235,16 +1397,19 @@ e_act_shade_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_raise_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_raise_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; e_border_raise(b); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1255,16 +1420,19 @@ e_act_raise_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_lower_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; e_border_lower(b); - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1275,15 +1443,18 @@ e_act_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_raise_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_raise_lower_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; - return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1294,35 +1465,41 @@ e_act_raise_lower_start (void *o, E_Action *a, void *data, int x, int y, int rx, static void -e_act_exec_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_exec_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { char *exe; + D_ENTER; + exe = (char *) a->params; - if(!exe) return; + if(!exe) D_RETURN; /* printf("exe: %s\n",exe); */ e_exec_run(exe); - return; + + D_RETURN; UN(a); UN(data); UN(x); UN(y); UN(rx); UN(ry); - UN(o); + UN(object); } static void -e_act_menu_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_menu_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; - return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1333,10 +1510,14 @@ e_act_menu_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_exit_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_exit_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { + D_ENTER; + exit(0); - return; + + D_RETURN; + UN(object); UN(a); UN(data); UN(x); @@ -1347,10 +1528,14 @@ e_act_exit_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_restart_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_restart_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { + D_ENTER; + e_exec_restart(); - return; + + D_RETURN; + UN(object); UN(a); UN(data); UN(x); @@ -1361,18 +1546,21 @@ e_act_restart_start (void *o, E_Action *a, void *data, int x, int y, int rx, int static void -e_act_stick_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_stick_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; if (b->client.sticky) b->client.sticky = 0; else b->client.sticky = 1; b->changed = 1; - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1383,9 +1571,12 @@ e_act_stick_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_sound_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_sound_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { - return; + D_ENTER; + + D_RETURN; + UN(object); UN(a); UN(data); UN(x); @@ -1396,15 +1587,18 @@ e_act_sound_start (void *o, E_Action *a, void *data, int x, int y, int rx, int r static void -e_act_iconify_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_iconify_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; - return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; + D_RETURN; + UN(object); UN(a); UN(data); UN(x); @@ -1415,16 +1609,18 @@ e_act_iconify_start (void *o, E_Action *a, void *data, int x, int y, int rx, int static void -e_act_max_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_max_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; + D_ENTER; + + b = (E_Border*) object; if (!b) b = e_border_current_focused(); - if (!b) return; - if (b->client.is_desktop) return; - if (b->current.shaded > 0) return; - if ((b->mode.move) || (b->mode.resize)) return; + if (!b) D_RETURN; + if (b->client.is_desktop) D_RETURN; + if (b->current.shaded > 0) D_RETURN; + if ((b->mode.move) || (b->mode.resize)) D_RETURN; b->mode.move = 0; b->mode.resize = 0; if (b->max.is) @@ -1459,7 +1655,8 @@ e_act_max_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) b->current.requested.w = b->current.w; b->current.requested.h = b->current.h; } - return; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1470,14 +1667,20 @@ e_act_max_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) static void -e_act_snap_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_snap_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; - if (!b) b = e_border_current_focused(); - if (!b) return; - return; + D_ENTER; + + b = (E_Border*) object; + + if (!b) + b = e_border_current_focused(); + if (!b) + D_RETURN; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1488,14 +1691,21 @@ e_act_snap_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_zoom_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_zoom_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { E_Border *b; - b = o; - if (!b) b = e_border_current_focused(); - if (!b) return; - return; + D_ENTER; + + b = (E_Border*) object; + + if (!b) + b = e_border_current_focused(); + + if (!b) + D_RETURN; + + D_RETURN; UN(a); UN(data); UN(x); @@ -1506,14 +1716,19 @@ e_act_zoom_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_desk_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_desk_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { int desk = 0; - if (a->params) desk = atoi(a->params); + D_ENTER; + + if (a->params) + desk = atoi(a->params); + e_desktops_goto_desk(desk); - return; - UN(o); + + D_RETURN; + UN(object); UN(a); UN(data); UN(x); @@ -1524,11 +1739,14 @@ e_act_desk_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry static void -e_act_raise_next_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry) +e_act_raise_next_start (E_Object *object, E_Action *a, void *data, int x, int y, int rx, int ry) { + D_ENTER; + e_border_raise_next(); - return; - UN(o); + + D_RETURN; + UN(object); UN(a); UN(data); UN(x); diff --git a/src/actions.h b/src/actions.h index d3bf87467..f8ee9671c 100644 --- a/src/actions.h +++ b/src/actions.h @@ -2,25 +2,25 @@ #define E_ACTIONS_H #include "e.h" +#include "object.h" typedef struct _E_Action E_Action; typedef struct _E_Action_Impl E_Action_Impl; typedef struct _E_Active_Action_Timer E_Active_Action_Timer; typedef enum e_action_type - { - ACT_MOUSE_IN, - ACT_MOUSE_OUT, - ACT_MOUSE_CLICK, - ACT_MOUSE_DOUBLE, - ACT_MOUSE_TRIPLE, - ACT_MOUSE_UP, - ACT_MOUSE_CLICKED, - ACT_MOUSE_MOVE, - ACT_KEY_DOWN, - ACT_KEY_UP - } -E_Action_Type; +{ + ACT_MOUSE_IN, + ACT_MOUSE_OUT, + ACT_MOUSE_CLICK, + ACT_MOUSE_DOUBLE, + ACT_MOUSE_TRIPLE, + ACT_MOUSE_UP, + ACT_MOUSE_CLICKED, + ACT_MOUSE_MOVE, + ACT_KEY_DOWN, + ACT_KEY_UP +} E_Action_Type; struct _E_Active_Action_Timer { @@ -30,7 +30,7 @@ struct _E_Active_Action_Timer struct _E_Action { - OBJ_PROPERTIES; + E_Object o; char *name; char *action; @@ -40,21 +40,29 @@ struct _E_Action char *key; int modifiers; E_Action_Impl *action_impl; - void *object; + E_Object *object; int started; int grabbed; }; +typedef void (*E_Action_Start_Func)(E_Object *o, E_Action *a, + void *data, int x, int y, int rx, int ry); +typedef void (*E_Action_Cont_Func) (E_Object *o, E_Action *a, + void *data, int x, int y, int rx, int ry, int dx, int dy); +typedef void (*E_Action_Stop_Func) (E_Object *o, E_Action *a, + void *data, int x, int y, int rx, int ry); + struct _E_Action_Impl { - OBJ_PROPERTIES; - + E_Object o; + char *action; - void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); - void (*func_cont) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy); - void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry); + + E_Action_Start_Func func_start; + E_Action_Cont_Func func_cont; + E_Action_Stop_Func func_stop; }; - + /** * e_action_init - Actions implementation initializer @@ -65,22 +73,20 @@ struct _E_Action_Impl void e_action_init(void); int e_action_start(char *action, E_Action_Type act, int button, char *key, - Ecore_Event_Key_Modifiers mods, void *o, void *data, + Ecore_Event_Key_Modifiers mods, E_Object *o, void *data, int x, int y, int rx, int ry); void e_action_stop(char *action, E_Action_Type act, int button, char *key, - Ecore_Event_Key_Modifiers mods, void *o, void *data, + Ecore_Event_Key_Modifiers mods, E_Object *o, void *data, int x, int y, int rx, int ry); void e_action_cont(char *action, E_Action_Type act, int button, char *key, - Ecore_Event_Key_Modifiers mods, void *o, void *data, + Ecore_Event_Key_Modifiers mods, E_Object *o, void *data, int x, int y, int rx, int ry, int dx, int dy); -void e_action_stop_by_object(void *o, void *data, int x, int y, int rx, int ry); +void e_action_stop_by_object(E_Object *o, void *data, int x, int y, int rx, int ry); void e_action_stop_by_type(char *action); -void e_action_add_proto(char *action, - void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry), - void (*func_cont) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy), - void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry)); -void e_action_del_timer(void *o, char *name); -void e_action_add_timer(void *o, char *name); -void e_action_del_timer_object(void *o); +void e_action_add_impl(char *action, E_Action_Start_Func func_start, + E_Action_Cont_Func func_cont, E_Action_Stop_Func func_stop); +void e_action_del_timer(E_Object *object, char *name); +void e_action_add_timer(E_Object *object, char *name); +void e_action_del_timer_object(E_Object *object); #endif diff --git a/src/background.c b/src/background.c index 05422c7f3..324212375 100644 --- a/src/background.c +++ b/src/background.c @@ -1,12 +1,15 @@ #include "e.h" +#include "debug.h" #include "background.h" #include "util.h" -void -e_background_free(E_Background *bg) +static void +e_background_cleanup(E_Background *bg) { Evas_List l; - + + D_ENTER; + if (bg->layers) { for (l = bg->layers; l; l = l->next) @@ -23,7 +26,10 @@ e_background_free(E_Background *bg) } if (bg->file) FREE (bg->file); if (bg->base_obj) evas_del_object(bg->evas, bg->base_obj); - FREE(bg); + + e_object_cleanup(E_OBJECT(bg)); + + D_RETURN; } E_Background * @@ -31,11 +37,14 @@ e_background_new(void) { E_Background *bg; + D_ENTER; + bg = NEW(E_Background, 1); ZERO(bg, E_Background, 1); - OBJ_INIT(bg, e_background_free); + + e_object_init(E_OBJECT(bg), (E_Cleanup_Func) e_background_cleanup); - return bg; + D_RETURN_(bg); } E_Background * @@ -45,15 +54,17 @@ e_background_load(char *file) E_DB_File *db; int i, num; + D_ENTER; + db = e_db_open_read(file); - if (!db) return NULL; + if (!db) D_RETURN_(NULL); num = 0; e_db_int_get(db, "/type/bg", &num); if (num != 1) { e_db_close(db); e_db_flush(); - return NULL; + D_RETURN_(NULL); } e_db_int_get(db, "/layers/count", &num); @@ -101,7 +112,7 @@ e_background_load(char *file) sprintf(buf, "/layers/%i/bg.b", i); e_db_int_get(db, buf, &(bl->bg.b)); sprintf(buf, "/layers/%i/bg.a", i); e_db_int_get(db, buf, &(bl->bg.a)); } - return bg; + D_RETURN_(bg); } void @@ -110,9 +121,11 @@ e_background_realize(E_Background *bg, Evas evas) Evas_List l; int ww, hh, count; - if (bg->evas) return; + D_ENTER; + + if (bg->evas) D_RETURN; bg->evas = evas; - if (!bg->evas) return; + if (!bg->evas) D_RETURN; for (count = 0, l = bg->layers; l; l = l->next, count++) { E_Background_Layer *bl; @@ -149,6 +162,7 @@ e_background_realize(E_Background *bg, Evas evas) bg->geom.h = 0; e_background_set_size(bg, ww, hh); + D_RETURN; } void @@ -156,10 +170,12 @@ e_background_set_scroll(E_Background *bg, int sx, int sy) { Evas_List l; - if ((bg->geom.sx == sx) && (bg->geom.sy == sy)) return; + D_ENTER; + + if ((bg->geom.sx == sx) && (bg->geom.sy == sy)) D_RETURN; bg->geom.sx = sx; bg->geom.sy = sy; - if (!bg->evas) return; + if (!bg->evas) D_RETURN; for (l = bg->layers; l; l = l->next) { E_Background_Layer *bl; @@ -173,6 +189,7 @@ e_background_set_scroll(E_Background *bg, int sx, int sy) bl->fw, bl->fh); } } + D_RETURN; } void @@ -180,7 +197,9 @@ e_background_set_size(E_Background *bg, int w, int h) { Evas_List l; - if ((bg->geom.w == w) && (bg->geom.h == h)) return; + D_ENTER; + + if ((bg->geom.w == w) && (bg->geom.h == h)) D_RETURN; bg->geom.w = w; bg->geom.h = h; for (l = bg->layers; l; l = l->next) @@ -229,6 +248,7 @@ e_background_set_size(E_Background *bg, int w, int h) } } } + D_RETURN; } void @@ -236,6 +256,8 @@ e_background_set_color_class(E_Background *bg, char *cc, int r, int g, int b, in { Evas_List l; + D_ENTER; + for (l = bg->layers; l; l = l->next) { E_Background_Layer *bl; @@ -252,4 +274,6 @@ e_background_set_color_class(E_Background *bg, char *cc, int r, int g, int b, in } } } + + D_RETURN; } diff --git a/src/background.h b/src/background.h index 6550b2cdb..a034c0eaf 100644 --- a/src/background.h +++ b/src/background.h @@ -1,6 +1,8 @@ #ifndef E_BACKGROUND_H #define E_BACKGROUND_H +#include "object.h" + typedef struct _E_Background E_Background; typedef struct _E_Background_Layer E_Background_Layer; @@ -14,7 +16,7 @@ E_Background_Type; struct _E_Background { - OBJ_PROPERTIES; + E_Object o; Evas evas; char *file; @@ -24,9 +26,9 @@ struct _E_Background int w, h; } geom; - Evas_List layers; + Evas_List layers; - Evas_Object base_obj; + Evas_Object base_obj; }; @@ -59,9 +61,9 @@ struct _E_Background_Layer }; -void e_background_free(E_Background *bg); E_Background *e_background_new(void); E_Background *e_background_load(char *file); + void e_background_realize(E_Background *bg, Evas evas); void e_background_set_scroll(E_Background *bg, int sx, int sy); void e_background_set_size(E_Background *bg, int w, int h); diff --git a/src/border.c b/src/border.c index 106c3c845..a0ff8c44a 100644 --- a/src/border.c +++ b/src/border.c @@ -1,6 +1,7 @@ #include "cursors.h" #include "border.h" #include "config.h" +#include "debug.h" #include "actions.h" #include "delayed.h" #include "desktops.h" @@ -66,11 +67,14 @@ static void e_cb_border_move_resize(E_Border *b); static void e_cb_border_visibility(E_Border *b); static void e_border_poll(int val, void *data); +static void e_border_free(E_Border *b); static int e_border_replay_query(Ecore_Event_Mouse_Down *ev) { E_Border *b; + D_ENTER; + b = e_border_find_by_window(ev->win); if (b) { @@ -80,9 +84,10 @@ static int e_border_replay_query(Ecore_Event_Mouse_Down *ev) E_CONFIG_INT_GET(cfg_focus_mode, focus_mode); if ((focus_mode == 2) && (ev->mods == ECORE_EVENT_KEY_MODIFIER_NONE)) /* FIXME: also if pass click always set */ - return 1; + D_RETURN_(1); } - return 0; + + D_RETURN_(0); } /* what to dowhen we're idle */ @@ -92,6 +97,8 @@ e_border_update_borders(void) { Evas_List l; + D_ENTER; + for (l = borders; l; l = l->next) { E_Border *b; @@ -113,13 +120,18 @@ e_border_update_borders(void) } } e_db_flush(); + + D_RETURN; } static void e_idle(void *data) { + D_ENTER; + e_border_update_borders(); - return; + + D_RETURN; UN(data); } @@ -129,6 +141,8 @@ e_map_request(Ecore_Event * ev) { Ecore_Event_Window_Map_Request *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -142,6 +156,8 @@ e_map_request(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -150,6 +166,8 @@ e_configure_request(Ecore_Event * ev) { Ecore_Event_Window_Configure_Request *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -230,6 +248,8 @@ e_configure_request(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -238,6 +258,8 @@ e_property(Ecore_Event * ev) { Ecore_Event_Window_Property *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -250,6 +272,8 @@ e_property(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -258,12 +282,16 @@ e_client_message(Ecore_Event * ev) { Ecore_Event_Message *e; + D_ENTER; + current_ev = ev; e = ev->event; e_icccm_handle_client_message(e); current_ev = NULL; + + D_RETURN; } /* */ @@ -272,6 +300,8 @@ e_unmap(Ecore_Event * ev) { Ecore_Event_Window_Unmap *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -285,21 +315,24 @@ e_unmap(Ecore_Event * ev) if (b->ignore_unmap > 0) b->ignore_unmap--; else { - e_action_stop_by_object(b, NULL, + e_action_stop_by_object(E_OBJECT(b), NULL, mouse_win_x, mouse_win_y, border_mouse_x, border_mouse_y); - OBJ_UNREF(b); - OBJ_IF_FREE(b) + + if (e_object_get_usecount(E_OBJECT(b)) == 1) { ecore_window_reparent(e->win, 0, 0, 0); e_icccm_release(e->win); - OBJ_FREE(b); } + + e_object_unref(E_OBJECT(b)); } } } } current_ev = NULL; + + D_RETURN; } /* */ @@ -308,6 +341,8 @@ e_destroy(Ecore_Event * ev) { Ecore_Event_Window_Destroy *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -318,20 +353,23 @@ e_destroy(Ecore_Event * ev) { if (b->win.client == e->win) { - e_action_stop_by_object(b, NULL, + e_action_stop_by_object(E_OBJECT(b), NULL, mouse_win_x, mouse_win_y, border_mouse_x, border_mouse_y); - OBJ_UNREF(b); - OBJ_IF_FREE(b) + + if (e_object_get_usecount(E_OBJECT(b)) == 1) { - ecore_window_reparent(e->win, 0, 0, 0); - e_icccm_release(e->win); - OBJ_FREE(b); + ecore_window_reparent(e->win, 0, 0, 0); + e_icccm_release(e->win); } + + e_object_unref(E_OBJECT(b)); } } } current_ev = NULL; + + D_RETURN; } /* */ @@ -340,6 +378,8 @@ e_circulate_request(Ecore_Event * ev) { Ecore_Event_Window_Circulate_Request *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -353,6 +393,8 @@ e_circulate_request(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -361,6 +403,8 @@ e_reparent(Ecore_Event * ev) { Ecore_Event_Window_Reparent *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -387,6 +431,8 @@ e_reparent(Ecore_Event * ev) #endif } current_ev = NULL; + + D_RETURN; } /* */ @@ -395,6 +441,8 @@ e_shape(Ecore_Event * ev) { Ecore_Event_Window_Shape *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -409,6 +457,8 @@ e_shape(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -417,6 +467,8 @@ e_focus_in(Ecore_Event * ev) { Ecore_Event_Window_Focus_In *e; + D_ENTER; + current_ev = ev; e = ev->event; printf("focus in event\n"); @@ -430,7 +482,9 @@ e_focus_in(Ecore_Event * ev) e_border_focus_grab_ended(); b->current.selected = 1; b->changed = 1; - OBS_NOTIFY(b, ECORE_EVENT_WINDOW_FOCUS_IN); + + e_observee_notify_observers(E_OBSERVEE(b), ECORE_EVENT_WINDOW_FOCUS_IN); + { Evas_List l; @@ -456,6 +510,8 @@ e_focus_in(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* */ @@ -464,6 +520,8 @@ e_focus_out(Ecore_Event * ev) { Ecore_Event_Window_Focus_Out *e; + D_ENTER; + current_ev = ev; e = ev->event; printf("focus out event\n"); @@ -502,6 +560,8 @@ e_focus_out(Ecore_Event * ev) e_delayed_action_cancel(delayed_window_raise); } current_ev = NULL; + + D_RETURN; } /* */ @@ -510,6 +570,8 @@ e_colormap(Ecore_Event * ev) { Ecore_Event_Colormap *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -521,6 +583,8 @@ e_colormap(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* handling mouse down events */ @@ -529,6 +593,8 @@ e_mouse_down(Ecore_Event * ev) { Ecore_Event_Mouse_Down *e; + D_ENTER; + printf("doooown\n"); current_ev = ev; e = ev->event; @@ -584,6 +650,8 @@ e_mouse_down(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* handling mouse up events */ @@ -592,6 +660,8 @@ e_mouse_up(Ecore_Event * ev) { Ecore_Event_Mouse_Up *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -639,6 +709,8 @@ e_mouse_up(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* handling mouse move events */ @@ -647,6 +719,8 @@ e_mouse_move(Ecore_Event * ev) { Ecore_Event_Mouse_Move *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -693,6 +767,8 @@ e_mouse_move(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* handling mouse enter events */ @@ -701,6 +777,8 @@ e_mouse_in(Ecore_Event * ev) { Ecore_Event_Window_Enter *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -746,6 +824,8 @@ e_mouse_in(Ecore_Event * ev) } } current_ev = NULL; + + D_RETURN; } /* handling mouse leave events */ @@ -754,6 +834,8 @@ e_mouse_out(Ecore_Event * ev) { Ecore_Event_Window_Leave *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -774,6 +856,8 @@ e_mouse_out(Ecore_Event * ev) } current_ev = NULL; current_ev = NULL; + + D_RETURN; } /* handling expose events */ @@ -782,6 +866,8 @@ e_window_expose(Ecore_Event * ev) { Ecore_Event_Window_Expose *e; + D_ENTER; + current_ev = ev; e = ev->event; { @@ -800,6 +886,8 @@ e_window_expose(Ecore_Event * ev) if (b) b->first_expose = 1; } current_ev = NULL; + + D_RETURN; } /* what to do with border events */ @@ -810,19 +898,22 @@ e_cb_mouse_in(void *data, Ebits_Object o, char *class, { E_Border *b; + D_ENTER; + b = data; - if (border_mouse_buttons) return; + if (border_mouse_buttons) D_RETURN; border_mouse_x = mouse_x; border_mouse_y = mouse_y; if (class) e_cursors_display_in_window(b->win.main, class); else e_cursors_display_in_window(b->win.main, "Default"); - if (!current_ev) return; + if (!current_ev) D_RETURN; e_action_stop(class, ACT_MOUSE_IN, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); e_action_start(class, ACT_MOUSE_IN, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); - return; + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); + + D_RETURN; UN(o); UN(bt); UN(ox); @@ -837,17 +928,19 @@ e_cb_mouse_out(void *data, Ebits_Object o, char *class, { E_Border *b; + D_ENTER; + b = data; - if (border_mouse_buttons) return; + if (border_mouse_buttons) D_RETURN; border_mouse_x = mouse_x; border_mouse_y = mouse_y; - if (!current_ev) return; + if (!current_ev) D_RETURN; e_cursors_display_in_window(b->win.main, "Default"); e_action_stop(class, ACT_MOUSE_OUT, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); e_action_start(class, ACT_MOUSE_OUT, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); - return; + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); + D_RETURN; UN(o); UN(bt); UN(ox); @@ -862,11 +955,13 @@ e_cb_mouse_down(void *data, Ebits_Object o, char *class, { E_Border *b; + D_ENTER; + b = data; border_mouse_x = mouse_x; border_mouse_y = mouse_y; border_mouse_buttons = mouse_buttons; - if (!current_ev) return; + if (!current_ev) D_RETURN; { E_Action_Type act; Ecore_Event_Key_Modifiers mods; @@ -879,12 +974,12 @@ e_cb_mouse_down(void *data, Ebits_Object o, char *class, else if (((Ecore_Event_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE; - e_action_stop(class, act, bt, NULL, mods, b, + e_action_stop(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); - e_action_start(class, act, bt, NULL, mods, b, + e_action_start(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); } - return; + D_RETURN; UN(o); UN(ox); UN(oy); @@ -898,11 +993,13 @@ e_cb_mouse_up(void *data, Ebits_Object o, char *class, { E_Border *b; + D_ENTER; + b = data; border_mouse_x = mouse_x; border_mouse_y = mouse_y; border_mouse_buttons = mouse_buttons; - if (!current_ev) return; + if (!current_ev) D_RETURN; { E_Action_Type act; Ecore_Event_Key_Modifiers mods; @@ -913,12 +1010,12 @@ e_cb_mouse_up(void *data, Ebits_Object o, char *class, if ((x >= ox) && (x < (ox + ow)) && (y >= oy) && (y < (oy + oh))) act = ACT_MOUSE_CLICKED; - e_action_stop(class, act, bt, NULL, mods, b, + e_action_stop(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); - e_action_start(class, act, bt, NULL, mods, b, + e_action_start(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); } - return; + D_RETURN; UN(o); } @@ -929,6 +1026,8 @@ e_cb_mouse_move(void *data, Ebits_Object o, char *class, E_Border *b; int dx, dy; + D_ENTER; + b = data; dx = mouse_x - border_mouse_x; dy = mouse_y - border_mouse_y; @@ -936,12 +1035,12 @@ e_cb_mouse_move(void *data, Ebits_Object o, char *class, border_mouse_y = mouse_y; if (!current_ev) - return; + D_RETURN; e_action_cont(class, ACT_MOUSE_MOVE, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y, dx, dy); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y, dx, dy); - return; + D_RETURN; UN(o); UN(bt); UN(ox); @@ -959,7 +1058,9 @@ e_cb_border_mouse_in(E_Border *b, Ecore_Event *e) int focus_mode; E_CFG_INT(cfg_focus_mode, "settings", "/focus/mode", 0); -/* if (border_mouse_buttons) return;*/ + D_ENTER; + +/* if (border_mouse_buttons) D_RETURN;*/ E_CONFIG_INT_GET(cfg_focus_mode, focus_mode); /* pointer focus stuff */ if (focus_mode == 0) @@ -970,15 +1071,17 @@ e_cb_border_mouse_in(E_Border *b, Ecore_Event *e) border_mouse_x = mouse_x; border_mouse_y = mouse_y; /* border_mouse_buttons = mouse_buttons;*/ - if (!current_ev) return; + if (!current_ev) D_RETURN; x = ((Ecore_Event_Window_Enter *)(e->event))->x; y = ((Ecore_Event_Window_Enter *)(e->event))->y; e_action_stop(class, ACT_MOUSE_IN, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); e_action_start(class, ACT_MOUSE_IN, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); + + D_RETURN; } static void @@ -987,22 +1090,24 @@ e_cb_border_mouse_out(E_Border *b, Ecore_Event *e) int x, y; char *class = "Window_Grab"; -/* if (border_mouse_buttons) return; */ +/* if (border_mouse_buttons) D_RETURN; */ /* pointer focus stuff */ /* ecore_focus_to_window(0);*/ + D_ENTER; + x = mouse_x; y = mouse_y; border_mouse_x = mouse_x; border_mouse_y = mouse_y; /* border_mouse_buttons = mouse_buttons; */ - if (!current_ev) return; + if (!current_ev) D_RETURN; e_action_stop(class, ACT_MOUSE_OUT, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); e_action_start(class, ACT_MOUSE_OUT, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y); - return; + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); + D_RETURN; UN(e); } @@ -1014,15 +1119,17 @@ e_cb_border_mouse_down(E_Border *b, Ecore_Event *e) int focus_mode; E_CFG_INT(cfg_focus_mode, "settings", "/focus/mode", 0); + D_ENTER; + E_CONFIG_INT_GET(cfg_focus_mode, focus_mode); ecore_pointer_grab(b->win.main, CurrentTime); border_mouse_x = mouse_x; border_mouse_y = mouse_y; printf("%i\n", border_mouse_buttons); -/* if (border_mouse_buttons) return; */ +/* if (border_mouse_buttons) D_RETURN; */ /* border_mouse_buttons = mouse_buttons; */ printf("%p\n", current_ev); - if (!current_ev) return; + if (!current_ev) D_RETURN; x = ((Ecore_Event_Mouse_Down *)(e->event))->x; y = ((Ecore_Event_Mouse_Down *)(e->event))->y; bt = ((Ecore_Event_Mouse_Down *)(e->event))->button; @@ -1068,9 +1175,9 @@ e_cb_border_mouse_down(E_Border *b, Ecore_Event *e) else if (((Ecore_Event_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE; - e_action_stop(class, act, bt, NULL, mods, b, NULL, + e_action_stop(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); - if (!e_action_start(class, act, bt, NULL, mods, b, NULL, + if (!e_action_start(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y)) { ecore_pointer_ungrab(((Ecore_Event_Mouse_Down *)(e->event))->time); @@ -1081,6 +1188,8 @@ e_cb_border_mouse_down(E_Border *b, Ecore_Event *e) ((Ecore_Event_Mouse_Down *)(e->event))->time); } } + + D_RETURN; } static void @@ -1089,11 +1198,13 @@ e_cb_border_mouse_up(E_Border *b, Ecore_Event *e) int x, y, bt; char *class = "Window_Grab"; + D_ENTER; + ecore_pointer_ungrab(CurrentTime); border_mouse_x = mouse_x; border_mouse_y = mouse_y; /* border_mouse_buttons = mouse_buttons; */ - if (!current_ev) return; + if (!current_ev) D_RETURN; x = ((Ecore_Event_Mouse_Up *)(e->event))->x; y = ((Ecore_Event_Mouse_Up *)(e->event))->y; bt = ((Ecore_Event_Mouse_Up *)(e->event))->button; @@ -1103,11 +1214,13 @@ e_cb_border_mouse_up(E_Border *b, Ecore_Event *e) mods = ((Ecore_Event_Mouse_Up *)(current_ev->event))->mods; act = ACT_MOUSE_UP; - e_action_stop(class, act, bt, NULL, mods, b, + e_action_stop(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); - e_action_start(class, act, bt, NULL, mods, b, + e_action_start(class, act, bt, NULL, mods, E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y); } + + D_RETURN; } static void @@ -1117,48 +1230,109 @@ e_cb_border_mouse_move(E_Border *b, Ecore_Event *e) int x, y; char *class = "Window_Grab"; + D_ENTER; + dx = mouse_x - border_mouse_x; dy = mouse_y - border_mouse_y; border_mouse_x = mouse_x; border_mouse_y = mouse_y; - if (!current_ev) return; + if (!current_ev) D_RETURN; x = ((Ecore_Event_Mouse_Move *)(e->event))->x; y = ((Ecore_Event_Mouse_Move *)(e->event))->y; e_action_cont(class, ACT_MOUSE_MOVE, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, - b, NULL, x, y, border_mouse_x, border_mouse_y, dx, dy); + E_OBJECT(b), NULL, x, y, border_mouse_x, border_mouse_y, dx, dy); + + D_RETURN; } static void e_cb_border_move_resize(E_Border *b) { - return; + D_ENTER; + + D_RETURN; UN(b); } static void e_cb_border_visibility(E_Border *b) { - return; + D_ENTER; + + D_RETURN; UN(b); } static void e_border_poll(int val, void *data) { + D_ENTER; + ecore_add_event_timer("e_border_poll()", 1.00, e_border_poll, val + 1, NULL); - return; + D_RETURN; UN(data); } +static void +e_border_free(E_Border *b) +{ + Evas_List l; + + D_ENTER; + + e_desktops_del_border(b->desk, b); + if (b->bits.l) ebits_free(b->bits.l); + if (b->bits.r) ebits_free(b->bits.r); + if (b->bits.t) ebits_free(b->bits.t); + if (b->bits.b) ebits_free(b->bits.b); + evases = evas_list_remove(evases, b->evas.l); + evases = evas_list_remove(evases, b->evas.r); + evases = evas_list_remove(evases, b->evas.t); + evases = evas_list_remove(evases, b->evas.b); + evas_free(b->evas.l); + evas_free(b->evas.r); + evas_free(b->evas.t); + evas_free(b->evas.b); + ecore_window_destroy(b->win.container); + ecore_window_destroy(b->win.input); + ecore_window_destroy(b->win.main); + borders = evas_list_remove(borders, b); + + IF_FREE(b->client.title); + IF_FREE(b->client.name); + IF_FREE(b->client.class); + IF_FREE(b->client.command); + IF_FREE(b->client.machine); + IF_FREE(b->client.icon_name); + IF_FREE(b->border_style); + IF_FREE(b->border_file); + + if (b->grabs) + { + for (l = b->grabs; l; l = l->next) + { + FREE(l->data); + } + evas_list_free(b->grabs); + } + + e_object_cleanup(E_OBJECT(b)); + + D_RETURN; +} + + /* border creation, deletion, modification and general queries */ void e_border_apply_border(E_Border *b) { int pl, pr, pt, pb; - char *borders, buf[PATH_MAX], border[PATH_MAX], *style = NULL, *match_style; + char *borders, buf[PATH_MAX], border[PATH_MAX], *style = NULL; int prop_selected = 0, prop_sticky = 0, prop_shaded = 0; + D_ENTER; + style = "default"; if ((!b->client.titlebar) && (!b->client.border)) style = "borderless"; if (b->border_style) style = b->border_style; @@ -1173,7 +1347,7 @@ e_border_apply_border(E_Border *b) borders = e_config_get("borders"); sprintf(buf, "%s%s/%s", borders, style, border); /* if it's not changed - abort and dont do anything */ - if ((b->border_file) && (!strcmp(buf, b->border_file))) return; + if ((b->border_file) && (!strcmp(buf, b->border_file))) D_RETURN; IF_FREE(b->border_file); e_strdup(b->border_file, buf); @@ -1182,6 +1356,8 @@ e_border_apply_border(E_Border *b) pl = pr = pt = pb = 0; if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb); e_icccm_set_frame_size(b->win.client, pl, pr, pt, pb); + + D_RETURN; } void @@ -1190,11 +1366,13 @@ e_border_reshape(E_Border *b) static Window shape_win = 0; int pl, pr, pt, pb; + D_ENTER; + if ((b->current.shaped_client == b->previous.shaped_client) && (b->current.shape_changes == b->previous.shape_changes) && (b->current.has_shape == b->previous.has_shape) && (!b->shape_changed)) - return; + D_RETURN; if (!shape_win) shape_win = ecore_window_override_new(0, 0, 0, 1, 1); pl = pr = pt = pb = 0; @@ -1204,7 +1382,7 @@ e_border_reshape(E_Border *b) if ((!b->current.shaped_client) && (!b->current.has_shape)) { ecore_window_set_shape_mask(b->win.main, 0); - return; + D_RETURN; } if ((b->current.shaped_client) && (!b->current.has_shape)) @@ -1227,7 +1405,7 @@ e_border_reshape(E_Border *b) ecore_window_add_shape_rectangles(shape_win, rects, 4); ecore_window_set_shape_window(b->win.main, shape_win, 0, 0); - return; + D_RETURN; } if ((!b->current.shaped_client) && (b->current.has_shape)) @@ -1251,7 +1429,7 @@ e_border_reshape(E_Border *b) ecore_window_add_shape_rectangles(shape_win, rects, 4); } ecore_window_set_shape_window(b->win.main, shape_win, 0, 0); - return; + D_RETURN; } if ((b->current.shaped_client) && (b->current.has_shape)) { @@ -1276,8 +1454,10 @@ e_border_reshape(E_Border *b) } ecore_window_set_shape_window(b->win.main, shape_win, 0, 0); - return; + D_RETURN; } + + D_RETURN; } E_Border * @@ -1287,6 +1467,8 @@ e_border_adopt(Window win, int use_client_pos) int bw; int show = 1; + D_ENTER; + /* create the struct */ b = e_border_new(); /* set the right event on the client */ @@ -1438,7 +1620,8 @@ e_border_adopt(Window win, int use_client_pos) b->current.requested.w = b->current.w; e_border_raise(b); ecore_window_show(win); - return b; + + D_RETURN_(b); } E_Border * @@ -1452,12 +1635,15 @@ e_border_new(void) char *font_dir; E_Desktop *desk; + D_ENTER; + font_dir = e_config_get("fonts"); b = NEW(E_Border, 1); ZERO(b, E_Border, 1); - - OBJ_INIT(b, e_border_free); - OBS_REGISTER(delayed_window_raise, b); + + e_object_init(E_OBJECT(b), (E_Cleanup_Func) e_border_free); + e_observer_register_observee(E_OBSERVER(delayed_window_raise), + E_OBSERVEE(b)); b->current.requested.w = 1; b->current.requested.h = 1; @@ -1597,58 +1783,17 @@ e_border_new(void) borders = evas_list_prepend(borders, b); - return b; + D_RETURN_(b); } -void -e_border_free(E_Border *b) -{ - Evas_List l; - - e_desktops_del_border(b->desk, b); - if (b->bits.l) ebits_free(b->bits.l); - if (b->bits.r) ebits_free(b->bits.r); - if (b->bits.t) ebits_free(b->bits.t); - if (b->bits.b) ebits_free(b->bits.b); - evases = evas_list_remove(evases, b->evas.l); - evases = evas_list_remove(evases, b->evas.r); - evases = evas_list_remove(evases, b->evas.t); - evases = evas_list_remove(evases, b->evas.b); - evas_free(b->evas.l); - evas_free(b->evas.r); - evas_free(b->evas.t); - evas_free(b->evas.b); - ecore_window_destroy(b->win.container); - ecore_window_destroy(b->win.input); - ecore_window_destroy(b->win.main); - borders = evas_list_remove(borders, b); - - IF_FREE(b->client.title); - IF_FREE(b->client.name); - IF_FREE(b->client.class); - IF_FREE(b->client.command); - IF_FREE(b->client.machine); - IF_FREE(b->client.icon_name); - IF_FREE(b->border_style); - IF_FREE(b->border_file); - - if (b->grabs) - { - for (l = b->grabs; l; l = l->next) - { - FREE(l->data); - } - evas_list_free(b->grabs); - } - - FREE(b); -} void e_border_remove_mouse_grabs(E_Border *b) { Evas_List l; + D_ENTER; + if (b->grabs) { for (l = b->grabs; l; l = l->next) @@ -1663,11 +1808,15 @@ e_border_remove_mouse_grabs(E_Border *b) evas_list_free(b->grabs); b->grabs = NULL; } + + D_RETURN; } void e_border_remove_click_grab(E_Border *b) { + D_ENTER; + if (b->click_grab) { E_Grab *g; @@ -1679,6 +1828,8 @@ e_border_remove_click_grab(E_Border *b) b->click_grab = NULL; FREE(g); } + + D_RETURN; } void @@ -1690,6 +1841,8 @@ e_border_attach_mouse_grabs(E_Border *b) char buf[PATH_MAX]; E_CFG_INT(cfg_focus_mode, "settings", "/focus/mode", 0); + D_ENTER; + E_CONFIG_INT_GET(cfg_focus_mode, focus_mode); grabs_db = e_config_get("grabs"); @@ -1724,7 +1877,7 @@ e_border_attach_mouse_grabs(E_Border *b) if (!e_db_int_get(db, buf, &num)) { e_db_close(db); - return; + D_RETURN; } for (i = 0; i < num; i++) { @@ -1757,6 +1910,8 @@ e_border_attach_mouse_grabs(E_Border *b) } e_db_close(db); } + + D_RETURN; } void @@ -1764,8 +1919,12 @@ e_border_remove_all_mouse_grabs(void) { Evas_List l; + D_ENTER; + for (l = borders; l; l = l->next) e_border_remove_mouse_grabs((E_Border *)l->data); + + D_RETURN; } void @@ -1773,8 +1932,12 @@ e_border_attach_all_mouse_grabs(void) { Evas_List l; + D_ENTER; + for (l = borders; l; l = l->next) e_border_attach_mouse_grabs((E_Border *)l->data); + + D_RETURN; } void @@ -1788,6 +1951,8 @@ e_border_redo_grabs(void) int changed = 0; Evas_List l; + D_ENTER; + grabs_db = e_config_get("grabs"); settings_db = e_config_get("settings"); mod = e_file_modified_time(grabs_db); @@ -1799,7 +1964,7 @@ e_border_redo_grabs(void) if (mod != mod_date_settings) changed = 1; mod_date_settings = mod; } - if (!changed) return; + if (!changed) D_RETURN; for (l = borders; l; l = l->next) { E_Border *b; @@ -1808,6 +1973,8 @@ e_border_redo_grabs(void) e_border_remove_mouse_grabs(b); e_border_attach_mouse_grabs(b); } + + D_RETURN; } E_Border * @@ -1815,6 +1982,8 @@ e_border_find_by_window(Window win) { Evas_List l; + D_ENTER; + for (l = borders; l; l = l->next) { E_Border *b; @@ -1829,9 +1998,10 @@ e_border_find_by_window(Window win) (win == b->win.r) || (win == b->win.t) || (win == b->win.b)) - return b; + D_RETURN_(b); } - return NULL; + + D_RETURN_(NULL); } void @@ -1839,6 +2009,8 @@ e_border_set_bits(E_Border *b, char *file) { int pl, pr, pt, pb, ppl, ppr, ppt, ppb; + D_ENTER; + pl = pr = pt = pb = 0; ppl = ppr = ppt = ppb = 0; @@ -1899,15 +2071,21 @@ ebits_set_classed_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_MOVE, e_cb_mous e_border_adjust_limits(b); } + + D_RETURN; } void e_border_set_color_class(E_Border *b, char *class, int rr, int gg, int bb, int aa) { + D_ENTER; + ebits_set_color_class(b->bits.l, class, rr, gg, bb, aa); ebits_set_color_class(b->bits.r, class, rr, gg, bb, aa); ebits_set_color_class(b->bits.t, class, rr, gg, bb, aa); ebits_set_color_class(b->bits.b, class, rr, gg, bb, aa); + + D_RETURN; } void @@ -1915,6 +2093,8 @@ e_border_adjust_limits(E_Border *b) { int w, h, pl, pr, pt, pb, mx, my; + D_ENTER; + if (b->mode.move) { e_resist_border(b); @@ -2019,6 +2199,8 @@ e_border_adjust_limits(E_Border *b) b->current.x += (b->current.requested.w - b->current.w); } } + + D_RETURN; } void @@ -2031,8 +2213,10 @@ e_border_update(E_Border *b) int visibility_changed = 0; int state_changed = 0; - if (b->hold_changes) return; - if (!b->changed) return; + D_ENTER; + + if (b->hold_changes) D_RETURN; + if (!b->changed) D_RETURN; b->current.visible = b->current.requested.visible; @@ -2291,6 +2475,8 @@ e_border_update(E_Border *b) b->bits.new = 0; b->previous = b->current; b->changed = 0; + + D_RETURN; } void @@ -2298,11 +2484,15 @@ e_border_set_layer(E_Border *b, int layer) { int dl; - if (b->client.layer == layer) return; + D_ENTER; + + if (b->client.layer == layer) D_RETURN; dl = layer - b->client.layer; b->client.layer = layer; if (dl > 0) e_border_lower(b); else e_border_raise(b); + + D_RETURN; } static void @@ -2311,11 +2501,13 @@ e_border_raise_delayed(int val, void *b) int auto_raise = 0; E_CFG_INT(cfg_auto_raise, "settings", "/window/raise/auto", 0); + D_ENTER; + E_CONFIG_INT_GET(cfg_auto_raise, auto_raise); if (auto_raise) e_border_raise((E_Border *)b); - return; + D_RETURN; UN(val); } @@ -2325,12 +2517,14 @@ e_border_raise(E_Border *b) Evas_List l; E_Border *rel; + D_ENTER; + if (!b->desk->windows) { b->desk->windows = evas_list_append(b->desk->windows, b); b->desk->changed = 1; ecore_window_raise(b->win.main); - return; + D_RETURN; } for (l = b->desk->windows; l; l = l->next) { @@ -2341,7 +2535,7 @@ e_border_raise(E_Border *b) b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel); b->desk->changed = 1; ecore_window_stack_below(b->win.main, rel->win.main); - return; + D_RETURN; } if ((!l->next) && (l->data != b)) { @@ -2349,9 +2543,11 @@ e_border_raise(E_Border *b) b->desk->windows = evas_list_append(b->desk->windows, b); b->desk->changed = 1; ecore_window_raise(b->win.main); - return; + D_RETURN; } } + + D_RETURN; } void @@ -2360,61 +2556,73 @@ e_border_lower(E_Border *b) Evas_List l; E_Border *rel; + D_ENTER; + if (!b->desk->windows) { b->desk->windows = evas_list_append(b->desk->windows, b); b->desk->changed = 1; ecore_window_raise(b->win.main); - return; + D_RETURN; } for (l = b->desk->windows; l; l = l->next) { rel = l->data; if (rel->client.layer == b->client.layer) { - if (b == rel) return; + if (b == rel) D_RETURN; b->desk->windows = evas_list_remove(b->desk->windows, b); b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel); b->desk->changed = 1; ecore_window_stack_below(b->win.main, rel->win.main); - return; + D_RETURN; } } + + D_RETURN; } void e_border_raise_above(E_Border *b, E_Border *above) { + D_ENTER; + if (!b->desk->windows) { b->desk->windows = evas_list_append(b->desk->windows, b); b->desk->changed = 1; ecore_window_raise(b->win.main); - return; + D_RETURN; } - if (!evas_list_find(b->desk->windows, above)) return; + if (!evas_list_find(b->desk->windows, above)) D_RETURN; if (b->client.layer < above->client.layer) b->client.layer = above->client.layer; b->desk->windows = evas_list_remove(b->desk->windows, b); b->desk->windows = evas_list_append_relative(b->desk->windows, b, above); b->desk->changed = 1; ecore_window_stack_above(b->win.main, above->win.main); + + D_RETURN; } void e_border_lower_below(E_Border *b, E_Border *below) { + D_ENTER; + if (!b->desk->windows) { b->desk->windows = evas_list_append(b->desk->windows, b); b->desk->changed = 1; - return; + D_RETURN; } - if (!evas_list_find(b->desk->windows, below)) return; + if (!evas_list_find(b->desk->windows, below)) D_RETURN; if (b->client.layer > below->client.layer) b->client.layer = below->client.layer; b->desk->windows = evas_list_remove(b->desk->windows, b); b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, below); b->desk->changed = 1; ecore_window_stack_below(b->win.main, below->win.main); + + D_RETURN; } void @@ -2423,6 +2631,8 @@ e_border_init(void) double raise_delay = 0.5; E_CFG_FLOAT(cfg_raise_delay, "settings", "/window/raise/delay", 0.5); + D_ENTER; + E_CONFIG_FLOAT_GET(cfg_raise_delay, raise_delay); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, e_mouse_down); @@ -2445,10 +2655,13 @@ e_border_init(void) ecore_event_filter_handler_add(ECORE_EVENT_COLORMAP, e_colormap); ecore_event_filter_idle_handler_add(e_idle, NULL); - delayed_window_raise = NEW(E_Delayed_Action, 1); - E_DELAYED_ACT_INIT(delayed_window_raise, ECORE_EVENT_WINDOW_FOCUS_IN, raise_delay, e_border_raise_delayed); + delayed_window_raise = + e_delayed_action_new(ECORE_EVENT_WINDOW_FOCUS_IN, + raise_delay, e_border_raise_delayed); ecore_add_event_timer("e_border_poll()", 1.00, e_border_poll, 0, NULL); + + D_RETURN; } void @@ -2457,6 +2670,8 @@ e_border_adopt_children(Window win) Window *wins; int i, num; + D_ENTER; + wins = ecore_window_get_children(win, &num); if (wins) { @@ -2482,6 +2697,8 @@ e_border_adopt_children(Window win) } free(wins); } + + D_RETURN; } E_Border * @@ -2489,6 +2706,8 @@ e_border_current_focused(void) { Evas_List l; + D_ENTER; + for (l = borders; l; l = l->next) { E_Border *b; @@ -2502,22 +2721,26 @@ e_border_current_focused(void) E_Border *b; b = l->data; - if (b->current.selected) return b; + if (b->current.selected) D_RETURN_(b); } for (l = borders; l; l = l->next) { E_Border *b; b = l->data; - if (b->current.select_lost_from_grab) return b; + if (b->current.select_lost_from_grab) D_RETURN_(b); } - return NULL; + + D_RETURN_(NULL); } void e_border_focus_grab_ended(void) { Evas_List l; + + D_ENTER; + for (l = borders; l; l = l->next) { E_Border *b; @@ -2527,36 +2750,44 @@ e_border_focus_grab_ended(void) b->current.selected = 0; b->changed = 1; } + + D_RETURN; } int e_border_viewable(E_Border *b) { + D_ENTER; + if (b->desk != e_desktops_get(0)) - return 0; + D_RETURN_(0); if (b->current.x + b->current.w <= 0) - return 0; + D_RETURN_(0); if (b->current.x >= b->desk->real.w) - return 0; + D_RETURN_(0); if (b->current.y + b->current.h <= 0) - return 0; + D_RETURN_(0); if (b->current.y >= b->desk->real.h) - return 0; + D_RETURN_(0); if (!b->current.visible) - return 0; + D_RETURN_(0); - return 1; + D_RETURN_(1); } void e_border_send_pointer(E_Border *b) { + D_ENTER; + XWarpPointer(ecore_display_get(), None, b->win.main, 0, 0, 0, 0, b->current.w / 2, b->current.h / 2); + + D_RETURN; } void @@ -2565,8 +2796,10 @@ e_border_raise_next(void) Evas_List next; E_Border *current; + D_ENTER; + if (!borders) - return; + D_RETURN; current = e_border_current_focused(); @@ -2597,18 +2830,26 @@ e_border_raise_next(void) e_border_raise(current); e_border_send_pointer(current); + + D_RETURN; } void e_border_print_pos(char *buf, E_Border *b) { + D_ENTER; + sprintf(buf, "%i, %i", b->current.x, b->current.y); + + D_RETURN; } void e_border_print_size(char *buf, E_Border *b) { + D_ENTER; + if ((b->client.step.w > 1) || (b->client.step.h > 1)) { sprintf(buf, "%i x %i", @@ -2621,20 +2862,26 @@ e_border_print_size(char *buf, E_Border *b) b->client.w, b->client.h); } + + D_RETURN; } void e_border_set_gravity(E_Border *b, int gravity) { - if (!b) - return; + D_ENTER; - ecore_window_gravity_set(b->win.container, gravity); - ecore_window_gravity_set(b->win.input, gravity); - ecore_window_gravity_set(b->win.l, gravity); - ecore_window_gravity_set(b->win.r, gravity); - ecore_window_gravity_set(b->win.t, gravity); - ecore_window_gravity_set(b->win.b, gravity); + if (!b) + D_RETURN; + + ecore_window_gravity_set(b->win.container, gravity); + ecore_window_gravity_set(b->win.input, gravity); + ecore_window_gravity_set(b->win.l, gravity); + ecore_window_gravity_set(b->win.r, gravity); + ecore_window_gravity_set(b->win.t, gravity); + ecore_window_gravity_set(b->win.b, gravity); + + D_RETURN; } diff --git a/src/border.h b/src/border.h index 9e8054f1a..b09e08657 100644 --- a/src/border.h +++ b/src/border.h @@ -2,6 +2,7 @@ #define E_BORDER_H #include "e.h" +#include "observer.h" #ifndef E_DESKTOPS_TYPEDEF #define E_DESKTOPS_TYPEDEF @@ -22,7 +23,7 @@ struct _E_Grab struct _E_Border { - OBJ_PROPERTIES; + E_Observee obs; struct { Window main; @@ -141,13 +142,13 @@ struct _E_Border */ void e_border_init(void); +E_Border *e_border_new(void); + void e_border_update_borders(void); void e_border_apply_border(E_Border *b); void e_border_reshape(E_Border *b); E_Border *e_border_adopt(Window win, int use_client_pos); void e_border_adopt_children(Window win); -E_Border *e_border_new(void); -void e_border_free(E_Border *b); void e_border_remove_mouse_grabs(E_Border *b); void e_border_remove_click_grab(E_Border *b); void e_border_attach_mouse_grabs(E_Border *b); diff --git a/src/config.c b/src/config.c index 6be697e7a..38b5cc6d3 100644 --- a/src/config.c +++ b/src/config.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "config.h" #include "util.h" @@ -7,9 +8,9 @@ static char cfg_root[] = ""; { \ if (!strcmp(type, _key)) \ { \ - if ((_var)[0]) return (_var); \ + if ((_var)[0]) D_RETURN_(_var); \ sprintf((_var), ## _args); \ - return (_var); \ + D_RETURN_(_var); \ } \ } @@ -32,6 +33,8 @@ static char cfg_fonts_dir[PATH_MAX] = ""; char * e_config_get(char *type) { + D_ENTER; + /* for now use the system defaults and not the user copied settings */ /* so if i chnage stuff i dont have to rm my personaly settings and */ /* have e re-install them. yes this is different from e16 - the */ @@ -75,7 +78,8 @@ e_config_get(char *type) PACKAGE_DATA_DIR"/data/backgrounds/"); E_CONF("fonts", cfg_fonts_dir, PACKAGE_DATA_DIR"/data/fonts/"); - return ""; + + D_RETURN_(""); } void @@ -83,6 +87,8 @@ e_config_init(void) { char buf[PATH_MAX]; + D_ENTER; + #if 1 /* for now don't do this. i think a cp -r will be needed later anyway */ if (!e_file_is_dir(e_config_user_dir())) e_file_mkdir(e_config_user_dir()); sprintf(buf, "%sappearance", e_config_user_dir()); @@ -108,11 +114,15 @@ e_config_init(void) #if 0 ts(); #endif + + D_RETURN; } void e_config_set_user_dir(char *dir) { + D_ENTER; + strcpy(cfg_root, dir); /* reset the cached dir paths */ cfg_grabs_db[0] = 0; @@ -132,19 +142,24 @@ e_config_set_user_dir(char *dir) cfg_fonts_dir[0] = 0; /* init again - if the user hasnt got all the data */ e_config_init(); + + D_RETURN; } char * e_config_user_dir(void) { - if (cfg_user_dir[0]) return cfg_user_dir; - if (cfg_root[0]) return cfg_root; + D_ENTER; + + if (cfg_user_dir[0]) D_RETURN_(cfg_user_dir); + if (cfg_root[0]) D_RETURN_(cfg_root); #if 1 /* disabled for now - use system ones only */ sprintf(cfg_user_dir, "%s/.e/", e_file_home()); #else sprintf(cfg_user_dir, PACKAGE_DATA_DIR"/data/config/"); #endif - return cfg_user_dir; + + D_RETURN_(cfg_user_dir); } void @@ -157,6 +172,8 @@ e_config_type_add_node(E_Config_Base_Type *base, char *prefix, { E_Config_Node *cfg_node; + D_ENTER; + cfg_node = NEW(E_Config_Node, 1); ZERO(cfg_node, E_Config_Node, 1); @@ -171,6 +188,8 @@ e_config_type_add_node(E_Config_Base_Type *base, char *prefix, e_strdup(cfg_node->def_str, def_str); } base->nodes = evas_list_append(base->nodes, cfg_node); + + D_RETURN; } E_Config_Base_Type * @@ -178,9 +197,12 @@ e_config_type_new(void) { E_Config_Base_Type *t; + D_ENTER; + t = NEW(E_Config_Base_Type, 1); ZERO(t, E_Config_Base_Type, 1); - return t; + + D_RETURN_(t); } void * @@ -191,9 +213,14 @@ e_config_load(char *file, char *prefix, E_Config_Base_Type *type) Evas_List l; char *data; - if (!e_file_exists(file)) return NULL; + D_ENTER; + + if (!e_file_exists(file)) D_RETURN_(NULL); db = e_db_open_read(file); - if (!db) return NULL; + + if (!db) + D_RETURN_(NULL); + data = NEW(char, type->size); ZERO(data, char , type->size); for (l = type->nodes; l; l = l->next) @@ -272,7 +299,8 @@ e_config_load(char *file, char *prefix, E_Config_Base_Type *type) } } e_db_close(db); - return data; + + D_RETURN_(data); } @@ -299,6 +327,8 @@ void ts(void) E_Config_Base_Type *cf_list; E_Config_Base_Type *cf_element; + D_ENTER; + cf_element = e_config_type_new(); E_CONFIG_NODE(cf_element, "name", E_CFG_TYPE_STR, NULL, List_Element, name, 0, 0, "DEFAULT_NAME"); E_CONFIG_NODE(cf_element, "size", E_CFG_TYPE_INT, NULL, List_Element, size, 777, 0, NULL); @@ -336,6 +366,8 @@ void ts(void) } exit(0); } + + D_RETURN; } #endif diff --git a/src/cursors.c b/src/cursors.c index 9b5dc8d37..e5f431c04 100644 --- a/src/cursors.c +++ b/src/cursors.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "cursors.h" #include "config.h" #include "util.h" @@ -24,8 +25,10 @@ static void e_cursors_idle(void *data) { int change = 0; + + D_ENTER; - if (!cursor_change) return; + if (!cursor_change) D_RETURN; if ((prev_cursor) && (cur_cursor) && (strcmp(prev_cursor, cur_cursor))) change = 1; if ((prev_cursor) && (!cur_cursor)) @@ -39,14 +42,18 @@ e_cursors_idle(void *data) cur_cursor = NULL; cursor_change = 0; - return; + D_RETURN; UN(data); } static void e_cursors_set(char *type) { + D_ENTER; + e_cursors_display_in_window(0, type); + + D_RETURN; } static E_Cursor * @@ -54,6 +61,8 @@ e_cursors_find(char *type) { Evas_List l; + D_ENTER; + for (l = cursors; l; l = l->next) { E_Cursor *c; @@ -70,12 +79,12 @@ e_cursors_find(char *type) IF_FREE(c->type); ecore_cursor_free(c->cursor); FREE(c); - return NULL; + D_RETURN_(NULL); } - return c; + D_RETURN_(c); } } - return NULL; + D_RETURN_(NULL); } void @@ -83,6 +92,8 @@ e_cursors_display_in_window(Window win, char *type) { E_Cursor *c; + D_ENTER; + if (!type) type = "Default"; c = e_cursors_find(type); if (!c) @@ -222,23 +233,33 @@ e_cursors_display_in_window(Window win, char *type) ecore_cursor_set(win, c->cursor); else { - if (!strcmp(type, "Default")) return; + if (!strcmp(type, "Default")) D_RETURN; e_cursors_display_in_window(win, "Default"); } + + D_RETURN; } void e_cursors_display(char *type) { + D_ENTER; + IF_FREE(cur_cursor); e_strdup(cur_cursor, type); printf("%s\n", type); cursor_change = 1; + + D_RETURN; } void e_cursors_init(void) { + D_ENTER; + ecore_event_filter_idle_handler_add(e_cursors_idle, NULL); e_cursors_set("Default"); + + D_RETURN; } diff --git a/src/debug.c b/src/debug.c new file mode 100644 index 000000000..ecc8da545 --- /dev/null +++ b/src/debug.c @@ -0,0 +1,86 @@ +/* + +Copyright (C) 2000, 2001 Christian Kreibich . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies of the Software and its documentation and acknowledgment shall be +given in the documentation and software packages that this Software was +used. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +#if HAVE_CONFIG_H +# include +#endif + +#include +#include +#include +#include + +#include "debug.h" + + +static int calldepth = 0; + +static void debug_whitespace(int calldepth); +static void debug_print_info(void); + +static void +debug_whitespace(int calldepth) +{ + int i; + + for (i = 0; i < 2*calldepth; i++) + printf("-"); +} + + +static void +debug_print_info(void) +{ + printf("e17 dbg: "); +} + + + +void +e_debug_enter(const char *file, const char *func) +{ + + calldepth++; + + printf("ENTER "); + debug_print_info(); + debug_whitespace(calldepth); + printf("%s, %s()\n", file, func); + fflush(stdout); +} + + +void +e_debug_D_RETURN(const char *file, const char *func) +{ + printf("RETURN "); + debug_print_info(); + debug_whitespace(calldepth); + printf("%s, %s()\n", file, func); + fflush(stdout); + + calldepth--; +} + + diff --git a/src/debug.h b/src/debug.h new file mode 100644 index 000000000..e0e50d9cb --- /dev/null +++ b/src/debug.h @@ -0,0 +1,64 @@ +/* + +Copyright (C) 2000, 2001 Christian Kreibich . + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies of the Software and its documentation and acknowledgment shall be +given in the documentation and software packages that this Software was +used. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ +#ifndef E_DEBUG_H +#define E_DEBUG_H + +#include +#include + +#ifdef DEBUG + +#define D(fmt, args...) printf(fmt, ## args); +#else +#define D(msg) +#endif + +#ifdef DEBUG_NEST + +void e_debug_enter(const char *file, const char *func); +void e_debug_return(const char *file, const char *func); + +#define D_ENTER efsd_debug_enter(__FILE__, __FUNCTION__) + +#define D_RETURN \ +{ \ + efsd_debug_return(__FILE__, __FUNCTION__); \ + return; \ +} + +#define D_RETURN_(x) \ +{ \ + efsd_debug_return(__FILE__, __FUNCTION__); \ +\ + return x; \ +} +#else +#define D_ENTER +#define D_RETURN return +#define D_RETURN_(x) return (x) +#endif + +#endif + diff --git a/src/delayed.c b/src/delayed.c index afb311a92..4c1f25fe1 100644 --- a/src/delayed.c +++ b/src/delayed.c @@ -1,29 +1,65 @@ - +#include +#include "debug.h" #include "delayed.h" +static void +e_delayed_action_cleanup(E_Delayed_Action *eda) +{ + D_ENTER; + + e_delayed_action_cancel(eda); + e_observer_cleanup(E_OBSERVER(eda)); + + D_RETURN; +} + + +E_Delayed_Action * +e_delayed_action_new(Ecore_Event_Type event, + double delay, E_Delay_Func delay_func) +{ + E_Delayed_Action *eda = NULL; + + D_ENTER; + + eda = NEW(E_Delayed_Action, 1); + memset(eda, 0, sizeof(E_Delayed_Action)); + + e_observer_init(E_OBSERVER(eda), event, e_delayed_action_start, + (E_Cleanup_Func) e_delayed_action_cleanup); + + eda->delay = delay; + eda->delay_func = delay_func; + + D_RETURN_(eda); +} + + void -e_delayed_action_start(void *obs, void *obj) +e_delayed_action_start(E_Observer *obs, E_Observee *obj) { char event_name[1024]; - E_Delayed_Action *eda = obs; + E_Delayed_Action *eda = (E_Delayed_Action*) obs; - snprintf(event_name, 1024, "_e_delayed_action_notify(%d)", eda->e_event); + D_ENTER; + + snprintf(event_name, 1024, "_e_delayed_action_notify(%d)", obs->event); ecore_add_event_timer(event_name, eda->delay, eda->delay_func, 0, obj); + + D_RETURN; } + void -e_delayed_action_cancel(void *obs) +e_delayed_action_cancel(E_Delayed_Action *eda) { - E_Delayed_Action *eda = obs; char event_name[1024]; - snprintf(event_name, 1024, "_e_delayed_action_notify(%d)", eda->e_event); + + D_ENTER; + + snprintf(event_name, 1024, "_e_delayed_action_notify(%d)", E_OBSERVER(eda)->event); ecore_del_event_timer(event_name); -} - -void -e_delayed_action_free(void *obs) -{ - e_delayed_action_cancel(obs); - free(obs); + + D_RETURN; } diff --git a/src/delayed.h b/src/delayed.h index aa85c4b9d..e09a11ac2 100644 --- a/src/delayed.h +++ b/src/delayed.h @@ -2,26 +2,25 @@ #define E_DELAYED_H #include "e.h" +#include "observer.h" -typedef struct _E_Delayed_Action E_Delayed_Action; +typedef void (*E_Delay_Func)(int val, void *obj); -struct _E_Delayed_Action { - OBS_PROPERTIES; +typedef struct _e_delayed_action +{ + E_Observer obs; - double delay; - void (*delay_func)(int val, void *obj); -}; + double delay; + E_Delay_Func delay_func; -#define E_DELAYED_ACT_INIT(_e_da, _e_act, _e_delay, _e_act_cb) \ -{ \ - OBS_INIT(_e_da, _e_act, e_delayed_action_start, e_delayed_action_free); \ - _e_da->delay = _e_delay; \ - _e_da->delay_func = _e_act_cb; \ -} +} E_Delayed_Action; -void e_delayed_action_start(void *obs, void *obj); -void e_delayed_action_cancel(void *obs); -void e_delayed_action_free(void *obs); + +E_Delayed_Action *e_delayed_action_new(Ecore_Event_Type event, + double delay, E_Delay_Func delay_func); + +void e_delayed_action_start(E_Observer *obs, E_Observee *obj); +void e_delayed_action_cancel(E_Delayed_Action *eda); #endif diff --git a/src/desktops.c b/src/desktops.c index ba6b49a10..5fa0d7b97 100644 --- a/src/desktops.c +++ b/src/desktops.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "desktops.h" #include "config.h" #include "actions.h" @@ -6,6 +7,7 @@ #include "view.h" #include "icccm.h" #include "util.h" +#include "object.h" static Evas_List desktops = NULL; static Window e_base_win = 0; @@ -16,10 +18,11 @@ static void ecore_idle(void *data); static void ecore_idle(void *data) { + D_ENTER; /* FIXME -- Raster, how is this related to the desktop code? */ e_db_flush(); - return; + D_RETURN; UN(data); } @@ -27,7 +30,9 @@ void e_desktops_init(void) { E_Desktop *desk; - + + D_ENTER; + ecore_window_get_geometry(0, NULL, NULL, &screen_w, &screen_h); e_base_win = ecore_window_override_new(0, 0, 0, screen_w, screen_h); ecore_window_show(e_base_win); @@ -44,6 +49,8 @@ e_desktops_init(void) e_icccm_set_desk_area_size(0, 1, 1); e_icccm_set_desk_area(0, 0, 0); e_icccm_set_desk(0, 0); + + D_RETURN; } void @@ -53,8 +60,10 @@ e_desktops_scroll(E_Desktop *desk, int dx, int dy) int xd, yd, wd, hd; int grav, grav_stick; + D_ENTER; + /* set grav */ - if ((dx ==0) && (dy == 0)) return; + if ((dx ==0) && (dy == 0)) D_RETURN; desk->x -= dx; desk->y -= dy; xd = yd = wd = hd = 0; @@ -145,29 +154,36 @@ e_desktops_scroll(E_Desktop *desk, int dx, int dy) b->changed = 1; } } + + D_RETURN; } void -e_desktops_free(E_Desktop *desk) +e_desktops_cleanup(E_Desktop *desk) { + D_ENTER; + while (desk->windows) { E_Border *b; b = desk->windows->data; - e_action_stop_by_object(b, NULL, 0, 0, 0, 0); - OBJ_UNREF(b); - OBJ_IF_FREE(b) + e_action_stop_by_object(E_OBJECT(b), NULL, 0, 0, 0, 0); + + if (e_object_get_usecount(E_OBJECT(b)) == 1) { - ecore_window_reparent(b->win.client, 0, 0, 0); - e_icccm_release(b->win.client); - OBJ_FREE(b); + ecore_window_reparent(b->win.client, 0, 0, 0); + e_icccm_release(b->win.client); } } + ecore_window_destroy(desk->win.main); IF_FREE(desk->name); IF_FREE(desk->dir); - FREE(desk); + + e_object_cleanup(E_OBJECT(desk)); + + D_RETURN; } void @@ -176,7 +192,9 @@ e_desktops_init_file_display(E_Desktop *desk) E_View *v; E_Border *b; char buf[PATH_MAX]; - + + D_ENTER; + v = e_view_new(); v->size.w = desk->real.w; v->size.h = desk->real.h; @@ -213,6 +231,8 @@ e_desktops_init_file_display(E_Desktop *desk) b->client.is_desktop = 1; if (v->options.back_pixmap) e_view_update(v); + + D_RETURN; } E_Desktop * @@ -220,10 +240,12 @@ e_desktops_new(void) { E_Desktop *desk; + D_ENTER; + desk = NEW(E_Desktop, 1); ZERO(desk, E_Desktop, 1); - OBJ_INIT(desk, e_desktops_free); + e_object_init(E_OBJECT(desk), (E_Cleanup_Func) e_desktops_cleanup); desk->win.main = ecore_window_override_new(e_base_win, 0, 0, screen_w, screen_h); desk->win.container = ecore_window_override_new(desk->win.main, 0, 0, screen_w, screen_h); @@ -240,50 +262,71 @@ e_desktops_new(void) desktops = evas_list_append(desktops, desk); - return desk; + D_RETURN_(desk); } void e_desktops_add_border(E_Desktop *d, E_Border *b) { - if ((!d) || (!b)) return; + D_ENTER; + + if ((!d) || (!b)) D_RETURN; b->desk = d; b->client.desk = d->desk.desk; b->client.area.x = d->desk.area.x; b->client.area.y = d->desk.area.y; e_border_raise(b); + + D_RETURN; } void e_desktops_del_border(E_Desktop *d, E_Border *b) { - if ((!d) || (!b)) return; + D_ENTER; + + if ((!d) || (!b)) D_RETURN; d->windows = evas_list_remove(d->windows, b); b->desk = NULL; + + D_RETURN; } void e_desktops_delete(E_Desktop *d) { - OBJ_DO_FREE(d); + D_ENTER; + + e_object_unref(E_OBJECT(d)); + + D_RETURN; } void e_desktops_show(E_Desktop *d) { + D_ENTER; + ecore_window_show(d->win.main); + + D_RETURN; } void e_desktops_hide(E_Desktop *d) { + D_ENTER; + ecore_window_hide(d->win.main); + + D_RETURN; } int e_desktops_get_num(void) { - return 8; + D_ENTER; + D_RETURN_(8); } E_Desktop * @@ -292,28 +335,39 @@ e_desktops_get(int d) Evas_List l; int i; + D_ENTER; + for (i = 0, l = desktops; l; l = l->next, i++) { - if (i == d) return (E_Desktop *)l->data; + if (i == d) + D_RETURN_((E_Desktop *)l->data); } - return NULL; + + D_RETURN_(NULL); } int e_desktops_get_current(void) { E_Desktop *desk; - + + D_ENTER; + desk = e_desktops_get(0); if (desk) - return desk->desk.desk; - return 0; + D_RETURN_(desk->desk.desk); + + D_RETURN_(0); } void e_desktops_goto_desk(int d) { + D_ENTER; + e_desktops_goto(d, 0, 0); + + D_RETURN; } void @@ -321,6 +375,8 @@ e_desktops_goto(int d, int ax, int ay) { E_Desktop *desk; + D_ENTER; + desk = e_desktops_get(0); if (desk) { @@ -329,7 +385,7 @@ e_desktops_goto(int d, int ax, int ay) if ((d == desk->desk.desk) && (ax == desk->desk.area.x) && - (ay == desk->desk.area.y)) return; + (ay == desk->desk.area.y)) D_RETURN; dx = ax - desk->desk.area.x; dy = ay - desk->desk.area.y; @@ -371,4 +427,6 @@ e_desktops_goto(int d, int ax, int ay) e_icccm_set_desk_area(0, desk->desk.area.x, desk->desk.area.y); e_icccm_set_desk(0, desk->desk.desk); } + + D_RETURN; } diff --git a/src/desktops.h b/src/desktops.h index a9caf8013..62d196086 100644 --- a/src/desktops.h +++ b/src/desktops.h @@ -4,6 +4,7 @@ #include "e.h" #include "view.h" #include "border.h" +#include "object.h" #ifndef E_DESKTOPS_TYPEDEF #define E_DESKTOPS_TYPEDEF @@ -12,7 +13,7 @@ typedef struct _E_Desktop E_Desktop; struct _E_Desktop { - OBJ_PROPERTIES; + E_Object o; char *name; char *dir; diff --git a/src/e.h b/src/e.h index 0205ee04f..8630a9274 100644 --- a/src/e.h +++ b/src/e.h @@ -97,82 +97,6 @@ printf("%3.3f : %s()\n", __p->total, __p->func); \ #define E_PROF_DUMP #endif -/* Observer macros */ -#define OBS_PROPERTIES \ -Evas_List watched; \ -Ecore_Event_Type e_event; \ -void (*e_obs_notify)(void *_e_obs, void *_e_obj); \ -void (*e_obs_free)(void *_e_obs); -#define OBS_INIT(_e_obs, _e_event, _e_obs_notify, _e_obs_free) \ -{ \ - _e_obs->watched = NULL; \ - _e_obs->e_event = _e_event; \ - _e_obs->e_obs_notify = _e_obs_notify; \ - _e_obs->e_obs_free = _e_obs_free; \ -} -#define OBS_REGISTER(_e_obs, _e_obj) \ -{ \ - _e_obj->observers = evas_list_append(_e_obj->observers, _e_obs); \ - _e_obs->watched = evas_list_append(_e_obs->watched, _e_obj); \ -} -#define OBS_UNREGISTER(_e_obj, _e_obs) \ -{ \ - _e_obj->observers = evas_list_remove(_e_obj->observers, _e_obs); \ - _e_obs->watched = evas_list_remove(_e_obs->watched, _e_obj); \ -} -#define OBS_NOTIFY(_e_obj, _e_event) \ -{ \ - Evas_List obs; \ - obs = _e_obj->observers; \ - while (obs) { \ - if (((E_Observer *)obs->data)->e_event == ECORE_EVENT_MAX || \ - ((E_Observer *)obs->data)->e_event == _e_event) \ - ((E_Observer *)obs->data)->e_obs_notify(obs->data, _e_obj); \ - obs = obs->next; \ - } \ -} -#define OBS_FREE(_e_obs) \ -{ \ - E_Object *_e_obj; \ - E_Observer *_notify; \ - while (_e_obs->watched) { \ - _e_obj = _e_obj->watched->data; \ - OBS_UNREGISTER(_e_obj, _e_obs); \ - _e_obs->e_obs_free(_notify); \ - } \ -} - -/* object macros */ -#define OBJ_REF(_e_obj) _e_obj->references++ -#define OBJ_UNREF(_e_obj) _e_obj->references-- -#define OBJ_IF_FREE(_e_obj) if (_e_obj->references == 0) -#define OBJ_FREE(_e_obj) \ -{ \ - E_Observer *act; \ - while (_e_obj->observers) { \ - act = _e_obj->observers->data; \ - OBS_UNREGISTER(_e_obj, act); \ - } \ - _e_obj->e_obj_free(_e_obj); \ -} -#define OBJ_DO_FREE(_e_obj) \ -{ \ - OBJ_UNREF(_e_obj); \ - OBJ_IF_FREE(_e_obj) \ - { \ - OBJ_FREE(_e_obj); \ - } \ -} -#define OBJ_PROPERTIES \ -int references; \ -void (*e_obj_free) (void *e_obj); \ -Evas_List observers; -#define OBJ_INIT(_e_obj, _e_obj_free_func) \ -{ \ - _e_obj->references = 1; \ - _e_obj->e_obj_free = (void *) _e_obj_free_func; \ - _e_obj->observers = NULL; \ -} /* misc util macros */ #define INTERSECTS(x, y, w, h, xx, yy, ww, hh) \ @@ -184,19 +108,4 @@ Evas_List observers; (!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1))))) #define UN(_blah) _blah = 0 -/* data type prototypes... not actually used */ -typedef struct _E_Object E_Object; -typedef struct _E_Observer E_Observer; - -/* actual data struct members */ -struct _E_Object -{ - OBJ_PROPERTIES; -}; - -struct _E_Observer -{ - OBS_PROPERTIES; -}; - #endif diff --git a/src/e_ferite.c b/src/e_ferite.c index 4adc9491f..0a5875b1b 100644 --- a/src/e_ferite.c +++ b/src/e_ferite.c @@ -1,34 +1,51 @@ +#include "debug.h" #include "e_ferite.h" #include "e_ferite_gen_header.h" void e_ferite_init(void) { + D_ENTER; + printf( "Initialising ferite....\n" ); ferite_init( 0, NULL ); + + D_RETURN; } void e_ferite_deinit(void) { + D_ENTER; + printf( "Deinitialising ferite....\n" ); ferite_deinit(); + + D_RETURN; } int e_ferite_script_error( FeriteScript *script, char *errmsg, int val ) { + D_ENTER; + fprintf( stderr, "e17: ferite error: %s\n", errmsg ); - return 1; + + D_RETURN_(1); } int e_ferite_script_warning( FeriteScript *script, char *warnmsg ) { + D_ENTER; + fprintf( stderr, "e17: ferite warning: %s\n", warnmsg ); - return 1; + + D_RETURN_(1); } void e_ferite_run( char *txt ) { FeriteScript *script = NULL; + D_ENTER; + printf( "Compiling script `%s'\n", txt ); script = __ferite_compile_string( txt ); e_ferite_register( script, script->mainns ); @@ -38,4 +55,6 @@ void e_ferite_run( char *txt ) ferite_script_execute( script ); printf( "Cleaning up.\n" ); ferite_script_delete( script ); + + D_RETURN; } diff --git a/src/embed.c b/src/embed.c index f56fff02f..7ae6dfd64 100644 --- a/src/embed.c +++ b/src/embed.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "embed.h" typedef struct _Embed Embed_Private; @@ -17,9 +18,13 @@ e_embed_text_func_show(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_show(em->evas, em->clip_obj); e_text_show(em->text_obj); + + D_RETURN; } static void @@ -27,9 +32,13 @@ e_embed_text_func_hide(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_hide(em->evas, em->clip_obj); e_text_hide(em->text_obj); + + D_RETURN; } static void @@ -37,9 +46,13 @@ e_embed_text_func_move(void *_data, double x, double y) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_move(em->evas, em->clip_obj, x, y); e_text_move(em->text_obj, x, y); + + D_RETURN; } static void @@ -47,9 +60,13 @@ e_embed_text_func_resize(void *_data, double w, double h) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_resize(em->evas, em->clip_obj, w, h); e_text_resize(em->text_obj, w, h); + + D_RETURN; } static void @@ -57,9 +74,13 @@ e_embed_text_func_raise(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_raise(em->evas, em->clip_obj); e_text_raise(em->text_obj); + + D_RETURN; } static void @@ -67,9 +88,13 @@ e_embed_text_func_lower(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_lower(em->evas, em->clip_obj); e_text_lower(em->text_obj); + + D_RETURN; } static void @@ -77,9 +102,13 @@ e_embed_text_func_set_layer(void *_data, int l) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) evas_set_layer(em->evas, em->clip_obj, l); e_text_set_layer(em->text_obj, l); + + D_RETURN; } static void @@ -87,6 +116,8 @@ e_embed_text_func_set_clip(void *_data, Evas_Object clip) { Embed_Private *em; + D_ENTER; + em = _data; if (em->clip_obj) { @@ -102,11 +133,17 @@ e_embed_text_func_set_clip(void *_data, Evas_Object clip) else e_text_unset_clip(em->text_obj); } + + D_RETURN; } static void e_embed_text_func_set_color_class(void *_data, char *cc, int r, int g, int b, int a) { + D_ENTER; + + D_RETURN; + UN(_data); UN(cc); UN(r); @@ -120,10 +157,14 @@ e_embed_text_func_get_min_size(void *_data, double *w, double *h) { Embed_Private *em; + D_ENTER; + em = _data; e_text_get_min_size(em->text_obj, w, h); if (em->clip_x) *w = 0; if (em->clip_y) *h = 0; + + D_RETURN; } static void @@ -131,10 +172,14 @@ e_embed_text_func_get_max_size(void *_data, double *w, double *h) { Embed_Private *em; + D_ENTER; + em = _data; e_text_get_max_size(em->text_obj, w, h); if (em->clip_x) *w = 999999999; if (em->clip_y) *h = 999999999; + + D_RETURN; } /***/ @@ -144,6 +189,8 @@ e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text *text_obj, int cl { Embed_Private *em; + D_ENTER; + em = NEW(Embed_Private, 1); ZERO(em, Embed_Private, 1); em->o = o; @@ -171,7 +218,7 @@ e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text *text_obj, int cl e_embed_text_func_get_min_size, e_embed_text_func_get_max_size, em); - return em; + D_RETURN_(em); } /*****************************************************************************/ @@ -181,8 +228,12 @@ e_embed_image_func_show(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; evas_show(em->evas, em->image_obj); + + D_RETURN; } static void @@ -190,8 +241,12 @@ e_embed_image_func_hide(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; evas_hide(em->evas, em->image_obj); + + D_RETURN; } static void @@ -199,8 +254,12 @@ e_embed_image_func_move(void *_data, double x, double y) { Embed_Private *em; + D_ENTER; + em = _data; evas_move(em->evas, em->image_obj, x, y); + + D_RETURN; } static void @@ -208,9 +267,13 @@ e_embed_image_func_resize(void *_data, double w, double h) { Embed_Private *em; + D_ENTER; + em = _data; evas_resize(em->evas, em->image_obj, w, h); evas_set_image_fill(em->evas, em->image_obj, 0, 0, w, h); + + D_RETURN; } static void @@ -218,8 +281,12 @@ e_embed_image_func_raise(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; evas_raise(em->evas, em->image_obj); + + D_RETURN; } static void @@ -227,8 +294,12 @@ e_embed_image_func_lower(void *_data) { Embed_Private *em; + D_ENTER; + em = _data; evas_lower(em->evas, em->image_obj); + + D_RETURN; } static void @@ -236,8 +307,12 @@ e_embed_image_func_set_layer(void *_data, int l) { Embed_Private *em; + D_ENTER; + em = _data; evas_set_layer(em->evas, em->image_obj, l); + + D_RETURN; } static void @@ -245,11 +320,15 @@ e_embed_image_func_set_clip(void *_data, Evas_Object clip) { Embed_Private *em; + D_ENTER; + em = _data; if (clip) evas_set_clip(em->evas, em->image_obj, clip); else evas_unset_clip(em->evas, em->image_obj); + + D_RETURN; } static void @@ -257,9 +336,13 @@ e_embed_image_func_set_color_class(void *_data, char *cc, int r, int g, int b, i { Embed_Private *em; + D_ENTER; + em = _data; if ((cc) && (!strcmp(cc, "icon"))) evas_set_color(em->evas, em->image_obj, r, g, b, a); + + D_RETURN; } static void @@ -268,12 +351,16 @@ e_embed_image_func_get_min_size(void *_data, double *w, double *h) Embed_Private *em; int iw, ih; + D_ENTER; + em = _data; iw = 0; ih = 0; evas_get_image_size(em->evas, em->image_obj, &iw, &ih); if (w) *w = iw; if (h) *h = ih; + + D_RETURN; } static void @@ -282,10 +369,14 @@ e_embed_image_func_get_max_size(void *_data, double *w, double *h) Embed_Private *em; int iw, ih; + D_ENTER; + em = _data; evas_get_image_size(em->evas, em->image_obj, &iw, &ih); if (w) *w = iw; if (h) *h = ih; + + D_RETURN; } /***/ @@ -295,6 +386,8 @@ e_embed_image_object(Ebits_Object o, char *bit_name, Evas evas, Evas_Object imag { Embed_Private *em; + D_ENTER; + em = NEW(Embed_Private, 1); ZERO(em, Embed_Private, 1); em->o = o; @@ -313,7 +406,7 @@ e_embed_image_object(Ebits_Object o, char *bit_name, Evas evas, Evas_Object imag e_embed_image_func_get_min_size, e_embed_image_func_get_max_size, em); - return em; + D_RETURN_(em); } /*****/ @@ -323,7 +416,11 @@ e_embed_free(Embed emb) { Embed_Private *em; + D_ENTER; + em = emb; if (em->clip_obj) evas_del_object(em->evas, em->clip_obj); FREE(em); + + D_RETURN; } diff --git a/src/entry.c b/src/entry.c index 0d0371d76..208ef8985 100644 --- a/src/entry.c +++ b/src/entry.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "entry.h" #include "config.h" #include "util.h" @@ -19,6 +20,8 @@ e_clear_selection(Ecore_Event * ev) { Ecore_Event_Clear_Selection *e; Evas_List l; + + D_ENTER; e = ev->event; for (l = entries; l; l = l->next) @@ -35,6 +38,8 @@ e_clear_selection(Ecore_Event * ev) e_entry_configure(entry); } } + + D_RETURN; } static void @@ -43,6 +48,8 @@ e_paste_request(Ecore_Event * ev) Ecore_Event_Paste_Request *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = entries; l; l = l->next) { @@ -58,6 +65,8 @@ e_paste_request(Ecore_Event * ev) e_entry_insert_text(entry, type); } } + + D_RETURN; } static void @@ -66,6 +75,8 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) E_Entry *entry; int pos; + D_ENTER; + entry = _data; if ((_b == 2) && (!entry->mouse_down)) { @@ -99,6 +110,8 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) entry->select.start = -1; e_entry_configure(entry); } + + D_RETURN; UN(_o); } @@ -108,9 +121,13 @@ e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) E_Entry *entry; /* int pos; */ + D_ENTER; + entry = _data; if (_b == entry->mouse_down) entry->mouse_down = 0; e_entry_configure(entry); + + D_RETURN; UN(_e); UN(_o); UN(_x); @@ -122,6 +139,8 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Entry *entry; + D_ENTER; + entry = _data; if (entry->mouse_down > 0) { @@ -192,6 +211,8 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) } e_entry_configure(entry); } + + D_RETURN; UN(_o); UN(_b); UN(_y); @@ -203,6 +224,8 @@ e_entry_realize(E_Entry *entry) char *entries; char buf[PATH_MAX]; + D_ENTER; + entries = e_config_get("entries"); sprintf(buf, "%s/%s", entries, "base.bits.db"); entry->obj_base = ebits_load(buf); @@ -241,11 +264,15 @@ e_entry_realize(E_Entry *entry) evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_DOWN, e_entry_down_cb, entry); evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_UP, e_entry_up_cb, entry); evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_MOVE, e_entry_move_cb, entry); + + D_RETURN; } static void e_entry_unrealize(E_Entry *entry) { + D_ENTER; + if (entry->event_box) evas_del_object(entry->evas, entry->event_box); if (entry->text) evas_del_object(entry->evas, entry->text); if (entry->clip_box) evas_del_object(entry->evas, entry->clip_box); @@ -258,6 +285,8 @@ e_entry_unrealize(E_Entry *entry) entry->obj_base = NULL; entry->obj_cursor = NULL; entry->obj_selection = NULL; + + D_RETURN; } static void @@ -266,8 +295,10 @@ e_entry_configure(E_Entry *entry) int p1l, p1r, p1t, p1b; int p2l, p2r, p2t, p2b; - if (!entry->evas) return; - if (!entry->event_box) return; + D_ENTER; + + if (!entry->evas) D_RETURN; + if (!entry->event_box) D_RETURN; p1l = p1r = p1t = p1b = 0; if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b); p2l = p2r = p2t = p2b = 0; @@ -354,22 +385,32 @@ e_entry_configure(E_Entry *entry) if (entry->obj_selection) ebits_hide(entry->obj_selection); } + + D_RETURN; } void e_entry_init(void) { + D_ENTER; + ecore_event_filter_handler_add(ECORE_EVENT_PASTE_REQUEST, e_paste_request); ecore_event_filter_handler_add(ECORE_EVENT_CLEAR_SELECTION, e_clear_selection); + + D_RETURN; } void e_entry_free(E_Entry *entry) { + D_ENTER; + entries = evas_list_remove(entries, entry); e_entry_unrealize(entry); IF_FREE(entry->buffer); FREE(entry); + + D_RETURN; } E_Entry * @@ -377,19 +418,24 @@ e_entry_new(void) { E_Entry *entry; + D_ENTER; + entry = NEW(E_Entry, 1); ZERO(entry, E_Entry, 1); e_strdup(entry->buffer, ""); entry->select.start = -1; entry->end_width = 4; entries = evas_list_prepend(entries, entry); - return entry; + + D_RETURN_(entry); } void e_entry_handlecore_keypress(E_Entry *entry, Ecore_Event_Key_Down *e) { - if (!entry->focused) return; + D_ENTER; + + if (!entry->focused) D_RETURN; if (!strcmp(e->key, "Up")) { } @@ -497,11 +543,15 @@ e_entry_handlecore_keypress(E_Entry *entry, Ecore_Event_Key_Down *e) } } e_entry_configure(entry); + + D_RETURN; } void e_entry_set_evas(E_Entry *entry, Evas evas) { + D_ENTER; + if (entry->evas) e_entry_unrealize(entry); entry->evas = evas; e_entry_realize(entry); @@ -511,99 +561,137 @@ e_entry_set_evas(E_Entry *entry, Evas evas) entry->visible = 0; e_entry_show(entry); } + + D_RETURN; } void e_entry_show(E_Entry *entry) { - if (entry->visible) return; + D_ENTER; + + if (entry->visible) D_RETURN; entry->visible = 1; - if (!entry->evas) return; + if (!entry->evas) D_RETURN; if (entry->obj_base) ebits_show(entry->obj_base); if (entry->obj_cursor) ebits_show(entry->obj_cursor); if (entry->obj_selection) ebits_show(entry->obj_selection); evas_show(entry->evas, entry->event_box); evas_show(entry->evas, entry->clip_box); evas_show(entry->evas, entry->text); + + D_RETURN; } void e_entry_hide(E_Entry *entry) { - if (!entry->visible) return; + D_ENTER; + + if (!entry->visible) D_RETURN; entry->visible = 0; - if (!entry->evas) return; + if (!entry->evas) D_RETURN; if (entry->obj_base) ebits_hide(entry->obj_base); if (entry->obj_cursor) ebits_hide(entry->obj_cursor); if (entry->obj_selection) ebits_hide(entry->obj_selection); evas_hide(entry->evas, entry->event_box); evas_hide(entry->evas, entry->clip_box); evas_hide(entry->evas, entry->text); + + D_RETURN; } void e_entry_raise(E_Entry *entry) { + D_ENTER; + if (entry->obj_base) ebits_raise(entry->obj_base); evas_raise(entry->evas, entry->clip_box); evas_raise(entry->evas, entry->text); if (entry->obj_selection) ebits_raise(entry->obj_selection); if (entry->obj_cursor) ebits_raise(entry->obj_cursor); evas_raise(entry->evas, entry->event_box); + + D_RETURN; } void e_entry_lower(E_Entry *entry) { + D_ENTER; + evas_lower(entry->evas, entry->event_box); if (entry->obj_cursor) ebits_lower(entry->obj_cursor); if (entry->obj_selection) ebits_lower(entry->obj_selection); evas_lower(entry->evas, entry->text); evas_lower(entry->evas, entry->clip_box); if (entry->obj_base) ebits_lower(entry->obj_base); + + D_RETURN; } void e_entry_set_layer(E_Entry *entry, int l) { + D_ENTER; + if (entry->obj_base) ebits_set_layer(entry->obj_base, l); evas_set_layer(entry->evas, entry->clip_box, l); evas_set_layer(entry->evas, entry->text, l); if (entry->obj_selection) ebits_set_layer(entry->obj_selection, l); if (entry->obj_cursor) ebits_set_layer(entry->obj_cursor, l); evas_set_layer(entry->evas, entry->event_box, l); + + D_RETURN; } void e_entry_set_clip(E_Entry *entry, Evas_Object clip) { + D_ENTER; + evas_set_clip(entry->evas, entry->clip_box, clip); if (entry->obj_base) ebits_set_clip(entry->obj_base, clip); + + D_RETURN; } void e_entry_unset_clip(E_Entry *entry) { + D_ENTER; + evas_unset_clip(entry->evas, entry->clip_box); if (entry->obj_base) ebits_unset_clip(entry->obj_base); + + D_RETURN; } void e_entry_move(E_Entry *entry, int x, int y) { + D_ENTER; + entry->x = x; entry->y = y; e_entry_configure(entry); + + D_RETURN; } void e_entry_resize(E_Entry *entry, int w, int h) { + D_ENTER; + entry->w = w; entry->h = h; e_entry_configure(entry); + + D_RETURN; } void @@ -612,6 +700,8 @@ e_entry_query_max_size(E_Entry *entry, int *w, int *h) int p1l, p1r, p1t, p1b; int p2l, p2r, p2t, p2b; + D_ENTER; + p1l = p1r = p1t = p1b = 0; if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b); p2l = p2r = p2t = p2b = 0; @@ -619,6 +709,8 @@ e_entry_query_max_size(E_Entry *entry, int *w, int *h) if (w) *w = evas_get_text_width(entry->evas, entry->text) + p1l + p1r + p2l + p2r; if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b; + + D_RETURN; } void @@ -627,12 +719,16 @@ e_entry_max_size(E_Entry *entry, int *w, int *h) int p1l, p1r, p1t, p1b; int p2l, p2r, p2t, p2b; + D_ENTER; + p1l = p1r = p1t = p1b = 0; if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b); p2l = p2r = p2t = p2b = 0; if (entry->obj_cursor) ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b); if (w) *w = 8000; if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b; + + D_RETURN; } void @@ -641,12 +737,16 @@ e_entry_min_size(E_Entry *entry, int *w, int *h) int p1l, p1r, p1t, p1b; int p2l, p2r, p2t, p2b; + D_ENTER; + p1l = p1r = p1t = p1b = 0; if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b); p2l = p2r = p2t = p2b = 0; if (entry->obj_cursor) ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b); if (w) *w = p1l + p1r + p2l + p2r + entry->min_size; if (h) *h = evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b; + + D_RETURN; } void @@ -655,6 +755,8 @@ e_entry_set_size(E_Entry *entry, int w, int h) int p1l, p1r, p1t, p1b; int p2l, p2r, p2t, p2b; + D_ENTER; + p1l = p1r = p1t = p1b = 0; if (entry->obj_base) ebits_get_insets(entry->obj_base, &p1l, &p1r, &p1t, &p1b); p2l = p2r = p2t = p2b = 0; @@ -664,13 +766,17 @@ e_entry_set_size(E_Entry *entry, int w, int h) entry->min_size = w; e_entry_configure(entry); } + + D_RETURN; UN(h); } void e_entry_set_focus(E_Entry *entry, int focused) { - if (entry->focused == focused) return; + D_ENTER; + + if (entry->focused == focused) D_RETURN; entry->focused = focused; e_entry_configure(entry); if (entry->focused) @@ -683,11 +789,15 @@ e_entry_set_focus(E_Entry *entry, int focused) if (entry->func_focus_out) entry->func_focus_out(entry, entry->data_focus_out); } + + D_RETURN; } void e_entry_set_text(E_Entry *entry, const char *text) { + D_ENTER; + IF_FREE(entry->buffer); e_strdup(entry->buffer, text); evas_set_text(entry->evas, entry->text, entry->buffer); @@ -696,53 +806,79 @@ e_entry_set_text(E_Entry *entry, const char *text) e_entry_configure(entry); if (entry->func_changed) entry->func_changed(entry, entry->data_changed); + + D_RETURN; } const char * e_entry_get_text(E_Entry *entry) { - return entry->buffer; + D_ENTER; + + D_RETURN_(entry->buffer); } void e_entry_set_cursor(E_Entry *entry, int cursor_pos) { + D_ENTER; + entry->cursor_pos = cursor_pos; e_entry_configure(entry); + + D_RETURN; } int e_entry_get_cursor(E_Entry *entry) { - return entry->cursor_pos; + D_ENTER; + + D_RETURN_(entry->cursor_pos); } void e_entry_set_changed_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data) { + D_ENTER; + entry->func_changed = func; entry->data_changed = data; + + D_RETURN; } void e_entry_set_enter_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data) { + D_ENTER; + entry->func_enter = func; entry->data_enter = data; + + D_RETURN; } void e_entry_set_focus_in_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data) { + D_ENTER; + entry->func_focus_in = func; entry->data_focus_in = data; + + D_RETURN; } void e_entry_set_focus_out_callback(E_Entry *entry, void (*func) (E_Entry *_entry, void *_data), void *data) { + D_ENTER; + entry->func_focus_out = func; entry->data_focus_out = data; + + D_RETURN; } void @@ -750,7 +886,9 @@ e_entry_insert_text(E_Entry *entry, char *text) { char *str2; - if (!text) return; + D_ENTER; + + if (!text) D_RETURN; str2 = malloc(strlen(e_entry_get_text(entry)) + 1 + strlen(text)); str2[0] = 0; strncat(str2, entry->buffer, entry->cursor_pos); @@ -760,6 +898,8 @@ e_entry_insert_text(E_Entry *entry, char *text) free(str2); entry->cursor_pos+=strlen(text); e_entry_configure(entry); + + D_RETURN; } void @@ -767,6 +907,8 @@ e_entry_clear_selection(E_Entry *entry) { char *str2; + D_ENTER; + if (entry->select.start >= 0) { e_strdup(str2, e_entry_get_text(entry)); @@ -779,6 +921,8 @@ e_entry_clear_selection(E_Entry *entry) entry->select.start = -1; } e_entry_configure(entry); + + D_RETURN; } void @@ -786,11 +930,15 @@ e_entry_delete_to_left(E_Entry *entry) { char *str2; + D_ENTER; + e_strdup(str2, e_entry_get_text(entry)); strcpy(&(str2[entry->cursor_pos - 1]), &(entry->buffer[entry->cursor_pos])); entry->cursor_pos--; e_entry_set_text(entry, str2); e_entry_configure(entry); + + D_RETURN; } void @@ -798,16 +946,22 @@ e_entry_delete_to_right(E_Entry *entry) { char *str2; + D_ENTER; + e_strdup(str2, e_entry_get_text(entry)); strcpy(&(str2[entry->cursor_pos]), &(entry->buffer[entry->cursor_pos + 1])); e_entry_set_text(entry, str2); free(str2); e_entry_configure(entry); + + D_RETURN; } char * e_entry_get_selection(E_Entry *entry) { + D_ENTER; + if (entry->select.start >= 0) { char *str2; @@ -818,7 +972,8 @@ e_entry_get_selection(E_Entry *entry) len = strlen(entry->buffer) - entry->select.start; str2 = e_memdup(&(entry->buffer[entry->select.start]), len + 1); str2[len] = 0; - return str2; + D_RETURN_(str2); } - return NULL; + + D_RETURN_(NULL); } diff --git a/src/exec.c b/src/exec.c index 260989203..9afef21d0 100644 --- a/src/exec.c +++ b/src/exec.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "exec.h" #include "desktops.h" #include "util.h" @@ -8,8 +9,12 @@ static char **e_argv = NULL; void e_exec_set_args(int argc, char **argv) { + D_ENTER; + e_argc = argc; e_argv = argv; + + D_RETURN; } void @@ -18,6 +23,8 @@ e_exec_restart(void) int i, num; char exe[PATH_MAX]; + D_ENTER; + printf("e_exec_restart()\n"); /* unset events on root */ ecore_window_set_events(0, XEV_NONE); @@ -40,6 +47,8 @@ e_exec_restart(void) strcat(exe, " "); } execl("/bin/sh", "/bin/sh", "-c", exe, NULL); + + D_RETURN; } pid_t @@ -47,13 +56,16 @@ e_exec_run(char *exe) { pid_t pid; + D_ENTER; + pid = fork(); if (pid) - return pid; + D_RETURN_(pid); setsid(); execl("/bin/sh", "/bin/sh", "-c", exe, NULL); exit(0); - return 0; + + D_RETURN_(0); } pid_t @@ -61,14 +73,17 @@ e_exec_run_in_dir(char *exe, char *dir) { pid_t pid; + D_ENTER; + pid = fork(); if (pid) - return pid; + D_RETURN_(pid); chdir(dir); setsid(); execl("/bin/sh", "/bin/sh", "-c", exe, NULL); exit(0); - return 0; + + D_RETURN_(0); } pid_t @@ -80,10 +95,12 @@ e_exec_in_dir_with_env(char *exe, char *dir, int *launch_id_ret, char **env, cha char *exe2; pid_t pid; + D_ENTER; + launch_id++; if (launch_id_ret) *launch_id_ret = launch_id; pid = fork(); - if (pid) return pid; + if (pid) D_RETURN_(pid); chdir(dir); setsid(); if (env) @@ -108,5 +125,6 @@ e_exec_in_dir_with_env(char *exe, char *dir, int *launch_id_ret, char **env, cha execl("/bin/sh", "/bin/sh", "-c", exe2, NULL); exit(0); - return 0; + + D_RETURN_(0); } diff --git a/src/fs.c b/src/fs.c index 57459cbc6..152dcfe61 100644 --- a/src/fs.c +++ b/src/fs.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "fs.h" #include "exec.h" @@ -15,13 +16,17 @@ static void e_fs_flush_timeout(int val, void *data); static void e_fs_flush_timeout(int val, void *data) { - if (!ec) return; + D_ENTER; + + if (!ec) D_RETURN; if (efsd_commands_pending(ec) > 0) { if (efsd_flush(ec) > 0) ecore_add_event_timer("e_fs_flush_timeout()", 0.00, e_fs_flush_timeout, 0, NULL); } + + D_RETURN; UN(data); UN(val); } @@ -29,7 +34,11 @@ e_fs_flush_timeout(int val, void *data) static void e_fs_idle(void *data) { + D_ENTER; + e_fs_flush_timeout(0, NULL); + + D_RETURN; UN(data); } @@ -38,6 +47,8 @@ e_fs_child_handle(Ecore_Event *ev) { Ecore_Event_Child *e; + D_ENTER; + e = ev->event; printf("pid went splat! (%i)\n", e->pid); if (e->pid == efsd_pid) @@ -48,6 +59,8 @@ e_fs_child_handle(Ecore_Event *ev) efsd_pid = 0; _e_fs_restarter(1, NULL); } + + D_RETURN; } static void @@ -55,6 +68,8 @@ _e_fs_fd_handle(int fd) { double start, current; + D_ENTER; + start = ecore_get_time(); while ((ec) && efsd_events_pending(ec)) { @@ -92,12 +107,16 @@ _e_fs_fd_handle(int fd) break; } } + + D_RETURN; } static void _e_fs_restarter(int val, void *data) { - if (ec) return; + D_ENTER; + + if (ec) D_RETURN; ec = efsd_open(); @@ -131,6 +150,8 @@ _e_fs_restarter(int val, void *data) if (gap > 10.0) gap = 10.0; ecore_add_event_timer("e_fs_restarter", gap, _e_fs_restarter, val + 1, NULL); } + + D_RETURN; UN(data); } @@ -139,35 +160,47 @@ e_fs_add_restart_handler(void (*func) (void *data), void *data) { E_FS_Restarter *rs; + D_ENTER; + rs = NEW(E_FS_Restarter, 1); ZERO(rs, E_FS_Restarter, 1); rs->func = func; rs->data = data; fs_restart_handlers = evas_list_append(fs_restart_handlers, rs); - return rs; + D_RETURN_(rs); } void e_fs_del_restart_handler(E_FS_Restarter *rs) { + D_ENTER; + if (evas_list_find(fs_restart_handlers, rs)) { fs_restart_handlers = evas_list_remove(fs_restart_handlers, rs); FREE(rs); } + + D_RETURN; } void e_fs_add_event_handler(void (*func) (EfsdEvent *ev)) { - if (!func) return; + D_ENTER; + + if (!func) D_RETURN; fs_handlers = evas_list_append(fs_handlers, func); + + D_RETURN; } void e_fs_init(void) { + D_ENTER; + /* Hook in an fs handler that gets called whenever a child of this process exits. */ @@ -182,10 +215,14 @@ e_fs_init(void) */ ecore_event_filter_idle_handler_add(e_fs_idle, NULL); _e_fs_restarter(0, NULL); + + D_RETURN; } EfsdConnection * e_fs_get_connection(void) { - return ec; + D_ENTER; + + D_RETURN_(ec); } diff --git a/src/guides.c b/src/guides.c index d7b53396d..77ecbd5ca 100644 --- a/src/guides.c +++ b/src/guides.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "guides.h" #include "text.h" #include "config.h" @@ -48,7 +49,11 @@ static void e_guides_update(void); static void e_guides_idle(void *data) { + D_ENTER; + e_guides_update(); + + D_RETURN; UN(data); } @@ -60,7 +65,9 @@ e_guides_update(void) char *font_dir; int redraw; - if (!guides.changed) return; + D_ENTER; + + if (!guides.changed) D_RETURN; redraw = 0; if (guides.prev.visible != guides.current.visible) @@ -474,96 +481,136 @@ e_guides_update(void) } } guides.prev = guides.current; + + D_RETURN; } void e_guides_show(void) { - if (guides.current.visible) return; + D_ENTER; + + if (guides.current.visible) D_RETURN; guides.changed = 1; guides.current.visible = 1; + + D_RETURN; } void e_guides_hide(void) { - if (!guides.current.visible) return; + D_ENTER; + + if (!guides.current.visible) D_RETURN; guides.changed = 1; guides.current.visible = 0; + + D_RETURN; } void e_guides_move(int x, int y) { + D_ENTER; + if ((guides.current.x == x) && - (guides.current.y == y)) return; + (guides.current.y == y)) D_RETURN; guides.changed = 1; guides.current.x = x; guides.current.y = y; + + D_RETURN; } void e_guides_resize(int w, int h) { + D_ENTER; + if ((guides.current.w == w) && - (guides.current.h == h)) return; + (guides.current.h == h)) D_RETURN; guides.changed = 1; guides.current.w = w; guides.current.h = h; + + D_RETURN; } void e_guides_display_text(char *text) { + D_ENTER; + if ((guides.current.display.text) && (text) && - (!strcmp(guides.current.display.text, text))) return; + (!strcmp(guides.current.display.text, text))) D_RETURN; guides.changed = 1; IF_FREE(guides.current.display.text); guides.current.display.text = NULL; guides.prev.display.text = (char *)1; e_strdup(guides.current.display.text, text); + + D_RETURN; } void e_guides_display_icon(char *icon) { + D_ENTER; + if ((guides.current.display.icon) && (icon) && - (!strcmp(guides.current.display.icon, icon))) return; + (!strcmp(guides.current.display.icon, icon))) D_RETURN; guides.changed = 1; IF_FREE(guides.current.display.icon); guides.current.display.icon = NULL; guides.prev.display.icon = (char *)1; e_strdup(guides.current.display.icon, icon); + + D_RETURN; } void e_guides_set_display_location(E_Guides_Location loc) { - if (guides.current.display.loc == loc) return; + D_ENTER; + + if (guides.current.display.loc == loc) D_RETURN; guides.changed = 1; guides.current.display.loc = loc; + + D_RETURN; } void e_guides_set_display_alignment(double x, double y) { + D_ENTER; + if ((guides.current.display.align.x == x) && - (guides.current.display.align.y == y)) return; + (guides.current.display.align.y == y)) D_RETURN; guides.changed = 1; guides.current.display.align.x = x; guides.current.display.align.y = y; + + D_RETURN; } void e_guides_set_mode(E_Guides_Mode mode) { - if (guides.current.mode == mode) return; + D_ENTER; + + if (guides.current.mode == mode) D_RETURN; guides.changed = 1; guides.current.mode = mode; + + D_RETURN; } void e_guides_init(void) { + D_ENTER; + guides.changed = 0; guides.current.display.loc = E_GUIDES_DISPLAY_LOCATION_SCREEN_MIDDLE; @@ -593,4 +640,6 @@ void e_guides_init(void) guides.disp.image = NULL; ecore_event_filter_idle_handler_add(e_guides_idle, NULL); + + D_RETURN; } diff --git a/src/icccm.c b/src/icccm.c index 8da3a5d24..80f720df8 100644 --- a/src/icccm.c +++ b/src/icccm.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "e.h" #include "border.h" #include "icccm.h" @@ -48,7 +49,11 @@ MWMHints; void e_icccm_move_resize(Window win, int x, int y, int w, int h) { + D_ENTER; + ecore_window_send_event_move_resize(win, x, y, w, h); + + D_RETURN; } void @@ -60,6 +65,8 @@ e_icccm_delete(Window win) int size; int del_win = 0; + D_ENTER; + ECORE_ATOM(a_wm_delete_window, "WM_DELETE_WINDOW"); ECORE_ATOM(a_wm_protocols, "WM_PROTOCOLS"); @@ -87,6 +94,8 @@ e_icccm_delete(Window win) { ecore_window_kill_client(win); } + + D_RETURN; } void @@ -95,10 +104,14 @@ e_icccm_state_mapped(Window win) static Atom a_wm_state = 0; unsigned int data[2]; + D_ENTER; + ECORE_ATOM(a_wm_state, "WM_STATE"); data[0] = NormalState; data[1] = 0; ecore_window_property_set(win, a_wm_state, a_wm_state, 32, data, 2); + + D_RETURN; } void @@ -107,10 +120,14 @@ e_icccm_state_iconified(Window win) static Atom a_wm_state = 0; unsigned int data[2]; + D_ENTER; + ECORE_ATOM(a_wm_state, "WM_STATE"); data[0] = IconicState; data[1] = 0; ecore_window_property_set(win, a_wm_state, a_wm_state, 32, data, 2); + + D_RETURN; } void @@ -119,22 +136,34 @@ e_icccm_state_withdrawn(Window win) static Atom a_wm_state = 0; unsigned int data[2]; + D_ENTER; + ECORE_ATOM(a_wm_state, "WM_STATE"); data[0] = WithdrawnState; data[1] = 0; ecore_window_property_set(win, a_wm_state, a_wm_state, 32, data, 2); + + D_RETURN; } void e_icccm_adopt(Window win) { + D_ENTER; + ecore_window_add_to_save_set(win); + + D_RETURN; } void e_icccm_release(Window win) { + D_ENTER; + ecore_window_del_from_save_set(win); + + D_RETURN; } void @@ -143,6 +172,8 @@ e_icccm_get_pos_info(Window win, E_Border *b) XSizeHints hint; int mask; + D_ENTER; + if (ecore_window_get_wm_size_hints(win, &hint, &mask)) { if ((hint.flags & USPosition) || ((hint.flags & PPosition))) @@ -164,6 +195,8 @@ e_icccm_get_pos_info(Window win, E_Border *b) b->client.pos.requested = 0; } } + + D_RETURN; } void @@ -174,6 +207,8 @@ e_icccm_get_size_info(Window win, E_Border *b) int mask; XSizeHints hint; + D_ENTER; + grav = NorthWestGravity; mask = 0; min_w = 0; @@ -238,6 +273,8 @@ e_icccm_get_size_info(Window win, E_Border *b) b->client.min.aspect = aspect_min; b->client.max.aspect = aspect_max; b->changed = 1; + + D_RETURN; } void @@ -247,6 +284,8 @@ e_icccm_get_mwm_hints(Window win, E_Border *b) MWMHints *mwmhints; int size; + D_ENTER; + ECORE_ATOM(a_motif_wm_hints, "_MOTIF_WM_HINTS"); mwmhints = ecore_window_property_get(win, a_motif_wm_hints, a_motif_wm_hints, &size); @@ -258,7 +297,7 @@ e_icccm_get_mwm_hints(Window win, E_Border *b) if (num < PROP_MWM_HINTS_ELEMENTS) { FREE(mwmhints); - return; + D_RETURN; } if (mwmhints->flags & MWM_HINTS_DECORATIONS) { @@ -278,6 +317,8 @@ e_icccm_get_mwm_hints(Window win, E_Border *b) } FREE(mwmhints); } + + D_RETURN; } void @@ -287,6 +328,8 @@ e_icccm_get_layer(Window win, E_Border *b) int *props; int size; + D_ENTER; + ECORE_ATOM(a_win_layer, "_WIN_LAYER"); props = ecore_window_property_get(win, a_win_layer, XA_CARDINAL, &size); @@ -298,6 +341,8 @@ e_icccm_get_layer(Window win, E_Border *b) if (num > 0) b->client.layer = props[0]; FREE(props); } + + D_RETURN; } void @@ -305,6 +350,8 @@ e_icccm_get_title(Window win, E_Border *b) { char *title; + D_ENTER; + title = ecore_window_get_title(win); if (b->client.title) @@ -312,7 +359,7 @@ e_icccm_get_title(Window win, E_Border *b) if ((title) && (!strcmp(title, b->client.title))) { FREE(title); - return; + D_RETURN; } b->changed = 1; FREE(b->client.title); @@ -320,12 +367,16 @@ e_icccm_get_title(Window win, E_Border *b) b->client.title = NULL; if (title) b->client.title = title; else e_strdup(b->client.title, "No Title"); + + D_RETURN; } void e_icccm_get_class(Window win, E_Border *b) { + D_ENTER; + IF_FREE(b->client.name); IF_FREE(b->client.class); b->client.name = NULL; @@ -333,43 +384,65 @@ e_icccm_get_class(Window win, E_Border *b) ecore_window_get_name_class(win, &(b->client.name), &(b->client.class)); if (!b->client.name) e_strdup(b->client.name, "Unknown"); if (!b->client.class) e_strdup(b->client.class, "Unknown"); + + D_RETURN; } void e_icccm_get_hints(Window win, E_Border *b) { + D_ENTER; + ecore_window_get_hints(win, &(b->client.takes_focus), &(b->client.initial_state), NULL, NULL, NULL, &(b->client.group)); + + D_RETURN; } void e_icccm_get_machine(Window win, E_Border *b) { + D_ENTER; + IF_FREE(b->client.machine); b->client.machine = NULL; b->client.machine = ecore_window_get_machine(win); + + D_RETURN; } void e_icccm_get_command(Window win, E_Border *b) { + D_ENTER; + IF_FREE(b->client.command); b->client.command = NULL; b->client.command = ecore_window_get_command(win); + + D_RETURN; } void e_icccm_get_icon_name(Window win, E_Border *b) { + D_ENTER; + IF_FREE(b->client.icon_name); b->client.icon_name = NULL; b->client.icon_name = ecore_window_get_icon_name(win); + + D_RETURN; } void e_icccm_get_state(Window win, E_Border *b) { + D_ENTER; + + + D_RETURN; } void @@ -378,12 +451,16 @@ e_icccm_set_frame_size(Window win, int l, int r, int t, int b) static Atom a_e_frame_size = 0; int props[4]; + D_ENTER; + ECORE_ATOM(a_e_frame_size, "_E_FRAME_SIZE"); props[0] = l; props[1] = r; props[2] = t; props[3] = b; ecore_window_property_set(win, a_e_frame_size, XA_CARDINAL, 32, props, 4); + + D_RETURN; } void @@ -392,10 +469,14 @@ e_icccm_set_desk_area(Window win, int ax, int ay) static Atom a_win_area = 0; int props[2]; + D_ENTER; + ECORE_ATOM(a_win_area, "_WIN_AREA"); props[0] = ax; props[1] = ay; ecore_window_property_set(win, a_win_area, XA_CARDINAL, 32, props, 2); + + D_RETURN; } void @@ -404,10 +485,14 @@ e_icccm_set_desk_area_size(Window win, int ax, int ay) static Atom a_win_area_count = 0; int props[2]; + D_ENTER; + ECORE_ATOM(a_win_area_count, "_WIN_AREA_COUNT"); props[0] = ax; props[1] = ay; ecore_window_property_set(win, a_win_area_count, XA_CARDINAL, 32, props, 2); + + D_RETURN; } void @@ -416,9 +501,13 @@ e_icccm_set_desk(Window win, int d) static Atom a_win_workspace = 0; int props[2]; + D_ENTER; + ECORE_ATOM(a_win_workspace, "_WIN_WORKSPACE"); props[0] = d; ecore_window_property_set(win, a_win_workspace, XA_CARDINAL, 32, props, 1); + + D_RETURN; } int @@ -426,17 +515,23 @@ e_icccm_is_shaped(Window win) { int w, h, num; int shaped = 1; - XRectangle *rect; + + D_ENTER; + ecore_window_get_geometry(win, NULL, NULL, &w, &h); rect = ecore_window_get_shape_rectangles(win, &num); - if (!rect) return 1; + + if (!rect) + D_RETURN_(1); + if ((num == 1) && (rect[0].x == 0) && (rect[0].y == 0) && (rect[0].width == w) && (rect[0].height == h)) shaped = 0; XFree(rect); - return shaped; + + D_RETURN_(shaped); } void @@ -452,6 +547,8 @@ e_icccm_handle_property_change(Atom a, E_Border *b) static Atom a_wm_icon_name = 0; static Atom a_wm_state = 0; + D_ENTER; + ECORE_ATOM(a_wm_normal_hints, "WM_NORMAL_HINTS"); ECORE_ATOM(a_motif_wm_hints, "_MOTIF_WM_HINTS"); ECORE_ATOM(a_wm_name, "WM_NAME"); @@ -471,18 +568,26 @@ e_icccm_handle_property_change(Atom a, E_Border *b) else if (a == a_wm_command) e_icccm_get_command(b->win.client, b); else if (a == a_wm_icon_name) e_icccm_get_icon_name(b->win.client, b); else if (a == a_wm_state) e_icccm_get_state(b->win.client, b); + + D_RETURN; } void e_icccm_handle_client_message(Ecore_Event_Message *e) { - return; + D_ENTER; + + D_RETURN; UN(e); } void e_icccm_advertise_e_compat(void) { + D_ENTER; + + + D_RETURN; } void @@ -491,10 +596,14 @@ e_icccm_advertise_mwm_compat(void) static Atom a_motif_wm_info = 0; int props[2]; + D_ENTER; + ECORE_ATOM(a_motif_wm_info, "_MOTIF_WM_INFO"); props[0] = 2; props[0] = ecore_window_root(); ecore_window_property_set(0, a_motif_wm_info, a_motif_wm_info, 32, props, 2); + + D_RETURN; } void @@ -508,6 +617,8 @@ e_icccm_advertise_gnome_compat(void) int props[32]; Window win; + D_ENTER; + ECORE_ATOM(a_win_protocols, "_WIN_PROTOCOLS"); ECORE_ATOM(a_win_layer, "_WIN_LAYER"); props[0] = a_win_protocols; @@ -523,14 +634,24 @@ e_icccm_advertise_gnome_compat(void) props[0] = win; ecore_window_property_set(win, a_win_supporting_wm_check, XA_CARDINAL, 32, props, 1); ecore_window_property_set(0, a_win_supporting_wm_check, XA_CARDINAL, 32, props, 1); + + D_RETURN; } void e_icccm_advertise_kde_compat(void) { + D_ENTER; + + + D_RETURN; } void e_icccm_advertise_net_compat(void) { + D_ENTER; + + + D_RETURN; } diff --git a/src/iconbar.c b/src/iconbar.c index 9adaf7923..ef8b1c8e4 100644 --- a/src/iconbar.c +++ b/src/iconbar.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "iconbar.h" #include "util.h" @@ -26,12 +27,59 @@ static void ib_mouse_out(void *data, Evas _e, Evas_Object _o, int _b, int _x, in static void ib_mouse_down(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y); static void ib_mouse_up(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y); +static void e_iconbar_icon_cleanup(E_Iconbar_Icon *ic); + /* NB: comments here for illustration & helping people understand E's code */ /* This is a start of the comments. if you feel they are not quite good */ /* as you figure things out and if you think they could be more helpful */ /* please feel free to add to them to make them easier to read and be more */ /* helpful. */ +/** + * e_iconbar_cleanup - Iconbar destructor. + * @ib: The iconbar to be cleaned up. + * + * How do we free these pesky little urchins... + */ +static void +e_iconbar_cleanup(E_Iconbar *ib) +{ + char buf[PATH_MAX]; + + D_ENTER; + + /* tell the view we attached to that somehting in it changed. this way */ + /* the view will now it needs to redraw */ + ib->view->changed = 1; + /* free up our ebits */ + if (ib->bit) ebits_free(ib->bit); + /* if we have any icons... */ + if (ib->icons) + { + Evas_List l; + + /* go thru the list of icon and unref each one.. ie - free it */ + for (l = ib->icons; l; l = l->next) + { + E_Iconbar_Icon *ic; + + ic = l->data; + e_object_unref(E_OBJECT(ic)); + } + /* free the list itself */ + evas_list_free(ib->icons); + } + /* delete any timers intended to work on this iconbar */ + sprintf(buf, "iconbar_reload:%s", ib->view->dir); + ecore_del_event_timer(buf); + + /* call the destructor of the base class */ + e_object_cleanup(E_OBJECT(ib)); + + D_RETURN; +} + + /** * e_iconbar_init - Init function * @@ -40,6 +88,8 @@ static void ib_mouse_up(void *data, Evas _e, Evas_Object _o, int _b, int _x, int void e_iconbar_init() { + D_ENTER; + /* we set up config structure and types so the config system can just */ /* read a db and dump it right into memory - including lists of stuff */ @@ -59,6 +109,8 @@ e_iconbar_init() /* the list */ cf_iconbar = e_config_type_new(); E_CONFIG_NODE(cf_iconbar, "icons", E_CFG_TYPE_LIST, cf_iconbar_icon, E_Iconbar, icons, 0, 0, NULL); + + D_RETURN; } /** @@ -72,6 +124,8 @@ e_iconbar_new(E_View *v) char buf[PATH_MAX]; E_Iconbar *ib; + D_ENTER; + /* first we want to load the iconbar data itself - ie the config info */ /* for what icons we have and what they execute */ sprintf(buf, "%s/.e_iconbar.db", v->dir); @@ -89,11 +143,11 @@ e_iconbar_new(E_View *v) /* flush edb cached handled */ e_db_flush(); /* no iconbar config loaded ? return NULL */ - if (!ib) return NULL; + if (!ib) D_RETURN_(NULL); /* now that the config system has doe the loading. we need to init the */ /* object and set up ref counts and free method */ - OBJ_INIT(ib, e_iconbar_free); + e_object_init(E_OBJECT(ib), (E_Cleanup_Func) e_iconbar_cleanup); /* the iconbar needs to know what view it's in */ ib->view = v; @@ -105,7 +159,8 @@ e_iconbar_new(E_View *v) ic = l->data; /* and init the iocnbar icon object */ - OBJ_INIT(ic, e_iconbar_icon_free); + e_object_init(E_OBJECT(ic), (E_Cleanup_Func) e_iconbar_icon_cleanup); + /* and have the iconbar icon knwo what iconbar it belongs to */ ic->iconbar = ib; } @@ -118,62 +173,26 @@ e_iconbar_new(E_View *v) if (!ib->bit) { /* unref the iconbar (and thus it will get freed and all icons in it */ - OBJ_DO_FREE(ib); + e_object_unref(E_OBJECT(ib)); /* return NULL - no iconbar worth doing here if we don't know where */ /* to put it */ - return NULL; + D_RETURN_(NULL); } /* aaah. our nicely constructed iconbar data struct with all the goodies */ /* we need. return it. she's ready for use. */ - return ib; + D_RETURN_(ib); } -/** - * e_iconbar_free - Iconbar destructor. - * @ib: The iconbar to be freed - * - * How do we free these pesky little urchins... - */ -void -e_iconbar_free(E_Iconbar *ib) -{ - char buf[PATH_MAX]; - - /* tell the view we attached to that somehting in it changed. this way */ - /* the view will now it needs to redraw */ - ib->view->changed = 1; - /* free up our ebits */ - if (ib->bit) ebits_free(ib->bit); - /* if we have any icons... */ - if (ib->icons) - { - Evas_List l; - - /* go thru the list of icon and unref each one.. ie - free it */ - for (l = ib->icons; l; l = l->next) - { - E_Iconbar_Icon *ic; - - ic = l->data; - OBJ_DO_FREE(ic); - } - /* free the list itself */ - evas_list_free(ib->icons); - } - /* delete any timers intended to work on this iconbar */ - sprintf(buf, "iconbar_reload:%s", ib->view->dir); - ecore_del_event_timer(buf); - /* free the iconbar struct */ - FREE(ib); -} /** - * e_iconbar_icon_free -- Iconbar icon destructor + * e_iconbar_icon_cleanup -- Iconbar icon destructor * @ic: The icon that is to be freed */ -void -e_iconbar_icon_free(E_Iconbar_Icon *ic) +static void +e_iconbar_icon_cleanup(E_Iconbar_Icon *ic) { + D_ENTER; + /* if we have an imageobject. nuke it */ if (ic->image) evas_del_object(ic->iconbar->view->evas, ic->image); /* free strings ... if they exist */ @@ -186,8 +205,11 @@ e_iconbar_icon_free(E_Iconbar_Icon *ic) FREE(ic->hi.timer); } if (ic->hi.image) evas_del_object(ic->iconbar->view->evas, ic->hi.image); - /* nuke that struct */ - FREE(ic); + + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(ic)); + + D_RETURN; } /** @@ -203,6 +225,8 @@ e_iconbar_realize(E_Iconbar *ib) { Evas_List l; + D_ENTER; + /* go thru every icon in the iconbar */ for (l = ib->icons; l; l = l->next) { @@ -254,6 +278,8 @@ e_iconbar_realize(E_Iconbar *ib) /* but fixes the iconbar so its the size of the view, in the right */ /* place and arranges the icons in their right spots */ e_iconbar_fix(ib); + + D_RETURN; } /** @@ -269,6 +295,8 @@ e_iconbar_fix(E_Iconbar *ib) Evas_List l; double ix, iy, aw, ah; + D_ENTER; + /* move the ebit to 0,0 */ ebits_move(ib->bit, 0, 0); /* resize it to fill the whole view. the internal geometry of the */ @@ -350,6 +378,8 @@ e_iconbar_fix(E_Iconbar *ib) iy += h; } } + + D_RETURN; } /** @@ -365,6 +395,8 @@ e_iconbar_fix(E_Iconbar *ib) void e_iconbar_file_add(E_View *v, char *file) { + D_ENTER; + /* is the file of interest ? */ if ((!strcmp(".e_iconbar.db", file)) || (!strcmp(".e_iconbar.bits.db", file))) @@ -376,6 +408,8 @@ e_iconbar_file_add(E_View *v, char *file) /* in 0.5 secs call our timout handler */ ecore_add_event_timer(buf, 0.5, ib_reload_timeout, 0, v); } + + D_RETURN; } /** @@ -388,6 +422,8 @@ e_iconbar_file_add(E_View *v, char *file) void e_iconbar_file_delete(E_View *v, char *file) { + D_ENTER; + /* is the file of interest */ if ((!strcmp(".e_iconbar.db", file)) || (!strcmp(".e_iconbar.bits.db", file))) @@ -396,10 +432,12 @@ e_iconbar_file_delete(E_View *v, char *file) /* nuked. no need to keep it around. */ if (v->iconbar) { - OBJ_DO_FREE(v->iconbar); + e_object_unref(E_OBJECT(v->iconbar)); v->iconbar = NULL; } } + + D_RETURN; } /** @@ -412,6 +450,8 @@ e_iconbar_file_delete(E_View *v, char *file) void e_iconbar_file_change(E_View *v, char *file) { + D_ENTER; + /* is the file that changed of interest */ if ((!strcmp(".e_iconbar.db", file)) || (!strcmp(".e_iconbar.bits.db", file))) @@ -423,6 +463,8 @@ e_iconbar_file_change(E_View *v, char *file) /* in 0.5 secsm call the realod timeout */ ecore_add_event_timer(buf, 0.5, ib_reload_timeout, 0, v); } + + D_RETURN; } @@ -436,16 +478,23 @@ ib_reload_timeout(int val, void *data) { E_View *v; + D_ENTER; + /* get our view pointer */ v = (E_View *)data; + /* if we have an iconbar.. well nuke it */ - if (v->iconbar) OBJ_DO_FREE(v->iconbar); - v->iconbar = NULL; + if (e_object_unref(E_OBJECT(v->iconbar)) == 0) + v->iconbar = NULL; + /* try load a new iconbar */ if (!v->iconbar) v->iconbar = e_iconbar_new(v); + /* if the iconbar loaded and theres an evas - we're realized */ /* so realize the iconbar */ if ((v->iconbar) && (v->evas)) e_iconbar_realize(v->iconbar); + + D_RETURN; } /* this timeout is responsible for doing the mouse over animation */ @@ -455,6 +504,8 @@ ib_timeout(int val, void *data) E_Iconbar_Icon *ic; double t; + D_ENTER; + /* get the iconbar icon we are dealign with */ ic = (E_Iconbar_Icon *)data; /* val <= 0 AND we're hilited ? first call as a timeout handler. */ @@ -564,6 +615,8 @@ ib_timeout(int val, void *data) ecore_add_event_timer(ic->hi.timer, 0.05, ib_timeout, val, data); /* flag the view that we changed */ ic->iconbar->view->changed = 1; + + D_RETURN; } /* called when an ebits object bit needs to be shown */ @@ -573,6 +626,8 @@ ib_bits_show(void *data) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* show all the icons */ for (l = ib->icons; l; l = l->next) @@ -582,6 +637,8 @@ ib_bits_show(void *data) ic = l->data; evas_show(ic->iconbar->view->evas, ic->image); } + + D_RETURN; } /* called when an ebit object bit needs to hide */ @@ -591,6 +648,8 @@ ib_bits_hide(void *data) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* hide all the icons */ for (l = ib->icons; l; l = l->next) @@ -600,6 +659,8 @@ ib_bits_hide(void *data) ic = l->data; evas_hide(ic->iconbar->view->evas, ic->image); } + + D_RETURN; } /* called when an ebit objetc bit needs to move */ @@ -609,10 +670,14 @@ ib_bits_move(void *data, double x, double y) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* dont do anything.. just record the geometry. we'll deal with it later */ ib->icon_area.x = x; ib->icon_area.y = y; + + D_RETURN; } /* called when an ebit object bit needs to resize */ @@ -622,10 +687,14 @@ ib_bits_resize(void *data, double w, double h) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* dont do anything.. just record the geometry. we'll deal with it later */ ib->icon_area.w = w; ib->icon_area.h = h; + + D_RETURN; } /* called when the ebits object bit needs to be raised */ @@ -635,6 +704,8 @@ ib_bits_raise(void *data) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* raise all the icons */ for (l = ib->icons; l; l = l->next) @@ -644,6 +715,8 @@ ib_bits_raise(void *data) ic = l->data; evas_raise(ic->iconbar->view->evas, ic->image); } + + D_RETURN; } /* called when the ebits object bit needs to be lowered */ @@ -653,6 +726,8 @@ ib_bits_lower(void *data) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* lower all the icons */ for (l = ib->icons; l; l = l->next) @@ -662,6 +737,8 @@ ib_bits_lower(void *data) ic = l->data; evas_lower(ic->iconbar->view->evas, ic->image); } + + D_RETURN; } /* called when the ebits object bit needs to change layers */ @@ -671,6 +748,8 @@ ib_bits_set_layer(void *data, int lay) E_Iconbar *ib; Evas_List l; + D_ENTER; + ib = (E_Iconbar *)data; /* set the layer for all the icons */ for (l = ib->icons; l; l = l->next) @@ -680,6 +759,8 @@ ib_bits_set_layer(void *data, int lay) ic = l->data; evas_set_layer(ic->iconbar->view->evas, ic->image, lay); } + + D_RETURN; } /* not used... err.. ebits clips for us to the maximum allowed space of */ @@ -687,28 +768,44 @@ ib_bits_set_layer(void *data, int lay) static void ib_bits_set_clip(void *data, Evas_Object clip) { + D_ENTER; + + + D_RETURN; } /* we arent going to recolor our icons here according to color class */ static void ib_bits_set_color_class(void *data, char *cc, int r, int g, int b, int a) { + D_ENTER; + + + D_RETURN; } /* our minimum size for icon space is 0x0 */ static void ib_bits_get_min_size(void *data, double *w, double *h) { + D_ENTER; + *w = 0; *h = 0; + + D_RETURN; } /* our maximum is huge */ static void ib_bits_get_max_size(void *data, double *w, double *h) { + D_ENTER; + *w = 999999; *h = 999999; + + D_RETURN; } @@ -723,6 +820,8 @@ ib_mouse_in(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Iconbar_Icon *ic; + D_ENTER; + /* get he iconbaricon pointer from the data member */ ic = (E_Iconbar_Icon *)data; /* set hilited flag */ @@ -744,6 +843,8 @@ ib_mouse_in(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) /* a redraw is needed */ ic->iconbar->view->changed = 1; + + D_RETURN; } /* called when a mouse goes out of an icon object */ @@ -752,6 +853,8 @@ ib_mouse_out(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Iconbar_Icon *ic; + D_ENTER; + /* get he iconbaricon pointer from the data member */ ic = (E_Iconbar_Icon *)data; /* unset hilited flag */ @@ -759,6 +862,8 @@ ib_mouse_out(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) /* tell the view the iconbar is in.. something changed that might mean */ /* a redraw is needed */ ic->iconbar->view->changed = 1; + + D_RETURN; } /* called when the mouse goes down on an icon object */ @@ -767,14 +872,21 @@ ib_mouse_down(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Iconbar_Icon *ic; + D_ENTER; + /* get he iconbaricon pointer from the data member */ ic = (E_Iconbar_Icon *)data; /* run something! */ if (ic->exec) e_exec_run(ic->exec); + + D_RETURN; } /* called when the mouse goes up on an icon object */ static void ib_mouse_up(void *data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { + D_ENTER; + + D_RETURN; } diff --git a/src/iconbar.h b/src/iconbar.h index 8b8d088c2..e3d3cec9b 100644 --- a/src/iconbar.h +++ b/src/iconbar.h @@ -5,6 +5,7 @@ #include "config.h" #include "exec.h" #include "view.h" +#include "object.h" typedef struct _E_Iconbar_Icon E_Iconbar_Icon; #ifndef E_ICONBAR_TYPEDEF @@ -19,7 +20,7 @@ typedef struct _E_View E_View; struct _E_Iconbar { - OBJ_PROPERTIES; + E_Object o; E_View *view; Evas_List icons; @@ -32,7 +33,7 @@ struct _E_Iconbar struct _E_Iconbar_Icon { - OBJ_PROPERTIES; + E_Object o; E_Iconbar *iconbar; @@ -51,7 +52,6 @@ struct _E_Iconbar_Icon void e_iconbar_init(void); E_Iconbar *e_iconbar_new(E_View *v); -void e_iconbar_free(E_Iconbar *ib); void e_iconbar_icon_free(E_Iconbar_Icon *); void e_iconbar_realize(E_Iconbar *ib); void e_iconbar_fix(E_Iconbar *ib); diff --git a/src/keys.c b/src/keys.c index 4fafb8451..0464eb4f7 100644 --- a/src/keys.c +++ b/src/keys.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "keys.h" #include "actions.h" @@ -9,6 +10,8 @@ e_key_down(Ecore_Event * ev) { Ecore_Event_Key_Down *e; + D_ENTER; + e = ev->event; if (e->win == ecore_get_key_grab_win()) { @@ -17,6 +20,8 @@ e_key_down(Ecore_Event * ev) e_action_start("Key_Binding", ACT_KEY_DOWN, 0, e->key, e->mods, NULL, NULL, 0, 0, 0, 0); } + + D_RETURN; } static void @@ -24,6 +29,8 @@ e_key_up(Ecore_Event * ev) { Ecore_Event_Key_Up *e; + D_ENTER; + e = ev->event; if (e->win == ecore_get_key_grab_win()) { @@ -32,26 +39,40 @@ e_key_up(Ecore_Event * ev) e_action_start("Key_Binding", ACT_KEY_UP, 0, e->key, e->mods, NULL, NULL, 0, 0, 0, 0); } + + D_RETURN; } void e_keys_init(void) { + D_ENTER; + /* load up our actions .... once to get some grabbed keys */ e_action_start("", ACT_KEY_DOWN, 0, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, NULL, NULL, 0, 0, 0, 0); ecore_event_filter_handler_add(ECORE_EVENT_KEY_DOWN, e_key_down); ecore_event_filter_handler_add(ECORE_EVENT_KEY_UP, e_key_up); + + D_RETURN; } void e_keys_grab(char *key, Ecore_Event_Key_Modifiers mods, int anymod) { + D_ENTER; + ecore_key_grab(key, mods, anymod, 0); + + D_RETURN; } void e_keys_ungrab(char *key, Ecore_Event_Key_Modifiers mods, int anymod) { + D_ENTER; + ecore_key_ungrab(key, mods, anymod); + + D_RETURN; } diff --git a/src/main.c b/src/main.c index 908b7a98a..6cbbb8509 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "actions.h" #include "guides.h" #include "cursors.h" @@ -31,13 +32,19 @@ static void setup(void); static void cb_exit(void) { + D_ENTER; + E_PROF_DUMP; + + D_RETURN; } static void wm_running_error(Display * d, XErrorEvent * ev) { + D_ENTER; + if ((ev->request_code == X_ChangeWindowAttributes) && (ev->error_code == BadAccess)) { @@ -45,12 +52,16 @@ wm_running_error(Display * d, XErrorEvent * ev) fprintf(stderr, "Exiting Enlightenment. Error.\n"); exit(-2); } + + D_RETURN; UN(d); } static void setup(void) { + D_ENTER; + ecore_grab(); ecore_sync(); @@ -59,6 +70,8 @@ setup(void) e_border_adopt_children(0); ecore_ungrab(); + + D_RETURN; } int diff --git a/src/match.c b/src/match.c index 8a35e266a..f5e0ed788 100644 --- a/src/match.c +++ b/src/match.c @@ -1,8 +1,11 @@ +#include "debug.h" #include "match.h" void e_match_set_props(E_Border *b) { + D_ENTER; + #if 0 /* if we have a match that says to ignore prog coords: */ b->client.pos.requested = 0; @@ -34,4 +37,6 @@ e_match_set_props(E_Border *b) /* if we have a match specifying layer */ b->client.layer = match_layer; #endif + + D_RETURN; } diff --git a/src/menu.c b/src/menu.c index ce0b26c3c..9151f2226 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1,8 +1,10 @@ +#include "debug.h" #include "menu.h" #include "config.h" static Evas_List open_menus = NULL; /* List of all open menus */ static Evas_List menus = NULL; +static E_Menu_Item *curr_selected_item = NULL; /* Currently selected item */ static Window menu_event_win = 0; /* Window which originated event */ static int screen_w, screen_h; /* Screen width and height */ static int mouse_x, mouse_y; /* Mouse coordinates */ @@ -18,6 +20,8 @@ static void e_mouse_move(Ecore_Event * ev); static void e_mouse_in(Ecore_Event * ev); static void e_mouse_out(Ecore_Event * ev); static void e_window_expose(Ecore_Event * ev); +static void e_menu_item_select (E_Menu_Item *mi); +static void e_menu_item_unselect (E_Menu_Item *mi); static void e_scroller_timer(int val, void *data) @@ -28,10 +32,13 @@ e_scroller_timer(int val, void *data) int scroll_speed = 12; static double last_time = 0.0; double t; + /* these two lines... */ E_CFG_INT(cfg_resist, "settings", "/menu/scroll/resist", 5); E_CFG_INT(cfg_scroll_speed, "settings", "/menu/scroll/speed", 12); + D_ENTER; + /* and these 2 should do exactly what tom wants - see e.h */ E_CONFIG_INT_GET(cfg_resist, resist); E_CONFIG_INT_GET(cfg_scroll_speed, scroll_speed); @@ -120,7 +127,8 @@ e_scroller_timer(int val, void *data) } if ((ok) && (open_menus)) ecore_add_event_timer("menu_scroller", 0.02, e_scroller_timer, val + 1, NULL); - return; + + D_RETURN; UN(data); } @@ -129,6 +137,8 @@ e_idle(void *data) { Evas_List l; + D_ENTER; + for (l = menus; l; l = l->next) { E_Menu *m; @@ -166,27 +176,44 @@ e_idle(void *data) evas_render(m->evas); } e_db_flush(); - return; + + D_RETURN; UN(data); } +/** + * e_wheel - Handle mouse wheel events + * + * @ev: Pointer to event. + */ static void e_wheel(Ecore_Event * ev) { Ecore_Event_Wheel *e; + D_ENTER; + e = ev->event; if (e->win == menu_event_win) { } + + D_RETURN; } +/** + * e_key_down - Handle key down events + * + * @ev: Pointer to event. + */ static void e_key_down(Ecore_Event * ev) { Ecore_Event_Key_Down *e; int ok; + D_ENTER; + e = ev->event; ok = 0; if (e->win == menu_event_win) ok = 1; @@ -273,35 +300,60 @@ e_key_down(Ecore_Event * ev) { } } + + D_RETURN; } +/** + * e_key_up - Handle key up events + * + * @ev: Pointer to event. + */ static void e_key_up(Ecore_Event * ev) { Ecore_Event_Key_Up *e; + D_ENTER; + e = ev->event; { } + + D_RETURN; } -/* handling mouse down events */ +/** + * e_mouse_down - Handle mouse down events + * + * @ev: Pointer to event. + */ static void e_mouse_down(Ecore_Event * ev) { Ecore_Event_Mouse_Down *e; + D_ENTER; + e = ev->event; { } + + D_RETURN; } -/* handling mouse up events */ +/** + * e_mouse_up - Handle mouse up events + * + * @ev: Pointer to event. + */ static void e_mouse_up(Ecore_Event * ev) { Ecore_Event_Mouse_Up *e; + D_ENTER; + e = ev->event; keyboard_nav = 0; if (e->win == menu_event_win) @@ -318,11 +370,18 @@ e_mouse_up(Ecore_Event * ev) for (l = open_menus; l; l = l->next) { m = l->data; + /* Ensure that the item is actually selected and + that the mouse pointer really is over it: */ if (m->selected) { - e_menu_callback_item(m, m->selected); - m->selected->selected = 0; - m->selected = NULL; + if (INTERSECTS(m->selected->x + m->current.x, + m->selected->y + m->current.y, + m->selected->size.w, m->selected->size.h, + mouse_x, mouse_y, 0, 0)) + { + e_menu_callback_item(m, m->selected); + } + e_menu_item_unselect(m->selected); break; } } @@ -336,14 +395,22 @@ e_mouse_up(Ecore_Event * ev) } } } + + D_RETURN; } -/* handling mouse move events */ +/** + * e_mouse_move - Handle mouse move events + * + * @ev: Pointer to event. + */ static void e_mouse_move(Ecore_Event * ev) { Ecore_Event_Mouse_Move *e; + D_ENTER; + e = ev->event; keyboard_nav = 0; if (e->win == menu_event_win) @@ -380,27 +447,43 @@ e_mouse_move(Ecore_Event * ev) } } e_scroller_timer(0, NULL); + + D_RETURN; } -/* handling mouse enter events */ +/** + * e_mouse_in - Handle mouse enter events + * + * @ev: Pointer to event. + */ static void e_mouse_in(Ecore_Event * ev) { Ecore_Event_Window_Enter *e; + D_ENTER; + e = ev->event; keyboard_nav = 0; if (e->win == menu_event_win) { } + + D_RETURN; } -/* handling mouse leave events */ +/** + * e_mouse_out - Handle mouse leave events + * + * @ev: Pointer to event. + */ static void e_mouse_out(Ecore_Event * ev) { Ecore_Event_Window_Leave *e; + D_ENTER; + e = ev->event; keyboard_nav = 0; if (e->win == menu_event_win) @@ -421,14 +504,22 @@ e_mouse_out(Ecore_Event * ev) } } } + + D_RETURN; } -/* handling expose events */ +/** + * e_window_expose - Handle window expose events + * + * @ev: Pointer to event. + */ static void e_window_expose(Ecore_Event * ev) { Ecore_Event_Window_Expose *e; + D_ENTER; + e = ev->event; { Evas_List l; @@ -446,27 +537,86 @@ e_window_expose(Ecore_Event * ev) } } } + + D_RETURN; } +/** + * e_menu_item_unselect - Unselect a menu item. + * + * @mi: Pointer to the menu item to be unselected. + */ +static void +e_menu_item_unselect (E_Menu_Item *mi) +{ + D_ENTER; + + if ((mi) && (mi->menu->selected == mi)) + { + mi->menu->selected = NULL; + mi->selected = 0; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + } + + D_RETURN; +} + +/** + * e_menu_item_select - Select a menu item. + * NOTE - Assumes only one item can be selected at once, + * and unselects any previously selected menu item. + * + * @mi: Pointer to the menu item to be selected. + */ +static void +e_menu_item_select (E_Menu_Item *mi) +{ + D_ENTER; + + e_menu_item_unselect(curr_selected_item); + if (mi) + { + mi->menu->selected = mi; + mi->selected = 1; + mi->menu->redo_sel = 1; + mi->menu->changed = 1; + curr_selected_item = mi; + } + + D_RETURN; +} + +/** + * e_menu_item_in_cb - Callback for when mouse enters a specific menu item. + * Attached by e_item_realize(). Selects menu item. + * + * @_data: Pointer to actual menu item structure. + * @_e: Evas + * @_o: Evas object + * @_b: ????? + * @x: ????? + * @y: ????? + */ static void e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Menu_Item *mi; + D_ENTER; + mi = _data; - mi->menu->selected = mi; - mi->selected = 1; - mi->menu->redo_sel = 1; - mi->menu->changed = 1; + e_menu_item_select(mi); e_menu_hide_submenus(mi->menu); - if (mi->submenu) + if (mi->submenu && mi->submenu->entries) { e_menu_move_to(mi->submenu, mi->menu->current.x + mi->menu->current.w, mi->menu->current.y + mi->y - mi->menu->border.t); e_menu_show(mi->submenu); } - return; + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -474,17 +624,28 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) UN(_y); } +/** + * e_menu_item_out_cb - Callback for when mouse leaves a specific menu item. + * Attached by e_item_realize(). Unselects menu item. + * + * @_data: Pointer to actual menu item structure. + * @_e: Evas + * @_o: Evas object + * @_b: ????? + * @x: ????? + * @y: ????? + */ static void e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Menu_Item *mi; + D_ENTER; + mi = _data; - if (mi->menu->selected == mi) mi->menu->selected = NULL; - mi->selected = 0; - mi->menu->redo_sel = 1; - mi->menu->changed = 1; - return; + e_menu_item_unselect(mi); + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -495,14 +656,22 @@ e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) void e_menu_callback_item(E_Menu *m, E_Menu_Item *mi) { + D_ENTER; + if (mi->func_select) mi->func_select(m, mi, mi->func_select_data); + + D_RETURN; } void e_menu_item_set_callback(E_Menu_Item *mi, void (*func) (E_Menu *m, E_Menu_Item *mi, void *data), void *data) { + D_ENTER; + mi->func_select = func; mi->func_select_data = data; + + D_RETURN; } /** @@ -517,6 +686,8 @@ e_menu_hide_submenus(E_Menu *menus_after) { Evas_List l; + D_ENTER; + /* Loop thru all open menus: */ for (l = open_menus; l; l = l->next) { @@ -534,6 +705,8 @@ e_menu_hide_submenus(E_Menu *menus_after) break; } } + + D_RETURN; } /** @@ -549,6 +722,8 @@ e_menu_select(int dx, int dy) Evas_List l, ll; int done = 0; + D_ENTER; + /* Loop through all open menus, tile done or reached end */ for (l = open_menus; (l) && (!done); l = l->next) { @@ -601,23 +776,13 @@ e_menu_select(int dx, int dy) if (ok) { - /* Unselect the old selected entry: */ - if (m->selected) - { - m->selected->selected = 0; - m->redo_sel = 1; - m->changed = 1; - m->selected = NULL; - } - - /* Select the new entry: */ - m->selected = mi; - mi->selected = 1; - mi->menu->redo_sel = 1; - mi->menu->changed = 1; + /* Unselect old and select new item: */ + e_menu_item_unselect(m->selected); + e_menu_item_select(mi); e_menu_hide_submenus(mi->menu); + /* If submenu, display it: */ - if (mi->submenu) + if (mi->submenu && mi->submenu->entries) { e_menu_move_to(mi->submenu, mi->menu->current.x + mi->menu->current.w, @@ -665,22 +830,13 @@ e_menu_select(int dx, int dy) } if (mi) { - /* Unselect old selected entry: */ - if (m->selected) - { - m->selected->selected = 0; - m->redo_sel = 1; - m->changed = 1; - m->selected = NULL; - } - /* Select new entry: */ - mm->selected = mi; - mi->selected = 1; - mi->menu->redo_sel = 1; - mi->menu->changed = 1; + /* Unselect old and select new item: */ + e_menu_item_unselect(m->selected); + e_menu_item_select(mi); e_menu_hide_submenus(mi->menu); + /* If new entry is a submenu, display it: */ - if (mi->submenu) + if (mi->submenu && mi->submenu->entries) { e_menu_move_to(mi->submenu, mi->menu->current.x + mi->menu->current.w, @@ -705,11 +861,8 @@ e_menu_select(int dx, int dy) m = open_menus->data; mi = m->entries->data; - m->selected = mi; - mi->selected = 1; - mi->menu->redo_sel = 1; - mi->menu->changed = 1; - if (mi->submenu) + e_menu_item_select(mi); + if (mi->submenu && mi->submenu->entries) { e_menu_move_to(mi->submenu, mi->menu->current.x + mi->menu->current.w, @@ -718,11 +871,19 @@ e_menu_select(int dx, int dy) } } } + + D_RETURN; } +/** + * e_menu_init - Initialise the menu, adding the required + * event handlers. + */ void e_menu_init(void) { + D_ENTER; + ecore_window_get_geometry(0, NULL, NULL, &screen_w, &screen_h); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, e_mouse_down); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_mouse_up); @@ -734,11 +895,15 @@ e_menu_init(void) ecore_event_filter_handler_add(ECORE_EVENT_KEY_UP, e_key_up); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_WHEEL, e_wheel); ecore_event_filter_idle_handler_add(e_idle, NULL); + + D_RETURN; } void e_menu_event_win_show(void) { + D_ENTER; + /* create it */ if (!menu_event_win) { @@ -750,11 +915,15 @@ e_menu_event_win_show(void) } /* raise it */ if (menu_event_win) ecore_window_raise(menu_event_win); + + D_RETURN; } void e_menu_event_win_hide(void) { + D_ENTER; + /* destroy it */ if (menu_event_win) { @@ -762,8 +931,17 @@ e_menu_event_win_hide(void) ecore_window_destroy(menu_event_win); menu_event_win = 0; } + + D_RETURN; } +/** + * e_menu_set_background - Sets the background of menu @m + * Sets background of menu using the default theme background, + * base.bits.db + * + * @m: Menu to set background on. + */ void e_menu_set_background(E_Menu *m) { @@ -773,11 +951,13 @@ e_menu_set_background(E_Menu *m) char *part; int pl, pr, pt, pb; + D_ENTER; + menus = e_config_get("menus"); part = "base.bits.db"; sprintf(buf, "%s%s/%s", menus, style, part); - if ((m->bg_file) && (!strcmp(m->bg_file, buf))) return; + if ((m->bg_file) && (!strcmp(m->bg_file, buf))) D_RETURN; IF_FREE(m->bg_file); m->bg_file = strdup(buf); @@ -802,6 +982,8 @@ e_menu_set_background(E_Menu *m) m->border.t = pt; m->border.b = pb; m->changed = 1; + + D_RETURN; } void @@ -814,6 +996,8 @@ e_menu_set_sel(E_Menu *m, E_Menu_Item *mi) int has_sub = 0; int selected = 0; + D_ENTER; + menus = e_config_get("menus"); if (!mi->separator) { @@ -821,7 +1005,7 @@ e_menu_set_sel(E_Menu *m, E_Menu_Item *mi) if (mi->submenu) has_sub = 1; sprintf(buf, "%s%s/selected-%i.submenu-%i.bits.db", menus, style, selected, has_sub); - if ((mi->bg_file) && (!strcmp(mi->bg_file, buf))) return; + if ((mi->bg_file) && (!strcmp(mi->bg_file, buf))) D_RETURN; } IF_FREE(mi->bg_file); if (!mi->separator) @@ -846,6 +1030,8 @@ e_menu_set_sel(E_Menu *m, E_Menu_Item *mi) if (m->sel_border.b < pb) {m->sel_border.b = pb; m->recalc_entries = 1;} m->redo_sel = 1; m->changed = 1; + + D_RETURN; } void @@ -856,9 +1042,11 @@ e_menu_set_sep(E_Menu *m, E_Menu_Item *mi) char *style = "default"; int pl, pr, pt, pb, minx, miny; + D_ENTER; + menus = e_config_get("menus"); sprintf(buf, "%s%s/separator.bits.db", menus, style); - if ((mi->sep_file) && (!strcmp(mi->sep_file, buf))) return; + if ((mi->sep_file) && (!strcmp(mi->sep_file, buf))) D_RETURN; IF_FREE(mi->sep_file); mi->sep_file = strdup(buf); @@ -881,6 +1069,8 @@ e_menu_set_sep(E_Menu *m, E_Menu_Item *mi) if (mi->size.min.h < miny) mi->size.min.h = miny; m->redo_sel = 1; m->changed = 1; + + D_RETURN; } void @@ -892,13 +1082,15 @@ e_menu_set_state(E_Menu *m, E_Menu_Item *mi) int on; int pl, pr, pt, pb, minx, miny; + D_ENTER; + menus = e_config_get("menus"); on = mi->on; if (mi->check) sprintf(buf, "%s%s/check-%i.bits.db", menus, style, on); else sprintf(buf, "%s%s/radio-%i.bits.db", menus, style, on); - if ((mi->state_file) && (!strcmp(mi->state_file, buf))) return; + if ((mi->state_file) && (!strcmp(mi->state_file, buf))) D_RETURN; IF_FREE(mi->state_file); mi->state_file = strdup(buf); @@ -921,13 +1113,17 @@ e_menu_set_state(E_Menu *m, E_Menu_Item *mi) if (mi->size.min.h < miny) mi->size.min.h = miny; m->redo_sel = 1; m->changed = 1; + + D_RETURN; } -void -e_menu_free(E_Menu *m) +static void +e_menu_cleanup(E_Menu *m) { Evas_List l; + D_ENTER; + for (l = m->entries; l; l = l->next) { E_Menu_Item *mi; @@ -944,7 +1140,11 @@ e_menu_free(E_Menu *m) ecore_window_destroy(m->win.main); menus = evas_list_remove(menus, m); open_menus = evas_list_remove(open_menus, m); - free(m); + + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(m)); + + D_RETURN; } E_Menu * @@ -956,12 +1156,14 @@ e_menu_new(void) int image_cache = 8192 * 1024; char *font_dir; + D_ENTER; + font_dir = e_config_get("fonts"); m = NEW(E_Menu, 1); ZERO(m, E_Menu, 1); - OBJ_INIT(m, e_menu_free); + e_object_init(E_OBJECT(m), (E_Cleanup_Func) e_menu_cleanup); m->win.main = ecore_window_override_new(0, 0, 0, 1, 1); m->evas = evas_new_all(ecore_display_get(), @@ -1001,53 +1203,83 @@ e_menu_new(void) menus = evas_list_prepend(menus, m); - return m; + D_RETURN_(m); } void e_menu_hide(E_Menu *m) { + D_ENTER; + + printf("Menu hide!\n"); + + if (m->selected) + { + m->selected->selected = 0; + } + m->selected = NULL; + m->redo_sel = 1; m->current.visible = 0; m->changed = 1; + + D_RETURN; } void e_menu_show(E_Menu *m) { + D_ENTER; + m->current.visible = 1; m->changed = 1; + + D_RETURN; } void e_menu_move_to(E_Menu *m, int x, int y) { + D_ENTER; + m->current.x = x; m->current.y = y; m->changed = 1; + + D_RETURN; } void e_menu_show_at_mouse(E_Menu *m, int x, int y, Time t) { + D_ENTER; + m->current.x = x; m->current.y = y; m->time = t; e_menu_show(m); + + D_RETURN; } void e_menu_add_item(E_Menu *m, E_Menu_Item *mi) { + D_ENTER; + m->entries = evas_list_append(m->entries, mi); m->recalc_entries = 1; m->changed = 1; mi->menu = m; e_menu_item_realize(m, mi); + + D_RETURN; } void e_menu_del_item(E_Menu *m, E_Menu_Item *mi) { + D_ENTER; + m->entries = evas_list_remove(m->entries, mi); m->recalc_entries = 1; m->changed = 1; @@ -1057,6 +1289,8 @@ e_menu_del_item(E_Menu *m, E_Menu_Item *mi) if (mi->menu->selected == mi) mi->menu->selected = NULL; free(mi); mi->menu = NULL; + + D_RETURN; } void @@ -1065,6 +1299,8 @@ e_menu_item_update(E_Menu *m, E_Menu_Item *mi) int tx, ty, tw, th, ix, iy, iw, ih, rx, ry, rw, rh; double dtw, dth; + D_ENTER; + if (mi->sep) { ebits_move(mi->sep, mi->x, mi->y); @@ -1130,11 +1366,15 @@ e_menu_item_update(E_Menu *m, E_Menu_Item *mi) ebits_show(mi->state); } } + + D_RETURN; } void e_menu_item_unrealize(E_Menu *m, E_Menu_Item *mi) { + D_ENTER; + if (mi->bg) ebits_free(mi->bg); mi->bg = NULL; IF_FREE(mi->bg_file); @@ -1151,6 +1391,8 @@ e_menu_item_unrealize(E_Menu *m, E_Menu_Item *mi) mi->sep = NULL; IF_FREE(mi->sep_file); mi->sep_file = NULL; + + D_RETURN; } void @@ -1159,6 +1401,8 @@ e_menu_item_realize(E_Menu *m, E_Menu_Item *mi) double tw, th; int iw, ih, rw, rh; + D_ENTER; + if (mi->separator) { e_menu_set_sep(m, mi); @@ -1198,6 +1442,8 @@ e_menu_item_realize(E_Menu *m, E_Menu_Item *mi) e_menu_set_sel(m, mi); if ((mi->radio) || (mi->check)) e_menu_set_state(m, mi); } + + D_RETURN; } E_Menu_Item * @@ -1205,17 +1451,21 @@ e_menu_item_new(char *str) { E_Menu_Item *mi; + D_ENTER; + mi = NEW(E_Menu_Item, 1); ZERO(mi, E_Menu_Item, 1); if (str) mi->str = strdup(str); - return mi; + D_RETURN_(mi); } void e_menu_obscure_outside_screen(E_Menu *m) { + D_ENTER; + /* obscure stuff outside the screen boundaries - optimizes rendering */ evas_clear_obscured_rects(m->evas); evas_add_obscured_rect(m->evas, @@ -1234,6 +1484,8 @@ e_menu_obscure_outside_screen(E_Menu *m) screen_w - m->current.x, -m->current.y - 100000, 100000, 200000 + screen_h); + + D_RETURN; } void @@ -1241,6 +1493,8 @@ e_menu_scroll_all_by(int dx, int dy) { Evas_List l; + D_ENTER; + for (l = menus; l; l = l->next) { E_Menu *m; @@ -1265,6 +1519,8 @@ e_menu_scroll_all_by(int dx, int dy) mouse_y - m->current.y); } } + + D_RETURN; } void @@ -1272,6 +1528,8 @@ e_menu_update_visibility(E_Menu *m) { E_Menu_Item *mi; + D_ENTER; + mi = m->selected; if (mi) { @@ -1297,6 +1555,8 @@ e_menu_update_visibility(E_Menu *m) e_menu_scroll_all_by(0, -(screen_h / 4)); } } + + D_RETURN; } void @@ -1305,7 +1565,9 @@ e_menu_update_base(E_Menu *m) int size_changed = 0; int location_changed = 0; - if (!m->changed) return; + D_ENTER; + + if (!m->changed) D_RETURN; if (m->recalc_entries) { @@ -1436,20 +1698,28 @@ e_menu_update_base(E_Menu *m) evas_set_output_viewport(m->evas, 0, 0, m->current.w, m->current.h); if (m->bg) ebits_resize(m->bg, m->current.w, m->current.h); } + + D_RETURN; } void e_menu_update_finish(E_Menu *m) { - if (!m->changed) return; + D_ENTER; + + if (!m->changed) D_RETURN; m->previous = m->current; m->changed = 0; + + D_RETURN; } void e_menu_update_shows(E_Menu *m) { - if (!m->changed) return; + D_ENTER; + + if (!m->changed) D_RETURN; if (m->current.visible != m->previous.visible) { if (m->current.visible) @@ -1461,12 +1731,16 @@ e_menu_update_shows(E_Menu *m) open_menus = evas_list_append(open_menus, m); } } + + D_RETURN; } void e_menu_update_hides(E_Menu *m) { - if (!m->changed) return; + D_ENTER; + + if (!m->changed) D_RETURN; if (m->current.visible != m->previous.visible) { if (!m->current.visible) @@ -1498,20 +1772,28 @@ e_menu_update_hides(E_Menu *m) if (!open_menus) e_menu_event_win_hide(); } } + + D_RETURN; } void e_menu_update(E_Menu *m) { + D_ENTER; + e_menu_update_base(m); e_menu_update_shows(m); e_menu_update_hides(m); e_menu_update_finish(m); + + D_RETURN; } void e_menu_item_set_icon(E_Menu_Item *mi, char *icon) { + D_ENTER; + IF_FREE(mi->icon); mi->icon = NULL; if (icon) mi->icon = strdup(icon); @@ -1520,11 +1802,15 @@ e_menu_item_set_icon(E_Menu_Item *mi, char *icon) mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_text(E_Menu_Item *mi, char *text) { + D_ENTER; + IF_FREE(mi->str); mi->str = NULL; if (text) mi->str = strdup(text); @@ -1533,44 +1819,60 @@ e_menu_item_set_text(E_Menu_Item *mi, char *text) mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_separator(E_Menu_Item *mi, int sep) { + D_ENTER; + mi->separator = sep; if (mi->menu) { mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_radio(E_Menu_Item *mi, int radio) { + D_ENTER; + mi->radio = radio; if (mi->menu) { mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_check(E_Menu_Item *mi, int check) { + D_ENTER; + mi->check = check; if (mi->menu) { mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_state(E_Menu_Item *mi, int state) { + D_ENTER; + mi->on = state; if (mi->menu) { @@ -1578,11 +1880,15 @@ e_menu_item_set_state(E_Menu_Item *mi, int state) mi->menu->redo_sel = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_submenu(E_Menu_Item *mi, E_Menu *submenu) { + D_ENTER; + if (mi->submenu) e_menu_hide(mi->submenu); mi->submenu = submenu; if (mi->menu) @@ -1591,31 +1897,45 @@ e_menu_item_set_submenu(E_Menu_Item *mi, E_Menu *submenu) mi->menu->redo_sel = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_item_set_scale_icon(E_Menu_Item *mi, int scale) { + D_ENTER; + mi->scale_icon = scale; if (mi->menu) { mi->menu->recalc_entries = 1; mi->menu->changed = 1; } + + D_RETURN; } void e_menu_set_padding_icon(E_Menu *m, int pad) { + D_ENTER; + m->pad.icon = pad; m->recalc_entries = 1; m->changed = 1; + + D_RETURN; } void e_menu_set_padding_state(E_Menu *m, int pad) { + D_ENTER; + m->pad.state = pad; m->recalc_entries = 1; m->changed = 1; + + D_RETURN; } diff --git a/src/menu.h b/src/menu.h index 8ac28b59e..44d7eff98 100644 --- a/src/menu.h +++ b/src/menu.h @@ -2,13 +2,14 @@ #define E_MENU_H #include "e.h" +#include "object.h" typedef struct _E_Menu E_Menu; typedef struct _E_Menu_Item E_Menu_Item; struct _E_Menu { - OBJ_PROPERTIES; + E_Object o; struct { int x, y, w, h; @@ -45,8 +46,6 @@ struct _E_Menu struct _E_Menu_Item { - OBJ_PROPERTIES; - int x, y; struct { struct { @@ -106,7 +105,6 @@ void e_menu_set_background(E_Menu *m); void e_menu_set_sel(E_Menu *m, E_Menu_Item *mi); void e_menu_set_sep(E_Menu *m, E_Menu_Item *mi); void e_menu_set_state(E_Menu *m, E_Menu_Item *mi); -void e_menu_free(E_Menu *m); E_Menu *e_menu_new(void ); void e_menu_hide(E_Menu *m); void e_menu_show(E_Menu *m); diff --git a/src/menubuild.c b/src/menubuild.c index 09b9a56b4..79b1eae33 100644 --- a/src/menubuild.c +++ b/src/menubuild.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "menu.h" #include "menubuild.h" #include "exec.h" @@ -24,10 +25,13 @@ static void e_build_menu_cb_exec(E_Menu *m, E_Menu_Item *mi, void *data) { char *exe; + + D_ENTER; exe = data; e_exec_run(exe); - return; + + D_RETURN; UN(m); UN(mi); } @@ -37,6 +41,8 @@ e_build_menu_cb_script(E_Menu *m, E_Menu_Item *mi, void *data) { char *script; + D_ENTER; + #ifdef USE_FERITE script = data; e_ferite_run(script); @@ -44,7 +50,7 @@ e_build_menu_cb_script(E_Menu *m, E_Menu_Item *mi, void *data) printf( "No cookies for you. You will have to install ferite.\n" ); #endif - return; + D_RETURN; UN(m); UN(mi); UN(script); @@ -56,6 +62,8 @@ e_build_menu_unbuild(E_Build_Menu *bm) { Evas_List l; + D_ENTER; + bm->menu = NULL; if (bm->menus) { @@ -68,7 +76,8 @@ e_build_menu_unbuild(E_Build_Menu *bm) e_menu_update_shows(m); e_menu_update_hides(m); e_menu_update_finish(m); - OBJ_DO_FREE(m); + + e_object_unref(E_OBJECT(m)); } bm->menus = evas_list_free(bm->menus); } @@ -80,6 +89,8 @@ e_build_menu_unbuild(E_Build_Menu *bm) } bm->commands = evas_list_free(bm->commands); } + + D_RETURN; } @@ -92,12 +103,14 @@ e_build_menu_db_poll(int val, void *data) time_t mod; E_Build_Menu *bm; + D_ENTER; + bm = data; mod = e_file_modified_time(bm->file); if (mod <= bm->mod_time) { ecore_add_event_timer(bm->file, 1.0, e_build_menu_db_poll, 0, data); - return; + D_RETURN; } bm->mod_time = mod; @@ -106,7 +119,8 @@ e_build_menu_db_poll(int val, void *data) if (!bm->menu) bm->mod_time = 0; ecore_add_event_timer(bm->file, 1.0, e_build_menu_db_poll, 0, data); - return; + + D_RETURN; UN(val); } @@ -116,12 +130,14 @@ e_build_menu_gnome_apps_poll(int val, void *data) time_t mod; E_Build_Menu *bm; + D_ENTER; + bm = data; mod = e_file_modified_time(bm->file); if (mod <= bm->mod_time) { ecore_add_event_timer(bm->file, 1.0, e_build_menu_gnome_apps_poll, 0, data); - return; + D_RETURN; } bm->mod_time = mod; @@ -130,7 +146,8 @@ e_build_menu_gnome_apps_poll(int val, void *data) if (!bm->menu) bm->mod_time = 0; ecore_add_event_timer(bm->file, 1.0, e_build_menu_gnome_apps_poll, 0, data); - return; + + D_RETURN; UN(val); } @@ -141,8 +158,10 @@ e_build_menu_db_build_number(E_Build_Menu *bm, E_DB_File *db, int num) char buf[PATH_MAX]; int num2, i2; + D_ENTER; + sprintf(buf, "/menu/%i/count", num); - if (!e_db_int_get(db, buf, &num2)) return NULL; + if (!e_db_int_get(db, buf, &num2)) D_RETURN_(NULL); menu = e_menu_new(); e_menu_set_padding_icon(menu, 2); e_menu_set_padding_state(menu, 2); @@ -194,7 +213,8 @@ e_build_menu_db_build_number(E_Build_Menu *bm, E_DB_File *db, int num) e_menu_add_item(menu, menuitem); } bm->menus = evas_list_prepend(bm->menus, menu); - return menu; + + D_RETURN_(menu); } static void @@ -203,14 +223,18 @@ e_build_menu_db_build(E_Build_Menu *bm) E_DB_File *db; int num; + D_ENTER; + e_db_flush(); db = e_db_open_read(bm->file); - if (!db) return; + if (!db) D_RETURN; if (!e_db_int_get(db, "/menu/count", &num)) goto error; if (num > 0) bm->menu = e_build_menu_db_build_number(bm, db, 0); error: e_db_close(db); + + D_RETURN; } @@ -223,6 +247,8 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu *bm, char *dir) E_Menu *menu = NULL; Evas_List l, entries = NULL; + D_ENTER; + menu = e_menu_new(); e_menu_set_padding_icon(menu, 2); e_menu_set_padding_state(menu, 2); @@ -384,7 +410,8 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu *bm, char *dir) } if (entries) evas_list_free(entries); bm->menus = evas_list_prepend(bm->menus, menu); - return menu; + + D_RETURN_(menu); } static void @@ -392,18 +419,28 @@ e_build_menu_gnome_apps_build(E_Build_Menu *bm) { E_Menu *menu; + D_ENTER; + menu = e_build_menu_gnome_apps_build_dir(bm, bm->file); bm->menu = menu; + + D_RETURN; } -void -e_build_menu_free(E_Build_Menu *bm) +static void +e_build_menu_cleanup(E_Build_Menu *bm) { + D_ENTER; + ecore_del_event_timer(bm->file); e_build_menu_unbuild(bm); IF_FREE(bm->file); build_menus = evas_list_remove(build_menus, bm); - FREE(bm); + + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(bm)); + + D_RETURN; } E_Build_Menu * @@ -411,16 +448,20 @@ e_build_menu_new_from_db(char *file) { E_Build_Menu *bm; - if (!file) return NULL; + D_ENTER; + + if (!file) D_RETURN_(NULL); bm = NEW(E_Build_Menu, 1); ZERO(bm, E_Build_Menu, 1); - OBJ_INIT(bm, e_build_menu_free); + + e_object_init(E_OBJECT(bm), (E_Cleanup_Func) e_build_menu_cleanup); bm->file = strdup(file); build_menus = evas_list_prepend(build_menus, bm); e_build_menu_db_poll(0, bm); - return bm; + + D_RETURN_(bm); } E_Build_Menu * @@ -428,14 +469,18 @@ e_build_menu_new_from_gnome_apps(char *dir) { E_Build_Menu *bm; - if (!dir) return NULL; + D_ENTER; + + if (!dir) D_RETURN_(NULL); bm = NEW(E_Build_Menu, 1); ZERO(bm, E_Build_Menu, 1); - OBJ_INIT(bm, e_build_menu_free); - + + e_object_init(E_OBJECT(bm), (E_Cleanup_Func) e_build_menu_cleanup); + bm->file = strdup(dir); build_menus = evas_list_prepend(build_menus, bm); e_build_menu_gnome_apps_poll(0, bm); - return bm; + + D_RETURN_(bm); } diff --git a/src/menubuild.h b/src/menubuild.h index 47ab48e0d..e0859c829 100644 --- a/src/menubuild.h +++ b/src/menubuild.h @@ -2,12 +2,13 @@ #define E_MENU_BUILD_H #include "e.h" +#include "object.h" typedef struct _E_Build_Menu E_Build_Menu; struct _E_Build_Menu { - OBJ_PROPERTIES; + E_Object o; char *file; time_t mod_time; @@ -18,7 +19,6 @@ struct _E_Build_Menu Evas_List commands; }; -void e_build_menu_free(E_Build_Menu *bm); E_Build_Menu *e_build_menu_new_from_db(char *file); E_Build_Menu *e_build_menu_new_from_gnome_apps(char *dir); diff --git a/src/object.c b/src/object.c new file mode 100644 index 000000000..dd2eaab7e --- /dev/null +++ b/src/object.c @@ -0,0 +1,79 @@ +#include "debug.h" +#include "object.h" + +void +e_object_init(E_Object *obj, E_Cleanup_Func cleanup_func) +{ + D_ENTER; + + if (!obj) + D_RETURN; + + memset(obj, 0, sizeof(E_Object)); + obj->references = 1; + obj->cleanup_func = cleanup_func; + + D_RETURN; +} + +void +e_object_cleanup(E_Object *obj) +{ + D_ENTER; + + if (!obj) + D_RETURN; + + free(obj); + + D_RETURN; +} + + +void +e_object_ref(E_Object *obj) +{ + D_ENTER; + + if (!obj) + D_RETURN; + + obj->references++; + printf("++ refcount on %p, now %i\n", obj, obj->references); + + D_RETURN; +} + +int +e_object_unref(E_Object *obj) +{ + D_ENTER; + + if (!obj) + D_RETURN_(-1); + + obj->references--; + + printf("-- refcount on %p, now %i\n", obj, obj->references); + + if (obj->references == 0 && obj->cleanup_func) + { + printf("Refcount is zero, freeing.\n"); + obj->cleanup_func(obj); + D_RETURN_(0); + } + + D_RETURN_(obj->references); +} + + +int +e_object_get_usecount(E_Object *obj) +{ + D_ENTER; + + if (!obj) + D_RETURN_(-1); + + D_RETURN_(obj->references); +} diff --git a/src/object.h b/src/object.h new file mode 100644 index 000000000..8651a3b74 --- /dev/null +++ b/src/object.h @@ -0,0 +1,78 @@ +#ifndef E_OBJECT_H +#define E_OBJECT_H + +#include +#include + +#define E_OBJECT(x) ((E_Object*)(x)) + +typedef void (*E_Cleanup_Func) (void *object); + +typedef struct _e_object +{ + int references; + E_Cleanup_Func cleanup_func; + +} E_Object; + +/** + * e_object_init - Initializes an E object + * @obj The object to initalize + * @cleanup_func The destructor function for this object + * + * This function initializes an E object. It registers + * the @cleanup_func that is to be called when the use + * count on this object drops to zero. This destructor + * then cleans up the object, from the derived classes up + * the hierarchy to the highest ancestor, E_Object. You + * MUST call the destructor of the base class at the end + * of a destructor, or you're creating a leak. Moreover, + * those destructors MUST NOT call free() on the object + * itself, only clean up things that are pointed to etc. + * The final free() call has to happen in the root class, + * here, it happens in e_object_cleanup(). + */ +void e_object_init(E_Object *obj, E_Cleanup_Func cleanup_func); + +/** + * e_object_cleanup - Cleanup function for E_Objects + * @obj The object to clean up + * + * This is the most basic destructor function, the only + * one which does not call another base class destructor + * at the end. This is the place where the final free() + * call occurs. + */ +void e_object_cleanup(E_Object *obj); + +/** + * e_object_ref - Increment the reference count of this object + * @obj The object whose reference count to increase + */ +void e_object_ref(E_Object *obj); + +/** + * e_object_unref - Decrememnt the reference count of this object + * @obj The object whose reference count to decrease + * + * This function decreases an object's reference counter. If + * the counter drops to zero, the objects cleanup_func() + * that was passed with e_object_init() is called. This function + * is the destructor of the most derived class of this object, + * and works its way back to the root class's destructor, + * e_object_cleanup(). + */ +int e_object_unref(E_Object *obj); + +/** + * e_object_get_usecount - Returns the current use count + * @obj The object whose use count to return + * + * This function returns the use count of an object. Use this + * function when you want to perform tasks before an object + * gets cleaned up by checking if the use count is one, + * cleaning up, and then calling e_object_unref(). + */ +int e_object_get_usecount(E_Object *obj); + +#endif diff --git a/src/observer.c b/src/observer.c new file mode 100644 index 000000000..003ded6a1 --- /dev/null +++ b/src/observer.c @@ -0,0 +1,146 @@ +#include + +#include "debug.h" +#include "observer.h" + +void +e_observer_init(E_Observer *obs, Ecore_Event_Type event, + E_Notify_Func notify_func, + E_Cleanup_Func cleanup_func) +{ + D_ENTER; + + if (!obs) + D_RETURN; + + memset(obs, 0, sizeof(E_Observer)); + + obs->watched = NULL; + obs->event = event; + obs->notify_func = notify_func; + + e_object_init(E_OBJECT(obs), cleanup_func); + + D_RETURN; +} + +void +e_observer_cleanup(E_Observer *obs) +{ + E_Observee *o = NULL; + + D_ENTER; + + if (!obs) + D_RETURN; + + while (obs->watched) + { + o = E_OBSERVEE(obs->watched->data); + e_observer_unregister_observee(obs, o); + } + + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(obs)); + + D_RETURN; +} + +void +e_observer_register_observee(E_Observer *observer, E_Observee *observee) +{ + D_ENTER; + + if (!observer || !observee) + D_RETURN; + + observee->observers = evas_list_append(observee->observers, observer); + observer->watched = evas_list_append(observer->watched, observee); + + D_RETURN; +} + +void +e_observer_unregister_observee(E_Observer *observer, E_Observee *observee) +{ + D_ENTER; + + if (!observer || !observee) + D_RETURN; + + observee->observers = evas_list_remove(observee->observers, observer); + observer->watched = evas_list_remove(observer->watched, observee); + + D_RETURN; +} + + +/* --------------------- Observee code below */ + +void +e_observee_init(E_Observee *obs, E_Cleanup_Func cleanup_func) +{ + D_ENTER; + + if (!obs) + D_RETURN; + + memset(obs, 0, sizeof(E_Observee)); + + e_object_init(E_OBJECT(obs), cleanup_func); + + D_RETURN; +} + + +void +e_observee_notify_observers(E_Observee *o, Ecore_Event_Type event) +{ + Evas_List obs_list = NULL; + E_Observer *obs = NULL; + + D_ENTER; + + if (!o) + D_RETURN; + + for (obs_list = o->observers; obs_list; obs_list = obs_list->next) + { + obs = E_OBSERVER(obs_list->data); + + if (obs->event == ECORE_EVENT_MAX || + obs->event == event) + { + obs->notify_func(obs, o); + } + } + + D_RETURN; +} + + +void +e_observee_cleanup(E_Observee *obs) +{ + E_Observer *observer = NULL; + + D_ENTER; + + if (!obs) + D_RETURN; + + if (e_object_get_usecount(E_OBJECT(obs)) == 1) + { + while (obs->observers) + { + observer = E_OBSERVER(obs->observers->data); + e_observer_unregister_observee(observer, obs); + } + } + + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(obs)); + + D_RETURN; +} + diff --git a/src/observer.h b/src/observer.h new file mode 100644 index 000000000..851daf1cc --- /dev/null +++ b/src/observer.h @@ -0,0 +1,107 @@ +#ifndef E_OBSERVER_H +#define E_OBSERVER_H + +#include + +#include "e.h" +#include "object.h" + +#define E_OBSERVER(x) ((E_Observer*)(x)) +#define E_OBSERVEE(x) ((E_Observee*)(x)) + +typedef struct _e_observer E_Observer; +typedef struct _e_observee E_Observee; + +typedef void(*E_Notify_Func)(E_Observer *observer, E_Observee *observee); + +struct _e_observer +{ + E_Object obj; + + Evas_List watched; /* list */ + Ecore_Event_Type event; + E_Notify_Func notify_func; +}; + +struct _e_observee +{ + E_Object obj; + + Evas_List observers; /* list */ +}; + + +/** + * e_observer_init - Initializes an observer + * @obs The observer to initialize + * @event The Ecore event for which this observer will be responsible + * @nofify_func The function the observer calls when it gets notified + * @cleanup_func The destructor function to pass to the E_Object initializer + * + * This function initializes an observer. Observees can register observers, + * which will call the given @notify_func when an observer issues an + * e_observee_notify_observers() call. Observers are derived from + * E_Objects, therefore, this function also handles E_Object initalization. + */ +void e_observer_init(E_Observer *obs, Ecore_Event_Type event, + E_Notify_Func notify_func, + E_Cleanup_Func cleanup_func); + +/** + * e_observer_cleanup - Cleans up an observer. + * @obs The observer to clean up + * + * This function cleans up an observer by unregistering all observees. + */ +void e_observer_cleanup(E_Observer *obs); + +/** + * e_observer_register_observee - Registers an observee + * @observer The observer which registers the observee + * @observee The observee which registers the observer + * + * This function registers the observer in the observee and vice versa. + */ +void e_observer_register_observee(E_Observer *observer, E_Observee *observee); + +/** + * e_observer_unregister_observee - Unregisters an observee + * @observer The observer which unregisters the observee + * @observee The observee which unregisters the observer + * + * This function unregisters the observer in the observee and vice versa. + */ +void e_observer_unregister_observee(E_Observer *observer, E_Observee *observee); + +/** + * e_observee_init - Initializes an observee. + * @obs The observee to initialize + * @cleanup_func The destructor function for cleaning this observee up + * + * This function initializes an observee. Observees are derived + * from E_Objects, which is why this function gets the destructor + * function as a parameter. It is passed on to e_object_init(). + */ +void e_observee_init(E_Observee *obs, E_Cleanup_Func cleanup_func); + +/** + * e_observee_cleanup - Cleans up an observee. + * @obs The observee to clean up + * + * This function cleans up an observee by unregistering it from all observers. + */ +void e_observee_cleanup(E_Observee *obs); + +/** + * e_observee_notify_observers - Notify observers of a given Ecore event + * @o The observee which notifies its observers + * @event The event by which to filter the observers + * + * This function scans the registered observers in the observee + * and calls the notify_func() of the observers that are + * responsible for the given @event. + */ +void e_observee_notify_observers(E_Observee *o, Ecore_Event_Type event); + + +#endif diff --git a/src/place.c b/src/place.c index 681e596be..8fe44c1c9 100644 --- a/src/place.c +++ b/src/place.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "config.h" #include "place.h" #include "actions.h" @@ -15,8 +16,12 @@ e_mouse_down(Ecore_Event * ev) { Ecore_Event_Mouse_Down *e; + D_ENTER; + e = ev->event; - if (!win_place) return; + if (!win_place) D_RETURN; + + D_RETURN; } static void @@ -24,13 +29,16 @@ e_mouse_up(Ecore_Event * ev) { Ecore_Event_Mouse_Up *e; + D_ENTER; + e = ev->event; - if (!win_place) return; + if (!win_place) D_RETURN; e_action_stop("Window_Place", ACT_MOUSE_UP, 1, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, NULL, NULL, e->x, e->y, e->rx, e->ry); ecore_window_destroy(win_place); win_place = 0; - return; + + D_RETURN; } static void @@ -38,13 +46,17 @@ e_mouse_move(Ecore_Event * ev) { Ecore_Event_Mouse_Move *e; + D_ENTER; + e = ev->event; - if (!win_place) return; + if (!win_place) D_RETURN; e_action_cont("Window_Place", ACT_MOUSE_MOVE, 1, NULL, ECORE_EVENT_KEY_MODIFIER_NONE, NULL, NULL, e->x, e->y, e->rx, e->ry, e->rx - prx, e->ry - pry); prx = e->rx; pry = e->ry; + + D_RETURN; } static int @@ -55,6 +67,8 @@ e_place_manual(E_Border *b, E_Desktop *desk, int *x, int *y) int move_mode = E_GUIDES_BOX; E_CFG_INT(cfg_window_move_mode, "settings", "/window/move/mode", E_GUIDES_BOX); + D_ENTER; + E_CONFIG_INT_GET(cfg_window_move_mode, move_mode); w = b->current.requested.w; h = b->current.requested.h; @@ -87,10 +101,10 @@ e_place_manual(E_Border *b, E_Desktop *desk, int *x, int *y) /* start a move mode */ e_action_stop_by_type("Window_Place"); e_action_start("Window_Place", ACT_MOUSE_CLICK, 1, NULL, - ECORE_EVENT_KEY_MODIFIER_NONE, b, NULL, mx, my, rx, ry); + ECORE_EVENT_KEY_MODIFIER_NONE, E_OBJECT(b), NULL, mx, my, rx, ry); - if (move_mode != E_GUIDES_OPAQUE) return 0; - return 1; + if (move_mode != E_GUIDES_OPAQUE) D_RETURN_(0); + D_RETURN_(1); } static int @@ -101,6 +115,8 @@ e_place_smart(E_Border *b, E_Desktop *desk, int *x, int *y) int *a_x = NULL, *a_y = NULL; Evas_List l; + D_ENTER; + w = b->current.requested.w; h = b->current.requested.h; a_w = 2; @@ -411,7 +427,8 @@ e_place_smart(E_Border *b, E_Desktop *desk, int *x, int *y) done: FREE(a_x); FREE(a_y); - return 1; + + D_RETURN_(1); } static int @@ -419,11 +436,14 @@ e_place_middle(E_Border *b, E_Desktop *desk, int *x, int *y) { int w, h; + D_ENTER; + w = b->current.requested.w; h = b->current.requested.h; *x = (desk->real.w - w) / 2; *y = (desk->real.h - h) / 2; - return 1; + + D_RETURN_(1); } static int @@ -434,6 +454,8 @@ e_place_cascade(E_Border *b, E_Desktop *desk, int *x, int *y) static int count_y = 0; int pl, pr, pt, pb; + D_ENTER; + pl = pr = pt = pb = 0; if (b->bits.l) ebits_get_insets(b->bits.l, &pl, &pr, &pt, &pb); w = b->current.requested.w; @@ -444,7 +466,8 @@ e_place_cascade(E_Border *b, E_Desktop *desk, int *x, int *y) *y = count_y; count_x += pl; count_y += pt; - return 1; + + D_RETURN_(1); } static int @@ -452,6 +475,8 @@ e_place_random(E_Border *b, E_Desktop *desk, int *x, int *y) { int w, h; + D_ENTER; + w = b->current.requested.w; h = b->current.requested.h; @@ -465,28 +490,45 @@ e_place_random(E_Border *b, E_Desktop *desk, int *x, int *y) else *y = 0; - return 1; + D_RETURN_(1); } int e_place_border(E_Border *b, E_Desktop *desk, int *x, int *y, E_Placement_Mode mode) { + int result = 1; + + D_ENTER; + if (b->client.no_place) - return 1; + D_RETURN_(1); - if (mode == E_PLACE_MANUAL) return e_place_manual (b, desk, x, y); - if (mode == E_PLACE_SMART) return e_place_smart (b, desk, x, y); - if (mode == E_PLACE_MIDDLE) return e_place_middle (b, desk, x, y); - if (mode == E_PLACE_CASCADE) return e_place_cascade(b, desk, x, y); - if (mode == E_PLACE_RANDOM) return e_place_random (b, desk, x, y); + switch (mode) + { + case E_PLACE_MANUAL: + result = e_place_manual (b, desk, x, y); + case E_PLACE_SMART: + result = e_place_smart (b, desk, x, y); + case E_PLACE_MIDDLE: + result = e_place_middle (b, desk, x, y); + case E_PLACE_CASCADE: + result = e_place_cascade(b, desk, x, y); + case E_PLACE_RANDOM: + result = e_place_random (b, desk, x, y); + default: + } - return 1; + D_RETURN_(result); } void e_place_init(void) { + D_ENTER; + ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, e_mouse_down); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_mouse_up); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_MOVE, e_mouse_move); + + D_RETURN; } diff --git a/src/place.h b/src/place.h index 1b731c2b5..7ad0dffc1 100644 --- a/src/place.h +++ b/src/place.h @@ -15,8 +15,27 @@ typedef enum e_placement_mode } E_Placement_Mode; -int e_place_border(E_Border *b, E_Desktop *desk, int *x, int *y, E_Placement_Mode mode); +/** + * e_place_init - window placement initialization + * + * This function registers the event handlers necessary + * to be able to manage window placement strategies. + */ void e_place_init(void); + +/** + * e_place_border - calculates window coordinates with given strategy + * @b: The border if the window for which to calculate coordinates + * @desk: The desktop on which to perform the calculation + * @x: Result pointer to an integer which gets the resulting x coordinate + * @y: Result pointer to an integer which gets the resulting y coordinate + * @mode: The placement mode. Any of the values in the E_Placement_Mode enum. + * + * This function calculates coordinates for a given window border + * and returns them in the @x and @y pointers. It does not actually + * place the window. + */ +int e_place_border(E_Border *b, E_Desktop *desk, int *x, int *y, E_Placement_Mode mode); #endif diff --git a/src/resist.c b/src/resist.c index 04fb798b4..9fe28678e 100644 --- a/src/resist.c +++ b/src/resist.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "resist.h" #include "config.h" #include "desktops.h" @@ -16,6 +17,9 @@ e_resist_border(E_Border *b) E_CFG_INT(cfg_resist, "settings", "/move/resist", 1); E_CFG_INT(cfg_desk_resist, "settings", "/move/resist/desk", 32); E_CFG_INT(cfg_win_resist, "settings", "/move/resist/win", 12); + + + D_ENTER; E_CONFIG_INT_GET(cfg_resist, resist); E_CONFIG_INT_GET(cfg_desk_resist, desk_resist); @@ -24,9 +28,9 @@ e_resist_border(E_Border *b) { b->current.x = b->current.requested.x; b->current.y = b->current.requested.y; - return; + D_RETURN; } - if (!b->desk) return; + if (!b->desk) D_RETURN; dx = b->current.requested.x - b->previous.requested.x; dy = b->current.requested.y - b->previous.requested.y; /* edges of screen */ @@ -131,4 +135,6 @@ rects = evas_list_append(rects, r); \ else b->current.y = b->current.requested.y + resist_y; } + + D_RETURN; } diff --git a/src/scrollbar.c b/src/scrollbar.c index 1f764ec65..73eb89949 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "scrollbar.h" #include "config.h" @@ -13,6 +14,8 @@ static void e_sb_bar_move_cb(void *data, Ebits_Object o, char *class, int bt, in static void e_scrollbar_recalc(E_Scrollbar *sb) { + D_ENTER; + if (sb->base) { double x, y, w, h; @@ -51,6 +54,8 @@ e_scrollbar_recalc(E_Scrollbar *sb) sb->bar_pos.w = sb->bar_area.w; sb->bar_pos.h = sb->bar_area.h; } + + D_RETURN; UN(sb); } @@ -59,6 +64,8 @@ e_scrollbar_setup_bits(E_Scrollbar *sb) { char buf[PATH_MAX]; + D_ENTER; + if (sb->direction == 1) { sprintf(buf, "%s/scroll_base_v.bits.db", e_config_get("scrollbars")); @@ -90,6 +97,8 @@ e_scrollbar_setup_bits(E_Scrollbar *sb) ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar", CALLBACK_MOUSE_UP, e_sb_bar_up_cb, sb); ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar", CALLBACK_MOUSE_MOVE, e_sb_bar_move_cb, sb); } + + D_RETURN; } static void @@ -98,10 +107,12 @@ e_sb_base_down_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, E_Scrollbar *sb; double prev; + D_ENTER; + sb = data; - if (sb->mouse_down) return; + if (sb->mouse_down) D_RETURN; sb->mouse_down = bt; - if (!class) return; + if (!class) D_RETURN; prev = sb->val; if (!strcmp(class, "Scrollbar_Arrow1")) { @@ -123,6 +134,8 @@ e_sb_base_down_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, { if (sb->func_change) sb->func_change(sb->func_data, sb, sb->val); } + + D_RETURN; } static void @@ -130,10 +143,12 @@ e_sb_base_up_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, i { E_Scrollbar *sb; + D_ENTER; + sb = data; if (bt == sb->mouse_down) sb->mouse_down = 0; - else return; - if (!class) return; + else D_RETURN; + if (!class) D_RETURN; if (!strcmp(class, "Scrollbar_Arrow1")) { } @@ -143,6 +158,8 @@ e_sb_base_up_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, i else if (!strcmp(class, "Scrollbar_Trough")) { } + + D_RETURN; } static void @@ -150,13 +167,17 @@ e_sb_bar_down_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, { E_Scrollbar *sb; + D_ENTER; + sb = data; - if (sb->mouse_down) return; + if (sb->mouse_down) D_RETURN; sb->mouse_down = bt; sb->down_x = x; sb->down_y = y; sb->mouse_x = x; sb->mouse_y = y; + + D_RETURN; } static void @@ -164,9 +185,15 @@ e_sb_bar_up_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, in { E_Scrollbar *sb; + D_ENTER; + sb = data; - if (bt == sb->mouse_down) sb->mouse_down = 0; - else return; + if (bt == sb->mouse_down) + sb->mouse_down = 0; + else + D_RETURN; + + D_RETURN; } static void @@ -176,8 +203,10 @@ e_sb_bar_move_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, int dx, dy; double prev; + D_ENTER; + sb = data; - if (!sb->mouse_down) return; + if (!sb->mouse_down) D_RETURN; dx = x - sb->mouse_x; dy = y - sb->mouse_y; sb->mouse_x = x; @@ -204,6 +233,8 @@ e_sb_bar_move_cb(void *data, Ebits_Object o, char *class, int bt, int x, int y, if (sb->bar) ebits_resize(sb->bar, sb->bar_pos.w, sb->bar_pos.h); if (sb->func_change) sb->func_change(sb->func_data, sb, sb->val); } + + D_RETURN; } E_Scrollbar * @@ -211,29 +242,38 @@ e_scrollbar_new(void) { E_Scrollbar *sb; + D_ENTER; + sb = NEW(E_Scrollbar, 1); ZERO(sb, E_Scrollbar, 1); sb->range = 1.0; sb->max = 1.0; sb->w = 12; sb->h = 64; - return sb; + + D_RETURN_(sb); } void e_scrollbar_free(E_Scrollbar *sb) { + D_ENTER; + if (sb->evas) { if (sb->base) ebits_free(sb->base); if (sb->bar) ebits_free(sb->bar); } FREE(sb); + + D_RETURN; } void e_scrollbar_add_to_evas(E_Scrollbar *sb, Evas evas) { + D_ENTER; + if (sb->evas) { if (sb->base) ebits_free(sb->base); @@ -256,53 +296,77 @@ e_scrollbar_add_to_evas(E_Scrollbar *sb, Evas evas) if (sb->bar) ebits_show(sb->bar); } } + + D_RETURN; } void e_scrollbar_show(E_Scrollbar *sb) { - if (sb->visible) return; + D_ENTER; + + if (sb->visible) D_RETURN; sb->visible = 1; if (sb->base) ebits_show(sb->base); if (sb->bar) ebits_show(sb->bar); + + D_RETURN; } void e_scrollbar_hide(E_Scrollbar *sb) { - if (!sb->visible) return; + D_ENTER; + + if (!sb->visible) D_RETURN; sb->visible = 0; if (sb->base) ebits_hide(sb->base); if (sb->bar) ebits_hide(sb->bar); + + D_RETURN; } void e_scrollbar_raise(E_Scrollbar *sb) { + D_ENTER; + if (sb->base) ebits_raise(sb->base); if (sb->bar) ebits_raise(sb->bar); + + D_RETURN; } void e_scrollbar_lower(E_Scrollbar *sb) { + D_ENTER; + if (sb->bar) ebits_lower(sb->bar); if (sb->base) ebits_lower(sb->base); + + D_RETURN; } void e_scrollbar_set_layer(E_Scrollbar *sb, int l) { - if (l == sb->layer) return; + D_ENTER; + + if (l == sb->layer) D_RETURN; sb->layer = l; if (sb->base) ebits_set_layer(sb->base, sb->layer); if (sb->bar) ebits_set_layer(sb->bar, sb->layer); + + D_RETURN; } void e_scrollbar_set_direction(E_Scrollbar *sb, int d) { - if (d == sb->direction) return; + D_ENTER; + + if (d == sb->direction) D_RETURN; sb->direction = d; if (sb->evas) { @@ -314,29 +378,39 @@ e_scrollbar_set_direction(E_Scrollbar *sb, int d) sb->evas = NULL; e_scrollbar_add_to_evas(sb, evas); } - } + + D_RETURN; +} void e_scrollbar_move(E_Scrollbar *sb, double x, double y) { - if ((x == sb->x) && (y == sb->y)) return; + D_ENTER; + + if ((x == sb->x) && (y == sb->y)) D_RETURN; sb->x = x; sb->y = y; if (sb->base) ebits_move(sb->base, sb->x, sb->y); e_scrollbar_recalc(sb); if (sb->bar) ebits_move(sb->bar, sb->bar_pos.x, sb->bar_pos.y); + + D_RETURN; } void e_scrollbar_resize(E_Scrollbar *sb, double w, double h) { - if ((w == sb->w) && (h == sb->h)) return; + D_ENTER; + + if ((w == sb->w) && (h == sb->h)) D_RETURN; sb->w = w; sb->h = h; if (sb->base) ebits_resize(sb->base, sb->w, sb->h); e_scrollbar_recalc(sb); if (sb->bar) ebits_move(sb->bar, sb->bar_pos.x, sb->bar_pos.y); if (sb->bar) ebits_resize(sb->bar, sb->bar_pos.w, sb->bar_pos.h); + + D_RETURN; } void @@ -344,14 +418,20 @@ e_scrollbar_set_change_func(E_Scrollbar *sb, void (*func_change) (void *_data, E_Scrollbar *sb, double val), void *data) { + D_ENTER; + sb->func_change = func_change; sb->func_data = data; + + D_RETURN; } void e_scrollbar_set_value(E_Scrollbar *sb, double val) { - if (sb->val == val) return; + D_ENTER; + + if (sb->val == val) D_RETURN; if (val > sb->max - sb->range) val = sb->max - sb->range; if (val < 0 ) val = 0; sb->val = val; @@ -359,51 +439,71 @@ e_scrollbar_set_value(E_Scrollbar *sb, double val) if (sb->bar) ebits_move(sb->bar, sb->bar_pos.x, sb->bar_pos.y); if (sb->bar) ebits_resize(sb->bar, sb->bar_pos.w, sb->bar_pos.h); if (sb->func_change) sb->func_change(sb->func_data, sb, sb->val); + + D_RETURN; } void e_scrollbar_set_range(E_Scrollbar *sb, double range) { - if (sb->range == range) return; + D_ENTER; + + if (sb->range == range) D_RETURN; sb->range = range; e_scrollbar_recalc(sb); if (sb->bar) ebits_move(sb->bar, sb->bar_pos.x, sb->bar_pos.y); if (sb->bar) ebits_resize(sb->bar, sb->bar_pos.w, sb->bar_pos.h); + + D_RETURN; } void e_scrollbar_set_max(E_Scrollbar *sb, double max) { - if (sb->max == max) return; + D_ENTER; + + if (sb->max == max) D_RETURN; sb->max = max; e_scrollbar_recalc(sb); if (sb->bar) ebits_move(sb->bar, sb->bar_pos.x, sb->bar_pos.y); if (sb->bar) ebits_resize(sb->bar, sb->bar_pos.w, sb->bar_pos.h); + + D_RETURN; } double e_scrollbar_get_value(E_Scrollbar *sb) { - return sb->val; + D_ENTER; + + D_RETURN_(sb->val); } double e_scrollbar_get_range(E_Scrollbar *sb) { - return sb->range; + D_ENTER; + + D_RETURN_(sb->range); } double e_scrollbar_get_max(E_Scrollbar *sb) { - return sb->max; + D_ENTER; + + D_RETURN_(sb->max); } void e_scrollbar_get_geometry(E_Scrollbar *sb, double *x, double *y, double *w, double *h) { + D_ENTER; + if (x) *x = sb->x; if (y) *y = sb->y; if (w) *w = sb->w; if (h) *h = sb->h; + + D_RETURN; } diff --git a/src/text.c b/src/text.c index 5c849c9d8..6a25e90af 100644 --- a/src/text.c +++ b/src/text.c @@ -1,3 +1,4 @@ +#include "debug.h" #include "text.h" E_Text * @@ -5,6 +6,8 @@ e_text_new(Evas evas, char *text, char *class) { E_Text *t; + D_ENTER; + t = NEW(E_Text, 1); ZERO(t, E_Text, 1); t->state = strdup("normal"); @@ -38,12 +41,15 @@ e_text_new(Evas evas, char *text, char *class) t->min.h = t->h + 2; t->max.w = t->w + 2; t->max.h = t->h + 2; - return t; + + D_RETURN_(t); } void e_text_free(E_Text *t) { + D_ENTER; + IF_FREE(t->state); IF_FREE(t->class); IF_FREE(t->text); @@ -57,13 +63,17 @@ e_text_free(E_Text *t) evas_del_object(t->evas, t->obj.text); } FREE(t); + + D_RETURN; } void e_text_set_text(E_Text *t, char *text) { + D_ENTER; + if (!text) text = ""; - if (!strcmp(t->text, text)) return; + if (!strcmp(t->text, text)) D_RETURN; IF_FREE(t->text); t->text = strdup(text); evas_set_text(t->evas, t->obj.o1, t->text); @@ -77,102 +87,138 @@ e_text_set_text(E_Text *t, char *text) t->min.h = t->h + 2; t->max.w = t->w + 2; t->max.h = t->h + 2; + + D_RETURN; } void e_text_set_layer(E_Text *t, int l) { - if (t->layer == l) return; + D_ENTER; + + if (t->layer == l) D_RETURN; t->layer = l; evas_set_layer(t->evas, t->obj.o1, t->layer); evas_set_layer(t->evas, t->obj.o2, t->layer); evas_set_layer(t->evas, t->obj.o3, t->layer); evas_set_layer(t->evas, t->obj.o4, t->layer); evas_set_layer(t->evas, t->obj.text, t->layer); + + D_RETURN; } void e_text_set_clip(E_Text *t, Evas_Object clip) { + D_ENTER; + evas_set_clip(t->evas, t->obj.o1, clip); evas_set_clip(t->evas, t->obj.o2, clip); evas_set_clip(t->evas, t->obj.o3, clip); evas_set_clip(t->evas, t->obj.o4, clip); evas_set_clip(t->evas, t->obj.text, clip); + + D_RETURN; } void e_text_unset_clip(E_Text *t) { + D_ENTER; + evas_unset_clip(t->evas, t->obj.o1); evas_unset_clip(t->evas, t->obj.o2); evas_unset_clip(t->evas, t->obj.o3); evas_unset_clip(t->evas, t->obj.o4); evas_unset_clip(t->evas, t->obj.text); + + D_RETURN; } void e_text_raise(E_Text *t) { + D_ENTER; + evas_raise(t->evas, t->obj.o1); evas_raise(t->evas, t->obj.o2); evas_raise(t->evas, t->obj.o3); evas_raise(t->evas, t->obj.o4); evas_raise(t->evas, t->obj.text); + + D_RETURN; } void e_text_lower(E_Text *t) { + D_ENTER; + evas_lower(t->evas, t->obj.text); evas_lower(t->evas, t->obj.o4); evas_lower(t->evas, t->obj.o3); evas_lower(t->evas, t->obj.o2); evas_lower(t->evas, t->obj.o1); + + D_RETURN; } void e_text_show(E_Text *t) { - if (t->visible) return; + D_ENTER; + + if (t->visible) D_RETURN; t->visible = 1; evas_show(t->evas, t->obj.o1); evas_show(t->evas, t->obj.o2); evas_show(t->evas, t->obj.o3); evas_show(t->evas, t->obj.o4); evas_show(t->evas, t->obj.text); + + D_RETURN; } void e_text_hide(E_Text *t) { - if (!t->visible) return; + D_ENTER; + + if (!t->visible) D_RETURN; t->visible = 0; evas_hide(t->evas, t->obj.o1); evas_hide(t->evas, t->obj.o2); evas_hide(t->evas, t->obj.o3); evas_hide(t->evas, t->obj.o4); evas_hide(t->evas, t->obj.text); + + D_RETURN; } void e_text_set_color(E_Text *t, int r, int g, int b, int a) { + D_ENTER; + if ((r == t->color.r) && (g == t->color.g) && (b == t->color.b) && - (a == t->color.a)) return; + (a == t->color.a)) D_RETURN; t->color.r = r; t->color.g = g; t->color.b = b; t->color.a = a; evas_set_color(t->evas, t->obj.text, t->color.r, t->color.g, t->color.b, t->color.a); + + D_RETURN; } void e_text_move(E_Text *t, double x, double y) { - if ((t->x == x) && (t->y == y)) return; + D_ENTER; + + if ((t->x == x) && (t->y == y)) D_RETURN; t->x = x; t->y = y; evas_move(t->evas, t->obj.o1, t->x + 1, t->y); @@ -180,11 +226,17 @@ e_text_move(E_Text *t, double x, double y) evas_move(t->evas, t->obj.o3, t->x + 2, t->y + 1); evas_move(t->evas, t->obj.o4, t->x + 1, t->y + 2); evas_move(t->evas, t->obj.text, t->x + 1, t->y + 1); + + D_RETURN; } void e_text_resize(E_Text *t, double w, double h) { + D_ENTER; + + + D_RETURN; UN(t); UN(w); UN(h); @@ -193,42 +245,66 @@ e_text_resize(E_Text *t, double w, double h) void e_text_get_geometry(E_Text *t, double *x, double *y, double *w, double *h) { + D_ENTER; + if (x) *x = t->x; if (y) *y = t->y; if (w) *w = t->w; if (h) *h = t->h; + + D_RETURN; } void e_text_get_min_size(E_Text *t, double *w, double *h) { + D_ENTER; + if (w) *w = t->min.w; if (h) *h = t->min.h; + + D_RETURN; } void e_text_get_max_size(E_Text *t, double *w, double *h) { + D_ENTER; + if (w) *w = t->max.w; if (h) *h = t->max.h; + + D_RETURN; } void e_text_set_state(E_Text *t, char *state) { + D_ENTER; + UN(t); UN(state); + + D_RETURN; } void e_text_set_class(E_Text *t, char *class) { + D_ENTER; + UN(t); UN(class); + + D_RETURN; } void e_text_update_class(E_Text *t) { + D_ENTER; + + + D_RETURN; UN(t); } diff --git a/src/util.c b/src/util.c index c4bf9f634..4931c2cb2 100644 --- a/src/util.c +++ b/src/util.c @@ -1,12 +1,16 @@ +#include "debug.h" #include "util.h" time_t e_file_modified_time(char *file) { struct stat st; + + D_ENTER; - if (stat(file, &st) < 0) return 0; - return st.st_mtime; + if (stat(file, &st) < 0) D_RETURN_(0); + + D_RETURN_(st.st_mtime); } void @@ -14,8 +18,12 @@ e_set_env(char *variable, char *content) { char env[PATH_MAX]; + D_ENTER; + sprintf(env, "%s=%s", variable, content); putenv(env); + + D_RETURN; } int @@ -23,8 +31,11 @@ e_file_exists(char *file) { struct stat st; - if (stat(file, &st) < 0) return 0; - return 1; + D_ENTER; + + if (stat(file, &st) < 0) D_RETURN_(0); + + D_RETURN_(1); } int @@ -32,9 +43,12 @@ e_file_is_dir(char *file) { struct stat st; - if (stat(file, &st) < 0) return 0; - if (S_ISDIR(st.st_mode)) return 1; - return 0; + D_ENTER; + + if (stat(file, &st) < 0) D_RETURN_(0); + if (S_ISDIR(st.st_mode)) D_RETURN_(1); + + D_RETURN_(0); } char * @@ -42,11 +56,14 @@ e_file_home(void) { static char *home = NULL; - if (home) return home; + D_ENTER; + + if (home) D_RETURN_(home); home = getenv("HOME"); if (!home) home = getenv("TMPDIR"); if (!home) home = "/tmp"; - return home; + + D_RETURN_(home); } static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH; @@ -54,8 +71,11 @@ static mode_t default_mode = S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IXG int e_file_mkdir(char *dir) { - if (mkdir(dir, default_mode) < 0) return 0; - return 1; + D_ENTER; + + if (mkdir(dir, default_mode) < 0) D_RETURN_(0); + + D_RETURN_(1); } int @@ -65,18 +85,21 @@ e_file_cp(char *src, char *dst) char buf[16384]; size_t num; + D_ENTER; + f1 = fopen(src, "rb"); - if (!f1) return 0; + if (!f1) D_RETURN_(0); f2 = fopen(dst, "wb"); if (!f2) { fclose(f1); - return 0; + D_RETURN_(0); } while ((num = fread(buf, 1, 16384, f1)) > 0) fwrite(buf, 1, num, f2); fclose(f1); fclose(f2); - return 1; + + D_RETURN_(1); } char * @@ -85,9 +108,12 @@ e_file_real(char *file) char buf[PATH_MAX]; char *f; - if (!realpath(file, buf)) return strdup(""); + D_ENTER; + + if (!realpath(file, buf)) D_RETURN_(strdup("")); e_strdup(f, buf); - return f; + + D_RETURN_(f); } char * @@ -96,14 +122,17 @@ e_file_get_file(char *file) char *p; char *f; + D_ENTER; + p = strrchr(file, '/'); if (!p) { e_strdup(f, file); - return f; + D_RETURN_(f); } e_strdup(f, &(p[1])); - return f; + + D_RETURN_(f); } char * @@ -113,16 +142,19 @@ e_file_get_dir(char *file) char *f; char buf[PATH_MAX]; + D_ENTER; + strcpy(buf, file); p = strrchr(buf, '/'); if (!p) { e_strdup(f, file); - return f; + D_RETURN_(f); } *p = 0; e_strdup(f, buf); - return f; + + D_RETURN_(f); } void * @@ -130,17 +162,23 @@ e_memdup(void *data, int size) { void *data_dup; + D_ENTER; + data_dup = malloc(size); - if (!data_dup) return NULL; + if (!data_dup) D_RETURN_(NULL); memcpy(data_dup, data, size); - return data_dup; + + D_RETURN_(data_dup); } int e_glob_matches(char *str, char *glob) { - if (!fnmatch(glob, str, 0)) return 1; - return 0; + D_ENTER; + + if (!fnmatch(glob, str, 0)) D_RETURN_(1); + + D_RETURN_(0); } int @@ -151,7 +189,9 @@ e_file_can_exec(struct stat *st) static gid_t gid = -1; int ok; - if (!st) return 0; + D_ENTER; + + if (!st) D_RETURN_(0); ok = 0; if (!have_uid) uid = getuid(); if (!have_uid) gid = getgid(); @@ -168,7 +208,8 @@ e_file_can_exec(struct stat *st) { if (st->st_mode & S_IXOTH) ok = 1; } - return ok; + + D_RETURN_(ok); } char * @@ -178,10 +219,13 @@ e_file_link(char *link) char *f; int count; - if ((count = readlink(link, buf, sizeof(buf))) < 0) return NULL; + D_ENTER; + + if ((count = readlink(link, buf, sizeof(buf))) < 0) D_RETURN_(NULL); buf[count] = 0; e_strdup(f, buf); - return f; + + D_RETURN_(f); } Evas_List @@ -191,8 +235,10 @@ e_file_list_dir(char *dir) struct dirent *dp; Evas_List list; + D_ENTER; + dirp = opendir(dir); - if (!dirp) return NULL; + if (!dirp) D_RETURN_(NULL); list = NULL; while ((dp = readdir(dirp))) { @@ -218,5 +264,6 @@ e_file_list_dir(char *dir) } } closedir(dirp); - return list; + + D_RETURN_(list); } diff --git a/src/view.c b/src/view.c index 5fc071055..c13dcd0c4 100644 --- a/src/view.c +++ b/src/view.c @@ -1,5 +1,6 @@ #include +#include "debug.h" #include "view.h" #include "cursors.h" #include "background.h" @@ -57,6 +58,8 @@ e_view_write_icon_xy_timeout(int val, void *data) E_View *v; Evas_List l; E_Icon *ic; + + D_ENTER; v = data; for (l = v->icons; l; l = l->next) @@ -78,11 +81,15 @@ e_view_write_icon_xy_timeout(int val, void *data) ic->geom.y); } } + + D_RETURN; } void e_view_selection_update(E_View *v) { + D_ENTER; + if ((v->select.on) && (!v->select.obj.middle)) { Evas_Gradient grad; @@ -209,9 +216,9 @@ e_view_selection_update(E_View *v) evas_del_object(v->evas, v->select.obj.grad_b); evas_del_object(v->evas, v->select.obj.clip); v->select.obj.middle = NULL; - return; + D_RETURN; } - if (!v->select.on) return; + if (!v->select.on) D_RETURN; /* move & resize select objects */ { evas_move(v->evas, v->select.obj.edge_l, v->select.x, v->select.y + 1); @@ -246,6 +253,8 @@ e_view_selection_update(E_View *v) evas_show(v->evas, v->select.obj.grad_t); evas_show(v->evas, v->select.obj.grad_b); evas_show(v->evas, v->select.obj.clip); + + D_RETURN; } static void @@ -253,8 +262,12 @@ e_view_scrollbar_v_change_cb(void *_data, E_Scrollbar *sb, double val) { E_View *v; + D_ENTER; + v = _data; e_view_scroll_to(v, v->scroll.x, v->spacing.window.t - sb->val); + + D_RETURN; UN(val); } @@ -263,8 +276,12 @@ e_view_scrollbar_h_change_cb(void *_data, E_Scrollbar *sb, double val) { E_View *v; + D_ENTER; + v = _data; e_view_scroll_to(v, v->spacing.window.l - sb->val, v->scroll.y); + + D_RETURN; UN(val); } @@ -274,7 +291,9 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) Ecore_Event_Mouse_Down *ev; E_View *v; - if (!current_ev) return; + D_ENTER; + + if (!current_ev) D_RETURN; ev = current_ev->event; v = _data; if (!(ev->mods & (mulit_select_mod | range_select_mod))) @@ -306,8 +325,11 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) } e_view_selection_update(v); } + if( _b == 2 && ev->double_click ) ecore_event_loop_quit(); + + D_RETURN; UN(_e); UN(_o); } @@ -319,7 +341,9 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) E_View *v; int dx, dy; - if (!current_ev) return; + D_ENTER; + + if (!current_ev) D_RETURN; ev = current_ev->event; v = _data; dx = 0; @@ -406,6 +430,8 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) v->select.x = _x; v->select.y = _y; } + + D_RETURN; UN(_e); UN(_o); } @@ -416,7 +442,9 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) Ecore_Event_Mouse_Down *ev; E_View *v; - if (!current_ev) return; + D_ENTER; + + if (!current_ev) D_RETURN; ev = current_ev->event; v = _data; if (v->select.on) @@ -443,6 +471,8 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) } e_view_selection_update(v); } + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -455,10 +485,12 @@ e_view_icon_update_state(E_Icon *ic) int iw, ih; int gw, gh; + D_ENTER; + if (!ic->info.icon) { printf("EEEEEEEEEEK %s has no icon\n", ic->file); - return; + D_RETURN; } if (ic->state.clicked) { @@ -527,8 +559,10 @@ e_view_icon_update_state(E_Icon *ic) gw = ic->geom.icon.w; gh = ic->geom.icon.h; e_view_icon_apply_xy(ic); - if ((iw == gw) && (ih == gh)) return; + if ((iw == gw) && (ih == gh)) D_RETURN; e_view_queue_resort(ic->view); + + D_RETURN; } void @@ -536,6 +570,8 @@ e_view_deselect_all(void) { Evas_List ll; + D_ENTER; + for (ll = views; ll; ll = ll->next) { Evas_List l; @@ -550,6 +586,8 @@ e_view_deselect_all(void) e_view_icon_deselect(ic); } } + + D_RETURN; } void @@ -557,6 +595,8 @@ e_view_deselect_all_except(E_Icon *not_ic) { Evas_List ll; + D_ENTER; + for (ll = views; ll; ll = ll->next) { Evas_List l; @@ -572,40 +612,56 @@ e_view_deselect_all_except(E_Icon *not_ic) e_view_icon_deselect(ic); } } + + D_RETURN; } void e_view_icon_invert_selection(E_Icon *ic) { + D_ENTER; + if (ic->state.selected) e_view_icon_deselect(ic); else e_view_icon_select(ic); + + D_RETURN; } void e_view_icon_select(E_Icon *ic) { + D_ENTER; + if (!ic->state.selected) { ic->state.selected = 1; ic->view->sel_count++; e_view_icon_update_state(ic); } + + D_RETURN; } void e_view_icon_deselect(E_Icon *ic) { + D_ENTER; + if (ic->state.selected) { ic->state.selected = 0; ic->view->sel_count--; e_view_icon_update_state(ic); } + + D_RETURN; } void e_view_icon_exec(E_Icon *ic) { + D_ENTER; + if (!strcmp(ic->info.mime.base, "dir")) { E_View *v; @@ -632,6 +688,8 @@ e_view_icon_exec(E_Icon *ic) ecore_window_set_min_size(v->win.base, 8, 8); } e_view_icon_deselect(ic); + + D_RETURN; } void @@ -640,6 +698,8 @@ e_view_icons_get_extents(E_View *v, int *min_x, int *min_y, int *max_x, int *max Evas_List l; int x1, x2, y1, y2; + D_ENTER; + x1 = v->extents.x1; x2 = v->extents.x2; y1 = v->extents.y1; @@ -656,7 +716,7 @@ e_view_icons_get_extents(E_View *v, int *min_x, int *min_y, int *max_x, int *max if (min_y) *min_y = 0; if (max_x) *max_x = 1; if (max_y) *max_y = 1; - return; + D_RETURN; } for (l = v->icons; l; l = l->next) { @@ -680,6 +740,8 @@ e_view_icons_get_extents(E_View *v, int *min_x, int *min_y, int *max_x, int *max if (min_y) *min_y = y1; if (max_x) *max_x = x2 - 1; if (max_y) *max_y = y2 - 1; + + D_RETURN; } void @@ -687,6 +749,8 @@ e_view_icons_apply_xy(E_View *v) { Evas_List l; + D_ENTER; + for (l = v->icons; l; l = l->next) { E_Icon *ic; @@ -694,6 +758,8 @@ e_view_icons_apply_xy(E_View *v) ic = l->data; e_view_icon_apply_xy(ic); } + + D_RETURN; } void @@ -701,6 +767,8 @@ e_view_scroll_to(E_View *v, int sx, int sy) { int min_x, min_y, max_x, max_y; + D_ENTER; + e_view_icons_get_extents(v, &min_x, &min_y, &max_x, &max_y); if (sx < v->size.w - v->spacing.window.r - max_x) sx = v->size.w - v->spacing.window.r - max_x; @@ -710,17 +778,23 @@ e_view_scroll_to(E_View *v, int sx, int sy) sy = v->size.h - v->spacing.window.b - max_y; if (sy > v->spacing.window.t - min_y) sy = v->spacing.window.t - min_y; - if ((sx == v->scroll.x) && (v->scroll.y == sy)) return; + if ((sx == v->scroll.x) && (v->scroll.y == sy)) D_RETURN; v->scroll.x = sx; v->scroll.y = sy; e_view_icons_apply_xy(v); if (v->bg) e_background_set_scroll(v->bg, v->scroll.x, v->scroll.y); + + D_RETURN; } void e_view_scroll_by(E_View *v, int sx, int sy) { + D_ENTER; + e_view_scroll_to(v, v->scroll.x + sx, v->scroll.y + sy); + + D_RETURN; } void @@ -729,6 +803,8 @@ e_view_scroll_to_percent(E_View *v, double psx, double psy) int min_x, min_y, max_x, max_y; int sx, sy; + D_ENTER; + e_view_icons_get_extents(v, &min_x, &min_y, &max_x, &max_y); sx = (psx * ((double)max_x - (double)min_x)) - min_x; sy = (psy * ((double)max_y - (double)min_y)) - min_y; @@ -740,11 +816,13 @@ e_view_scroll_to_percent(E_View *v, double psx, double psy) sy = v->size.h - v->spacing.window.b - max_y; if (sy > v->spacing.window.t - min_y) sy = v->spacing.window.t - min_y; - if ((sx == v->scroll.x) && (v->scroll.y == sy)) return; + if ((sx == v->scroll.x) && (v->scroll.y == sy)) D_RETURN; v->scroll.x = sx; v->scroll.y = sy; e_view_icons_apply_xy(v); if (v->bg) e_background_set_scroll(v->bg, v->scroll.x, v->scroll.y); + + D_RETURN; } void @@ -753,6 +831,8 @@ e_view_get_viewable_percentage(E_View *v, double *vw, double *vh) int min_x, min_y, max_x, max_y; double p; + D_ENTER; + e_view_icons_get_extents(v, &min_x, &min_y, &max_x, &max_y); if (min_x == max_x) { @@ -774,6 +854,8 @@ e_view_get_viewable_percentage(E_View *v, double *vw, double *vh) ((double)(max_y - min_y)); if (vh) *vh = p; } + + D_RETURN; } void @@ -782,6 +864,8 @@ e_view_get_position_percentage(E_View *v, double *vx, double *vy) int min_x, min_y, max_x, max_y; double p; + D_ENTER; + e_view_icons_get_extents(v, &min_x, &min_y, &max_x, &max_y); if (min_x == max_x) { @@ -801,6 +885,8 @@ e_view_get_position_percentage(E_View *v, double *vx, double *vy) p = ((double)(v->scroll.y - min_y)) / ((double)(max_y - min_y)); if (vy) *vy = p; } + + D_RETURN; } static void @@ -810,8 +896,10 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) Ecore_Event *ev; Ecore_Event_Mouse_Down *e; + D_ENTER; + ev = e_view_get_current_event(); - if (!ev) return; + if (!ev) D_RETURN; e = ev->event; ic = _data; ic->view->select.down.x = _x; @@ -848,6 +936,8 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) else if (_b == 3) { } + + D_RETURN; UN(_e); UN(_o); } @@ -859,8 +949,10 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) Ecore_Event *ev; Ecore_Event_Mouse_Up *e; + D_ENTER; + ev = e_view_get_current_event(); - if (!ev) return; + if (!ev) D_RETURN; e = ev->event; ic = _data; if (ic->view->drag.started) @@ -870,7 +962,7 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) e_view_icon_update_state(ic); ecore_window_destroy(ic->view->drag.win); ic->view->drag.started = 0; - return; + D_RETURN; } if (_b == 1) { @@ -895,6 +987,8 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) } ic->state.clicked = 0; e_view_icon_update_state(ic); + + D_RETURN; UN(_e); UN(_o); UN(_x); @@ -906,8 +1000,12 @@ e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) { E_Icon *ic; + D_ENTER; + ic = _data; e_cursors_display_in_window(ic->view->win.main, "View_Icon"); + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -922,6 +1020,8 @@ e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) ic = _data; e_cursors_display_in_window(ic->view->win.main, "View"); + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -936,11 +1036,13 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) Ecore_Event *ev; Ecore_Event_Mouse_Move *e; + D_ENTER; + ev = e_view_get_current_event(); - if (!ev) return; + if (!ev) D_RETURN; e = ev->event; ic = _data; - if (!ic->state.clicked) return; + if (!ic->state.clicked) D_RETURN; if (!ic->view->drag.started) { int dx, dy; @@ -1019,7 +1121,7 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) ic->view->drag.offset.x = downx - ic->view->drag.x; ic->view->drag.offset.y = downy - ic->view->drag.y; - if ((ww < 1) || (wh < 1)) return; + if ((ww < 1) || (wh < 1)) D_RETURN; ic->view->drag.win = ecore_window_override_new(0, wx, wy, ww, wh); pmap = ecore_pixmap_new(ic->view->drag.win, ww, wh, 0); mask = ecore_pixmap_new(ic->view->drag.win, ww, wh, 1); @@ -1062,7 +1164,7 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) if (!ic->info.icon) { printf("EEEEEEEEEEK %s has no icon\n", ic->file); - return; + D_RETURN; } if (ic->state.clicked) { @@ -1132,6 +1234,8 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y) ic->view->drag.update = 1; ic->view->changed = 1; } + + D_RETURN; UN(_e); UN(_o); UN(_b); @@ -1142,6 +1246,8 @@ e_idle(void *data) { Evas_List l; + D_ENTER; + for (l = views; l; l = l->next) { E_View *v; @@ -1149,13 +1255,16 @@ e_idle(void *data) v = l->data; e_view_update(v); } - return; + + D_RETURN; UN(data); } void e_view_geometry_record(E_View *v) { + D_ENTER; + if (e_fs_get_connection()) { int left, top; @@ -1175,6 +1284,8 @@ e_view_geometry_record(E_View *v) "/view/h", v->dir, v->size.h); } + + D_RETURN; } static void @@ -1182,8 +1293,12 @@ e_view_geometry_record_timeout(int val, void *data) { E_View *v; + D_ENTER; + v = data; e_view_geometry_record(v); + + D_RETURN; UN(val); } @@ -1192,8 +1307,12 @@ e_view_queue_geometry_record(E_View *v) { char name[PATH_MAX]; + D_ENTER; + sprintf(name, "geometry_record.%s", v->dir); ecore_add_event_timer(name, 0.10, e_view_geometry_record_timeout, 0, v); + + D_RETURN; } void @@ -1201,8 +1320,12 @@ e_view_queue_icon_xy_record(E_View *v) { char name[PATH_MAX]; + D_ENTER; + sprintf(name, "icon_xy_record.%s", v->dir); ecore_add_event_timer(name, 0.10, e_view_write_icon_xy_timeout, 0, v); + + D_RETURN; } @@ -1212,6 +1335,8 @@ e_configure(Ecore_Event * ev) Ecore_Event_Window_Configure *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1269,6 +1394,8 @@ e_configure(Ecore_Event * ev) } } } + + D_RETURN; } static void @@ -1277,6 +1404,8 @@ e_property(Ecore_Event * ev) Ecore_Event_Window_Configure *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1287,6 +1416,8 @@ e_property(Ecore_Event * ev) { } } + + D_RETURN; } static void @@ -1295,6 +1426,8 @@ e_unmap(Ecore_Event * ev) Ecore_Event_Window_Unmap *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1305,6 +1438,8 @@ e_unmap(Ecore_Event * ev) { } } + + D_RETURN; } static void @@ -1313,6 +1448,8 @@ e_visibility(Ecore_Event * ev) Ecore_Event_Window_Unmap *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1323,6 +1460,8 @@ e_visibility(Ecore_Event * ev) { } } + + D_RETURN; } static void @@ -1331,6 +1470,8 @@ e_focus_in(Ecore_Event * ev) Ecore_Event_Window_Focus_In *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1341,6 +1482,8 @@ e_focus_in(Ecore_Event * ev) { } } + + D_RETURN; } static void @@ -1349,23 +1492,7 @@ e_focus_out(Ecore_Event * ev) Ecore_Event_Window_Focus_Out *e; Evas_List l; - e = ev->event; - for (l = views; l; l = l->next) - { - E_View *v; - - v = l->data; - if (e->win == v->win.base) - { - } - } -} - -static void -e_delete(Ecore_Event * ev) -{ - Ecore_Event_Window_Delete *e; - Evas_List l; + D_ENTER; e = ev->event; for (l = views; l; l = l->next) @@ -1375,10 +1502,34 @@ e_delete(Ecore_Event * ev) v = l->data; if (e->win == v->win.base) { - OBJ_DO_FREE(v); - return; } } + + D_RETURN; +} + +static void +e_delete(Ecore_Event * ev) +{ + Ecore_Event_Window_Delete *e; + Evas_List l; + + D_ENTER; + + e = ev->event; + for (l = views; l; l = l->next) + { + E_View *v; + + v = l->data; + if (e->win == v->win.base) + { + e_object_unref(E_OBJECT(v)); + D_RETURN; + } + } + + D_RETURN; } static void @@ -1387,6 +1538,8 @@ e_wheel(Ecore_Event * ev) Ecore_Event_Wheel *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1397,6 +1550,8 @@ e_wheel(Ecore_Event * ev) { } } + + D_RETURN; } static void @@ -1405,6 +1560,8 @@ e_key_down(Ecore_Event * ev) Ecore_Event_Key_Down *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1442,9 +1599,11 @@ e_key_down(Ecore_Event * ev) { } } - return; + D_RETURN; } } + + D_RETURN; } static void @@ -1453,14 +1612,18 @@ e_key_up(Ecore_Event * ev) Ecore_Event_Key_Up *e; Evas_List l; + D_ENTER; + e = ev->event; - return; + D_RETURN; for (l = views; l; l = l->next) { E_View *v; v = l->data; } + + D_RETURN; } static void @@ -1469,6 +1632,8 @@ e_mouse_down(Ecore_Event * ev) Ecore_Event_Mouse_Down *e; Evas_List l; + D_ENTER; + e = ev->event; current_ev = ev; for (l = views; l; l = l->next) @@ -1486,10 +1651,12 @@ e_mouse_down(Ecore_Event * ev) ecore_focus_to_window(v->win.base); evas_event_button_down(v->evas, e->x, e->y, e->button); current_ev = NULL; - return; + D_RETURN; } } current_ev = NULL; + + D_RETURN; } static void @@ -1498,6 +1665,8 @@ e_mouse_up(Ecore_Event * ev) Ecore_Event_Mouse_Up *e; Evas_List l; + D_ENTER; + e = ev->event; current_ev = ev; for (l = views; l; l = l->next) @@ -1509,10 +1678,12 @@ e_mouse_up(Ecore_Event * ev) { evas_event_button_up(v->evas, e->x, e->y, e->button); current_ev = NULL; - return; + D_RETURN; } } current_ev = NULL; + + D_RETURN; } static void @@ -1521,6 +1692,8 @@ e_mouse_move(Ecore_Event * ev) Ecore_Event_Mouse_Move *e; Evas_List l; + D_ENTER; + e = ev->event; current_ev = ev; for (l = views; l; l = l->next) @@ -1532,10 +1705,12 @@ e_mouse_move(Ecore_Event * ev) { evas_event_move(v->evas, e->x, e->y); current_ev = NULL; - return; + D_RETURN; } } current_ev = NULL; + + D_RETURN; } static void @@ -1544,6 +1719,8 @@ e_mouse_in(Ecore_Event * ev) Ecore_Event_Window_Enter *e; Evas_List l; + D_ENTER; + e = ev->event; current_ev = ev; for (l = views; l; l = l->next) @@ -1558,10 +1735,12 @@ e_mouse_in(Ecore_Event * ev) evas_event_enter(v->evas); } current_ev = NULL; - return; + D_RETURN; } } current_ev = NULL; + + D_RETURN; } static void @@ -1570,6 +1749,8 @@ e_mouse_out(Ecore_Event * ev) Ecore_Event_Window_Leave *e; Evas_List l; + D_ENTER; + e = ev->event; current_ev = ev; for (l = views; l; l = l->next) @@ -1581,10 +1762,12 @@ e_mouse_out(Ecore_Event * ev) { evas_event_leave(v->evas); current_ev = NULL; - return; + D_RETURN; } } current_ev = NULL; + + D_RETURN; } static void @@ -1593,6 +1776,8 @@ e_window_expose(Ecore_Event * ev) Ecore_Event_Window_Expose *e; Evas_List l; + D_ENTER; + e = ev->event; for (l = views; l; l = l->next) { @@ -1604,9 +1789,11 @@ e_window_expose(Ecore_Event * ev) if (!(v->pmap)) evas_update_rect(v->evas, e->x, e->y, e->w, e->h); v->changed = 1; - return; + D_RETURN; } } + + D_RETURN; } static void @@ -1615,6 +1802,8 @@ e_view_handle_fs_restart(void *data) E_View *v; Evas_List icons = NULL, l; + D_ENTER; + v = data; printf("e_view_handle_fs_restart\n"); @@ -1662,26 +1851,38 @@ e_view_handle_fs_restart(void *data) } printf("restarted monitor id (connection = %p), %i for %s\n", e_fs_get_connection(), v->monitor_id, v->dir); v->is_listing = 1; + + D_RETURN; } Ecore_Event * e_view_get_current_event(void) { - return current_ev; + D_ENTER; + + D_RETURN_(current_ev); } int e_view_filter_file(E_View *v, char *file) { - if (file[0] == '.') return 0; - return 1; + D_ENTER; + + if (file[0] == '.') + D_RETURN_(0); + + D_RETURN_(1); UN(v); } -void -e_view_icon_free(E_Icon *ic) +static void +e_view_icon_cleanup(E_Icon *ic) { - FREE(ic); + D_ENTER; + + e_object_cleanup(E_OBJECT(ic)); + + D_RETURN; } E_Icon * @@ -1689,10 +1890,14 @@ e_view_icon_new(void) { E_Icon *ic; + D_ENTER; + ic = NEW(E_Icon, 1); ZERO(ic, E_Icon, 1); - OBJ_INIT(ic, e_view_icon_free); - return ic; + + e_object_init(E_OBJECT(ic), (E_Cleanup_Func) e_view_icon_cleanup); + + D_RETURN_(ic); } E_Icon * @@ -1700,21 +1905,25 @@ e_view_find_icon_by_file(E_View *view, char *file) { Evas_List l; + D_ENTER; + for (l = view->icons; l; l = l->next) { E_Icon *ic; ic = l->data; if ((ic) && (ic->file) && (file) && (!strcmp(ic->file, file))) - return ic; + D_RETURN_(ic); } - return NULL; + D_RETURN_(NULL); } void e_view_icon_show(E_Icon *ic) { - if (ic->state.visible) return; + D_ENTER; + + if (ic->state.visible) D_RETURN; ic->state.visible = 1; if (!ic->obj.event1) { @@ -1742,22 +1951,30 @@ e_view_icon_show(E_Icon *ic) e_text_show(ic->obj.text); evas_show(ic->view->evas, ic->obj.event1); evas_show(ic->view->evas, ic->obj.event2); + + D_RETURN; } void e_view_icon_hide(E_Icon *ic) { - if (!ic->state.visible) return; + D_ENTER; + + if (!ic->state.visible) D_RETURN; ic->state.visible = 0; evas_hide(ic->view->evas, ic->obj.icon); e_text_hide(ic->obj.text); evas_hide(ic->view->evas, ic->obj.event1); evas_hide(ic->view->evas, ic->obj.event2); + + D_RETURN; } void e_view_icon_apply_xy(E_Icon *ic) { + D_ENTER; + /* threse calc icon extents for: */ /* [I] */ /* Ig */ @@ -1846,6 +2063,8 @@ e_view_icon_apply_xy(E_Icon *ic) ic->prev_geom.y = ic->geom.y; ic->prev_geom.w = ic->geom.w; ic->prev_geom.h = ic->geom.h; + + D_RETURN; } static int @@ -1853,9 +2072,12 @@ e_view_restart_alphabetical_qsort_cb(const void *data1, const void *data2) { E_Icon *ic, *ic2; + D_ENTER; + ic = *((E_Icon **)data1); ic2 = *((E_Icon **)data2); - return (strcmp(ic->file, ic2->file)); + + D_RETURN_(strcmp(ic->file, ic2->file)); } void @@ -1865,7 +2087,9 @@ e_view_resort_alphabetical(E_View *v) E_Icon **array; int i, count; - if (!v->icons) return; + D_ENTER; + + if (!v->icons) D_RETURN; for (count = 0, l = v->icons; l; l = l->next) count++; array = malloc(sizeof(E_Icon *) * count); for (i = 0, l = v->icons; l; l = l->next) array[i++] = l->data; @@ -1879,6 +2103,8 @@ e_view_resort_alphabetical(E_View *v) v->icons = icons; printf("done...\n"); + + D_RETURN; } void @@ -1889,6 +2115,8 @@ e_view_arrange(E_View *v) int x1, x2, y1, y2; double sv, sr, sm; + D_ENTER; + x = v->spacing.window.l; y = v->spacing.window.t; for (l = v->icons; l; l = l->next) @@ -1929,13 +2157,19 @@ e_view_arrange(E_View *v) e_scrollbar_set_max(v->scrollbar.h, sm); if (sr < sm) e_scrollbar_show(v->scrollbar.h); else e_scrollbar_hide(v->scrollbar.h); + + D_RETURN; } void e_view_resort(E_View *v) { + D_ENTER; + e_view_resort_alphabetical(v); e_view_arrange(v); + + D_RETURN; } static void @@ -1943,9 +2177,13 @@ e_view_resort_timeout(int val, void *data) { E_View *v; + D_ENTER; + v = data; e_view_resort(v); v->have_resort_queued = 0; + + D_RETURN; UN(val); } @@ -1954,18 +2192,24 @@ e_view_queue_resort(E_View *v) { char name[PATH_MAX]; - if (v->have_resort_queued) return; + D_ENTER; + + if (v->have_resort_queued) D_RETURN; v->have_resort_queued = 1; sprintf(name, "resort_timer.%s", v->dir); ecore_add_event_timer(name, 1.0, e_view_resort_timeout, 0, v); + + D_RETURN; } void e_view_icon_initial_show(E_Icon *ic) { + D_ENTER; + /* check if we have enuf info and we havent been shown yet */ - if (!ic->info.icon) return; - if (ic->state.visible) return; + if (!ic->info.icon) D_RETURN; + if (ic->state.visible) D_RETURN; /* first. lets figure out the size of the icon */ evas_get_image_size(ic->view->evas, ic->obj.icon, @@ -1988,6 +2232,8 @@ e_view_icon_initial_show(E_Icon *ic) /* actually show the icon */ e_view_icon_apply_xy(ic); e_view_icon_show(ic); + + D_RETURN; } void @@ -1995,11 +2241,13 @@ e_view_icon_set_mime(E_Icon *ic, char *base, char *mime) { int diff = 0; + D_ENTER; + if (!ic->info.mime.base) diff = 1; if (!ic->info.mime.type) diff = 1; if ((ic->info.mime.base) && (strcmp(ic->info.mime.base, base))) diff = 1; if ((ic->info.mime.type) && (strcmp(ic->info.mime.base, mime))) diff = 1; - if (!diff) return; + if (!diff) D_RETURN; if (ic->info.mime.base) free(ic->info.mime.base); if (ic->info.mime.type) free(ic->info.mime.type); ic->info.mime.base = NULL; @@ -2017,7 +2265,7 @@ e_view_icon_set_mime(E_Icon *ic, char *base, char *mime) ic->info.icon = strdup(ic->info.custom_icon); evas_set_image_file(ic->view->evas, ic->obj.icon, ic->info.custom_icon); e_view_queue_resort(ic->view); - return; + D_RETURN; } /* find an icon */ { @@ -2057,11 +2305,15 @@ e_view_icon_set_mime(E_Icon *ic, char *base, char *mime) ic->info.icon = strdup(icon); } e_view_icon_update_state(ic); + + D_RETURN; } void e_view_icon_set_link(E_Icon *ic, char *link) { + D_ENTER; + if ((!link) && (ic->info.link)) { free(ic->info.link); @@ -2077,6 +2329,8 @@ e_view_icon_set_link(E_Icon *ic, char *link) /* effect changes here */ } } + + D_RETURN; } void @@ -2084,15 +2338,17 @@ e_view_file_added(int id, char *file) { E_View *v; + D_ENTER; + /* if we get a path - ignore it - its not a file in the a dir */ - if (!file) return; + if (!file) D_RETURN; /* printf("FILE ADD: %s\n", file);*/ - if (file[0] == '/') return; + if (file[0] == '/') D_RETURN; v = e_view_find_by_monitor_id(id); - if (!v) return; + if (!v) D_RETURN; e_iconbar_file_add(v, file); /* filter files here */ - if (!e_view_filter_file(v, file)) return; + if (!e_view_filter_file(v, file)) D_RETURN; if (!e_view_find_icon_by_file(v, file)) { E_Icon *ic; @@ -2106,6 +2362,8 @@ e_view_file_added(int id, char *file) v->icons = evas_list_append(v->icons, ic); v->extents.valid = 0; } + + D_RETURN; } void @@ -2113,11 +2371,13 @@ e_view_file_deleted(int id, char *file) { E_View *v; - if (!file) return; - if (file[0] == '/') return; + D_ENTER; + + if (!file) D_RETURN; + if (file[0] == '/') D_RETURN; v = e_view_find_by_monitor_id(id); e_iconbar_file_delete(v, file); - if (!v) return; + if (!v) D_RETURN; { E_Icon *ic; @@ -2125,13 +2385,15 @@ e_view_file_deleted(int id, char *file) if (ic) { e_view_icon_hide(ic); - OBJ_DO_FREE(ic); + e_object_unref(E_OBJECT(ic)); v->icons = evas_list_remove(v->icons, ic); v->changed = 1; v->extents.valid = 0; e_view_queue_resort(v); } } + + D_RETURN; } void @@ -2139,11 +2401,13 @@ e_view_file_changed(int id, char *file) { E_View *v; - if (!file) return; - if (file[0] == '/') return; + D_ENTER; + + if (!file) D_RETURN; + if (file[0] == '/') D_RETURN; v = e_view_find_by_monitor_id(id); e_iconbar_file_change(v, file); - if (!v) return; + if (!v) D_RETURN; { E_Icon *ic; @@ -2153,6 +2417,8 @@ e_view_file_changed(int id, char *file) { } } + + D_RETURN; } void @@ -2160,12 +2426,14 @@ e_view_file_moved(int id, char *file) { E_View *v; + D_ENTER; + /* never gets called ? */ - if (!file) return; + if (!file) D_RETURN; printf(".!WOW!. e_view_file_moved(%i, %s);\n", id, file); - if (file[0] == '/') return; + if (file[0] == '/') D_RETURN; v = e_view_find_by_monitor_id(id); - if (!v) return; + if (!v) D_RETURN; { E_Icon *ic; @@ -2175,6 +2443,8 @@ e_view_file_moved(int id, char *file) { } } + + D_RETURN; } E_View * @@ -2182,22 +2452,29 @@ e_view_find_by_monitor_id(int id) { Evas_List l; + D_ENTER; + for (l = views; l; l = l->next) { E_View *v; v = l->data; - if (v->monitor_id == id) return v; + if (v->monitor_id == id) + D_RETURN_(v); } - return NULL; + + D_RETURN_(NULL); } -void -e_view_free(E_View *v) +static void +e_view_cleanup(E_View *v) { char name[PATH_MAX]; - if (v->iconbar) OBJ_DO_FREE(v->iconbar); + D_ENTER; + + if (v->iconbar) + e_object_unref(E_OBJECT(v->iconbar)); sprintf(name, "resort_timer.%s", v->dir); ecore_del_event_timer(name); @@ -2213,8 +2490,10 @@ e_view_free(E_View *v) v->restarter = NULL; ecore_window_destroy(v->win.base); + /* Call the destructor of the base class */ + e_object_cleanup(E_OBJECT(v)); - FREE(v); + D_RETURN; } E_View * @@ -2222,9 +2501,13 @@ e_view_new(void) { E_View *v; + D_ENTER; + v = NEW(E_View, 1); ZERO(v, E_View, 1); - OBJ_INIT(v, e_view_free); + + e_object_init(E_OBJECT(v), (E_Cleanup_Func) e_view_cleanup); + #define SOFT_DESK /* #define X_DESK */ /* #define GL_DESK */ @@ -2267,18 +2550,24 @@ _member.r = _r; _member.g = _g; _member.b = _b; _member.a = _a; v->spacing.icon.b = 7; views = evas_list_append(views, v); - return v; + D_RETURN_(v); } void e_view_set_background(E_View *v) { + D_ENTER; + v->changed = 1; + + D_RETURN; } void e_view_set_dir(E_View *v, char *dir) { + D_ENTER; + /* stop monitoring old dir */ if ((v->dir) && (v->monitor_id)) { @@ -2315,6 +2604,8 @@ e_view_set_dir(E_View *v, char *dir) v->is_listing = 1; v->changed = 1; } + + D_RETURN; } void @@ -2325,7 +2616,9 @@ e_view_realize(E_View *v) int image_cache = 8192 * 1024; char *font_dir; - if (v->evas) return; + D_ENTER; + + if (v->evas) D_RETURN; v->win.base = ecore_window_new(0, v->location.x, v->location.y, v->size.w, v->size.h); @@ -2410,6 +2703,8 @@ e_view_realize(E_View *v) if (v->iconbar) e_iconbar_realize(v->iconbar); v->changed = 1; + + D_RETURN; } void @@ -2417,6 +2712,8 @@ e_view_update(E_View *v) { Evas_List l; + D_ENTER; + if (v->changed) { for (l = v->icons; l; l = l->next) @@ -2455,12 +2752,16 @@ e_view_update(E_View *v) else evas_render(v->evas); v->changed = 0; + + D_RETURN; } static void e_view_handle_fs(EfsdEvent *ev) { + D_ENTER; + switch (ev->type) { case EFSD_EVENT_FILECHANGE: @@ -2747,7 +3048,7 @@ e_view_handle_fs(EfsdEvent *ev) b->client.internal = 1; e_border_remove_click_grab(b); } - return; + D_RETURN; } } } @@ -2773,11 +3074,15 @@ e_view_handle_fs(EfsdEvent *ev) default: break; } + + D_RETURN; } void e_view_init(void) { + D_ENTER; + ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_DOWN, e_mouse_down); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_UP, e_mouse_up); ecore_event_filter_handler_add(ECORE_EVENT_MOUSE_MOVE, e_mouse_move); @@ -2796,4 +3101,6 @@ e_view_init(void) ecore_event_filter_handler_add(ECORE_EVENT_WINDOW_DELETE, e_delete); ecore_event_filter_idle_handler_add(e_idle, NULL); e_fs_add_event_handler(e_view_handle_fs); + + D_RETURN; } diff --git a/src/view.h b/src/view.h index 4542e9aef..d11565078 100644 --- a/src/view.h +++ b/src/view.h @@ -7,6 +7,7 @@ #include "fs.h" #include "text.h" #include "iconbar.h" +#include "object.h" #ifndef E_VIEW_TYPEDEF #define E_VIEW_TYPEDEF @@ -24,7 +25,7 @@ typedef struct _E_Iconbar E_Iconbar; struct _E_View { - OBJ_PROPERTIES; + E_Object o; char *dir; @@ -146,7 +147,7 @@ struct _E_View struct _E_Icon { - OBJ_PROPERTIES; + E_Object o; char *file; @@ -230,7 +231,6 @@ void e_view_icon_invert_selection(E_Icon *ic); void e_view_icon_select(E_Icon *ic); void e_view_icon_deselect(E_Icon *ic); void e_view_icon_exec(E_Icon *ic); -void e_view_icon_free(E_Icon *ic); void e_view_icon_initial_show(E_Icon *ic); void e_view_icon_set_mime(E_Icon *ic, char *base, char *mime); void e_view_icon_set_link(E_Icon *ic, char *link); @@ -250,7 +250,6 @@ void e_view_file_deleted(int id, char *file); void e_view_file_changed(int id, char *file); void e_view_file_moved(int id, char *file); E_View *e_view_find_by_monitor_id(int id); -void e_view_free(E_View *v); E_View *e_view_new(void); void e_view_set_background(E_View *v); void e_view_set_dir(E_View *v, char *dir);