More SPLIT merging.

SVN revision: 6588
This commit is contained in:
rbdpngn 2003-01-15 18:29:56 +00:00 committed by rbdpngn
parent aeac895ef7
commit 63e20e7f14
76 changed files with 3701 additions and 3758 deletions

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = intl po src lib client tools doc
SUBDIRS = po src lib client tools doc
MAINTAINERCLEANFILES = Makefile.in aclocal.m4 config.guess \
config.h.in config.sub configure install-sh \

12
README
View File

@ -1,3 +1,15 @@
Additional notes
todo
entry.c - check 'todo' entries (although nobody uses entries except for
me in med, do they?)
guides.c - imlib parts that aren't converted yet.
text.c
menu.c
menubuild.c - e_observer_init() call.
border.c - use e_evas_new_all in place of the inlined code. cleanup.
+-----------------------------------------------------------------------------+
| Enlightenment 0.17.pre CVS Code.... |
+-----------------------------------------------------------------------------+

View File

@ -111,7 +111,7 @@ do
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running gettextize... Ignore non-fatal messages."
echo "no" | gettextize --force --copy || abort "gettextize"
echo "no" | setup-gettext.sh
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi
@ -120,7 +120,7 @@ do
echo "Creating $dr/aclocal.m4 ..."
test -r $dr/aclocal.m4 || touch $dr/aclocal.m4
echo "Running gettextize... Ignore non-fatal messages."
echo "no" | gettextize --force --copy || abort "gettextize"
echo "no" | setup-gettext.sh
echo "Making $dr/aclocal.m4 writable ..."
test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4
fi

View File

@ -234,7 +234,6 @@ Makefile
src/Makefile
lib/Makefile
client/Makefile
intl/Makefile
po/Makefile.in
tools/Makefile
doc/Makefile

View File

@ -233,7 +233,6 @@ Makefile
src/Makefile
lib/Makefile
client/Makefile
intl/Makefile
po/Makefile.in
tools/Makefile
doc/Makefile

Binary file not shown.

View File

@ -27,11 +27,26 @@ WINDOW_MODE_BORDER=1
WINDOW_MODE_BOX=2
WINDOW_MODE_TECHNICAL=3
WINDOW_PLACE_MANUAL=0
WINDOW_PLACE_SMART=1
WINDOW_PLACE_MIDDLE=2
WINDOW_PLACE_CASCADE=3
WINDOW_PLACE_RANDOM=4
DESKTOP_COUNT=8
DESKTOP_SCROLL=0
DESKTOP_SCROLL_STICKY=0
DESKTOP_RESIST=3
DESKTOP_SPEED=30
DESKTOP_WIDTH=2
DESKTOP_HEIGHT=2
GUIDES_LOC_WIN=0
GUIDES_LOC_SCR=1
DB="./behavior.db"
# actions defining how to react to things
DB="./actions.db"
NUM=0
edb_ed $DB add "/actions/"$NUM"/name" str "Title_Bar"
edb_ed $DB add "/actions/"$NUM"/action" str "Window_Raise"
@ -337,26 +352,41 @@ edb_ed $DB add "/actions/"$NUM"/button" int 0
edb_ed $DB add "/actions/"$NUM"/key" str "Insert"
edb_ed $DB add "/actions/"$NUM"/modifiers" int $MOD_CTRL_ALT
NUM=$[ $NUM + 1 ];
edb_ed $DB add "/actions/"$NUM"/name" str "Key_Binding"
edb_ed $DB add "/actions/"$NUM"/action" str "Window_Next"
edb_ed $DB add "/actions/"$NUM"/params" str ""
edb_ed $DB add "/actions/"$NUM"/event" int $ACT_KEY_DOWN
edb_ed $DB add "/actions/"$NUM"/button" int 0
edb_ed $DB add "/actions/"$NUM"/key" str "Tab"
edb_ed $DB add "/actions/"$NUM"/modifiers" int $MOD_ALT
NUM=$[ $NUM + 1 ];
edb_ed $DB add "/actions/count" int $NUM
edb_ed $DB add "/desktops/count" int $DESKTOP_COUNT
edb_ed $DB add "/desktops/scroll" int $DESKTOP_SCROLL
edb_ed $DB add "/desktops/scroll_sticky" int $DESKTOP_SCROLL_STICKY
edb_ed $DB add "/desktops/resist" int $DESKTOP_RESIST
edb_ed $DB add "/desktops/speed" int $DESKTOP_SPEED
edb_ed $DB add "/desktops/width" int $DESKTOP_WIDTH
edb_ed $DB add "/desktops/height" int $DESKTOP_HEIGHT
# basic settings
DB="./settings.db"
edb_ed $DB add "/focus/mode " int $FOCUS_POINTER
edb_ed $DB add "/move/resist" int 1
edb_ed $DB add "/move/resist/desk" int 24
edb_ed $DB add "/move/resist/win" int 12
edb_ed $DB add "/menu/scroll/resist" int 5
edb_ed $DB add "/menu/scroll/speed" int 12
edb_ed $DB add "/window/focus/mode" int $FOCUS_POINTER
edb_ed $DB add "/window/raise/auto" int 0
edb_ed $DB add "/window/raise/delay" float 0.5
edb_ed $DB add "/window/move/mode" int $WINDOW_MODE_OPAQUE
edb_ed $DB add "/window/resize/mode" int $WINDOW_MODE_BOX
edb_ed $DB add "/window/place/mode" int $WINDOW_PLACE_SMART
edb_ed $DB add "/guides/display/x" float 0.5
edb_ed $DB add "/guides/display/y" float 0.5
edb_ed $DB add "/guides/display/location" int $GUIDES_LOC_SCR
# what events on windows are "grabbed" by the window manager
DB="./grabs.db"
NUM=0
edb_ed $DB add "/grabs/"$NUM"/button" int 1
edb_ed $DB add "/grabs/"$NUM"/modifiers" int $MOD_ALT

View File

@ -98,32 +98,6 @@
* Makefile.in.in: Upgrade to gettext-0.10.39.
<<<<<<< ChangeLog
2001-10-08 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
2001-10-08 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
2001-09-25 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
2001-09-25 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
2001-09-10 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
2001-09-10 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.
=======
2001-10-09 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.40.
@ -132,7 +106,6 @@
* Makefile.in.in: Upgrade to gettext-0.10.40.
>>>>>>> 1.6
2001-08-31 gettextize <bug-gnu-utils@gnu.org>
* Makefile.in.in: Upgrade to gettext-0.10.39.

202
setup-gettext.sh Executable file
View File

@ -0,0 +1,202 @@
#!/bin/sh
#
# setup-gettext - Provides compatibility with versions of gettext
# from the 0.10.x series and 0.11.x.
#
# Copyright (C) 2002 Christian Hammond.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#
VERSION=0.1.3
VERBOSE=0
parse_gettext_version() {
GETTEXT_VERSION=`$GETTEXT_TOOL --version | sed -n 's/^.*\([0-9]\+\)\.\([0-9]\+\)\.\([0-9]\+\).*$/\1.\2.\3/p'`
GETTEXT_MAJOR_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^\([0-9]\+\).*/\1/p'`
GETTEXT_MINOR_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^[0-9]\+\.\([0-9]\+\).*/\1/p'`
GETTEXT_MICRO_VERSION=`echo $GETTEXT_VERSION | sed -n 's/^[0-9]\+\.[0-9]\+\.\([0-9]\+\).*/\1/p'`
}
find_gettext() {
GETTEXT_TOOL=autopoint
(autopoint --version) < /dev/null > /dev/null 2>&1 || {
GETTEXT_TOOL=gettextize
(gettextize --version) < /dev/null > /dev/null 2>&1 || {
GETTEXT_TOOL=
}
}
}
install() {
[ -f configure.in ] && {
cp configure.in .tmp-configure.in
sed -e 's/^AM_GNU_GETTEXT\(.*\)$/AM_GNU_GETTEXT\1\
AM_GNU_GETTEXT_VERSION(0.10.40)/' < .tmp-configure.in > configure.in
rm .tmp-configure.in
}
[ -f configure.ac ] && {
cp configure.ac .tmp-configure.ac
sed -e 's/^AM_GNU_GETTEXT\(.*\)$/AM_GNU_GETTEXT\1\
AM_GNU_GETTEXT_VERSION(0.10.40)/' < .tmp-configure.ac > configure.ac
rm .tmp-configure.ac
}
[ -f autogen.sh ] && {
cp autogen.sh .tmp-autogen.sh
sed -e 's/\(gettextize\|autopoint\) --version/.\/setup-gettext --gettext-tool/1' -e 's/^\(echo.*|[\t ]*\)\?\(gettextize\|autopoint\) -.*$/.\/setup-gettext/1' < .tmp-autogen.sh > autogen.sh
rm .tmp-autogen.sh
}
echo 'AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])' >> acinclude.m4
}
backup_m4() {
[ -d m4 ] && mv m4 m4~
}
restore_m4() {
[ -d m4~ ] && {
rm -rf m4
mv m4~ m4
}
}
restore_files() {
[ -f configure.in~ ] && mv -f configure.in~ configure.in
[ -f configure.ac~ ] && mv -f configure.ac~ configure.ac
[ -f Makefile.am~ ] && mv -f Makefile.am~ Makefile.am
}
abort() {
restore_files
restore_m4
exit 1
}
# Main code
find_gettext
# See if a version of gettext and its tools are installed.
if [ x$GETTEXT_TOOL = x ]; then
echo
echo "You do not have a version of gettext installed."
echo "Please download one from your local package repository or"
echo "from ftp://ftp.gnu.org/pub/gnu/gettext/"
echo
exit 1
fi
parse_gettext_version
NUMVAR=$#
if [ $NUMVAR -gt 0 ]; then
if [ $NUMVAR -gt 1 ]; then
echo "Only one option at a time!"
exit 1
elif [ $1 = "--gettext-tool" ]; then
echo $GETTEXT_TOOL
exit 0
elif [ $1 = "--help" ]; then
echo "setup-gettext v$VERSION"
echo "Usage:"
echo " --gettext-tool Returns gettextize or autopoint, depending"
echo " on the version of gettext installed."
echo " --gettext-version Returns the version of gettext installed."
echo " --gettext-major-version Returns the major version of gettext installed."
echo " --gettext-minor-version Returns the minor version of gettext installed."
echo " --gettext-micro-version Returns the micro version of gettext installed."
echo " --help Displays this help screen."
echo
exit 0
elif [ $1 = "--version" ]; then
echo $VERSION
exit 0
elif [ $1 = "--gettext-version" ]; then
echo $GETTEXT_VERSION
exit 0
elif [ $1 = "--gettext-major-version" ]; then
echo $GETTEXT_MAJOR_VERSION
exit 0
elif [ $1 = "--gettext-minor-version" ]; then
echo $GETTEXT_MINOR_VERSION
exit 0
elif [ $1 = "--gettext-micro-version" ]; then
echo $GETTEXT_MICRO_VERSION
exit 0
elif [ $1 = "--install" ]; then
install
echo "setup-gettext installed."
exit 0
elif [ $1 = "--happy-url" ]; then
echo http://gaim.sf.net/forkgettext.jpg
exit 0
elif [ $1 = "--verbose" ]; then
VERBOSE=1
else
echo "Invalid option '$1'"
exit 1
fi
fi
# Okay, run the main stuff
if [ "$GETTEXT_TOOL" = "autopoint" ]; then
backup_m4
[ $VERBOSE -eq 1 ] && echo " autopoint --force"
echo n | autopoint --force || abort
restore_m4
else
if [ $GETTEXT_MINOR_VERSION -eq 11 ]; then
backup_m4
# Gettext is pure evil. It DEMANDS that we press Return no matter
# what. This gets rid of their happy "feature" of doom.
[ $VERBOSE -eq 1 ] && \
echo " gettextize --copy --force --intl --no-changelog"
sed 's:read .*< /dev/tty::' `which gettextize` > .temp-gettextize
chmod +x .temp-gettextize
echo n | ./.temp-gettextize --copy --force --intl --no-changelog || abort
rm .temp-gettextize
restore_files
restore_m4
[ -f po/Makevars.template ] && mv po/Makevars.template po/Makevars
else
[ $VERBOSE -eq 1 ] && echo " gettextize --copy --force"
echo n | gettextize --copy --force || exit;
fi
fi

View File

@ -9,15 +9,18 @@ INCLUDES = \
-I$(top_srcdir)/intl \
@evas_cflags@ @edb_cflags@ @ebits_cflags@ @ecore_cflags@ @efsd_cflags@ @ebg_cflags@ $(DEBUGFLAGS)
bin_PROGRAMS = enlightenment
bin_PROGRAMS = enlightenment
enlightenment_SOURCES = \
actions.h actions.c \
block.c block.h \
border.h border.c \
bordermenu.h bordermenu.c \
menu.h menu.c \
menubuild.h menubuild.c \
config.h config.c \
cursors.c cursors.h \
data.c data.h \
debug.c debug.h \
delayed.h delayed.c \
desktops.h desktops.c \
@ -30,14 +33,12 @@ enlightenment_SOURCES = \
guides.h guides.c \
globals.h globals.c \
icccm.h icccm.c \
iconbar.h iconbar.c\
icons.h icons.c\
iconbar.h iconbar.c \
icons.h icons.c \
ipc.h ipc.c \
keys.h keys.c \
main.c \
match.c match.h \
menu.h menu.c \
menubuild.h menubuild.c \
object.h object.c \
observer.h observer.c\
pack.c \
@ -52,7 +53,7 @@ enlightenment_SOURCES = \
e_dir.h e_dir.c \
e_view_machine.h e_view_machine.c \
view_layout.h view_layout.c \
e_view_look.h e_view_look.c \
e_view_look.h e_view_look.c \
e.h
enlightenment_LDADD = @evas_libs@ @edb_libs@ @ebits_libs@ @ecore_libs@ @efsd_libs@ @ebg_libs@ -lm $(INTLLIBS)

View File

@ -6,21 +6,19 @@
#include "exec.h"
#include "icccm.h"
#include "keys.h"
#include "view.h"
#include "e_view_machine.h"
#include "util.h"
#include "guides.h"
#include "bordermenu.h"
#include "block.h"
static Evas_List action_impls = NULL;
static Evas_List current_actions = NULL;
static Evas_List current_timers = NULL;
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,
E_Object * object);
static void e_action_cleanup(E_Action * a);
static void e_act_move_start(E_Object * object, E_Action * a,
void *data, int x, int y, int rx, int ry);
@ -91,14 +89,14 @@ static void e_act_exec_start(E_Object * object, E_Action * a,
static void e_act_menu_start(E_Object * object, E_Action * a,
void *data, int x, int y, int rx, int ry);
#if 0
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);
#endif
static void e_act_stick_start(E_Object * object, E_Action * a,
void *data, int x, int y, int rx, int ry);
@ -133,104 +131,16 @@ static void
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;
int i, num;
char *a_name = NULL;
char *a_action = NULL;
char *a_params = NULL;
int a_event = 0;
int a_button = 0;
char *a_key = NULL;
int a_modifiers = 0;
Evas_List l;
Evas_List *l;
E_Action *a;
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_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)
D_RETURN;
if (!e_db_int_get(db, "/actions/count", &num))
goto error;
for (i = 0; i < num; i++)
{
char buf[PATH_MAX];
snprintf(buf, PATH_MAX, "/actions/%i/name", i);
a_name = e_db_str_get(db, buf);
snprintf(buf, PATH_MAX, "/actions/%i/action", i);
a_action = e_db_str_get(db, buf);
snprintf(buf, PATH_MAX, "/actions/%i/params", i);
a_params = e_db_str_get(db, buf);
snprintf(buf, PATH_MAX, "/actions/%i/event", i);
e_db_int_get(db, buf, &a_event);
snprintf(buf, PATH_MAX, "/actions/%i/button", i);
e_db_int_get(db, buf, &a_button);
snprintf(buf, PATH_MAX, "/actions/%i/key", i);
a_key = e_db_str_get(db, buf);
snprintf(buf, PATH_MAX, "/actions/%i/modifiers", i);
e_db_int_get(db, buf, &a_modifiers);
a = NEW(E_Action, 1);
ZERO(a, E_Action, 1);
e_object_init(E_OBJECT(a), (E_Cleanup_Func) e_action_cleanup);
a->name = a_name;
a->action = a_action;
a->params = a_params;
a->event = a_event;
a->button = a_button;
a->key = a_key;
a->modifiers = a_modifiers;
a->action_impl = NULL;
a->object = NULL;
a->started = 0;
actions = evas_list_append(actions, a);
/* it's a key? lets grab it! */
if ((a->key) && (strlen(a->key) > 0))
{
if (a->modifiers == -1)
e_keys_grab(a->key, ECORE_EVENT_KEY_MODIFIER_NONE, 1);
else
e_keys_grab(a->key, (Ecore_Event_Key_Modifiers) a->modifiers,
0);
a->grabbed = 1;
}
}
error:
e_db_close(db);
E_CONFIG_CHECK_VALIDITY_END;
/* run thru our actions list and match event, state and stuff with an */
/* and action for it */
for (l = actions; l; l = l->next)
for (l = config_data->actions; l; l = l->next)
{
Evas_List ll;
Evas_List * ll;
a = l->data;
if (act != a->event)
@ -288,7 +198,7 @@ e_action_find(char *action, E_Action_Type act, int button,
D_RETURN;
}
static void
void
e_action_cleanup(E_Action * a)
{
D_ENTER;
@ -335,7 +245,7 @@ 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;
Evas_List * l;
int started_long_action = 0;
D_ENTER;
@ -375,7 +285,7 @@ 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;
Evas_List * l;
D_ENTER;
@ -435,7 +345,7 @@ 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;
Evas_List * l;
D_ENTER;
@ -461,7 +371,7 @@ void
e_action_stop_by_object(E_Object * object, void *data, int x, int y, int rx,
int ry)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -493,7 +403,7 @@ e_action_stop_by_object(E_Object * object, void *data, int x, int y, int rx,
void
e_action_stop_by_type(char *action)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -518,6 +428,7 @@ e_action_impl_cleanup(E_Action_Impl * eai)
{
D_ENTER;
IF_FREE(eai->action);
e_object_cleanup(E_OBJECT(eai));
D_RETURN;
@ -548,7 +459,7 @@ e_action_add_impl(char *action, E_Action_Start_Func func_start,
void
e_action_del_timer(E_Object * object, char *name)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -592,7 +503,7 @@ e_action_add_timer(E_Object * object, char *name)
void
e_action_del_timer_object(E_Object * object)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -677,23 +588,10 @@ e_act_move_start(E_Object * object, E_Action * a, void *data, int x, int y,
double align_y = 0.5;
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
E_CFG_INT(cfg_window_move_mode, "settings", "/window/move/mode",
E_GUIDES_BOX);
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_block_start("menus");
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 = (E_Border *) object;
if (!b)
@ -705,6 +603,11 @@ e_act_move_start(E_Object * object, E_Action * a, void *data, int x, int y,
if (b->client.fixed)
D_RETURN;
move_mode = config_data->window->move_mode;
display_loc = config_data->guides->location;
align_x = config_data->guides->x;
align_y = config_data->guides->y;
if (move_mode >= E_GUIDES_BOX)
b->hold_changes = 1; /* if non opaque */
b->mode.move = 1;
@ -839,22 +742,10 @@ e_act_resize_start(E_Object * object, E_Action * a, void *data, int x, int y,
double align_y = 0.5;
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
E_GUIDES_BOX);
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_block_start("menus");
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 = (E_Border *) object;
if (!b)
b = e_border_current_focused();
@ -866,6 +757,12 @@ e_act_resize_start(E_Object * object, E_Action * a, void *data, int x, int y,
D_RETURN;
if (b->current.shaded != 0)
D_RETURN;
resize_mode = config_data->window->resize_mode;
display_loc = config_data->guides->location;
align_x = config_data->guides->x;
align_y = config_data->guides->y;
if (resize_mode >= E_GUIDES_BOX)
b->hold_changes = 1; /* if non opaque */
ecore_window_gravity_set(b->win.client, StaticGravity);
@ -1043,22 +940,10 @@ e_act_resize_h_start(E_Object * object, E_Action * a, void *data, int x, int y,
double align_y = 0.5;
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
E_GUIDES_BOX);
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_block_start("menus");
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 = (E_Border *) object;
if (!b)
b = e_border_current_focused();
@ -1068,6 +953,12 @@ e_act_resize_h_start(E_Object * object, E_Action * a, void *data, int x, int y,
D_RETURN;
if (b->current.shaded != 0)
D_RETURN;
resize_mode = config_data->window->resize_mode;
display_loc = config_data->guides->location;
align_x = config_data->guides->x;
align_y = config_data->guides->y;
if (resize_mode >= E_GUIDES_BOX)
b->hold_changes = 1; /* if non opaque */
ecore_window_gravity_set(b->win.client, StaticGravity);
@ -1205,22 +1096,10 @@ e_act_resize_v_start(E_Object * object, E_Action * a, void *data, int x, int y,
double align_y = 0.5;
E_Guides_Location display_loc = E_GUIDES_DISPLAY_LOCATION_WINDOW_MIDDLE;
E_CFG_INT(cfg_window_resize_mode, "settings", "/window/resize/mode",
E_GUIDES_BOX);
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_block_start("menus");
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 = (E_Border *) object;
if (!b)
b = e_border_current_focused();
@ -1230,6 +1109,12 @@ e_act_resize_v_start(E_Object * object, E_Action * a, void *data, int x, int y,
D_RETURN;
if (b->current.shaded != 0)
D_RETURN;
resize_mode = config_data->window->resize_mode;
display_loc = config_data->guides->location;
align_x = config_data->guides->x;
align_y = config_data->guides->y;
if (resize_mode >= E_GUIDES_BOX)
b->hold_changes = 1; /* if non opaque */
ecore_window_gravity_set(b->win.client, StaticGravity);
@ -1667,7 +1552,7 @@ e_act_menu_start(E_Object * object, E_Action * a, void *data, int x, int y,
UN(ry);
}
static void
void
e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
int rx, int ry)
{
@ -1692,7 +1577,7 @@ e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
UN(ry);
}
static void
void
e_act_restart_start(E_Object * object, E_Action * a, void *data, int x, int y,
int rx, int ry)
{
@ -1967,9 +1852,13 @@ static void
e_act_raise_next_start(E_Object * object, E_Action * a, void *data, int x,
int y, int rx, int ry)
{
E_Border *current = NULL;
D_ENTER;
e_border_raise_next();
current = e_desktop_raise_next_border();
if (current)
e_border_send_pointer(current);
D_RETURN;
UN(object);

View File

@ -73,6 +73,7 @@ struct _E_Action_Impl
* i.e. the way E performs actions.
*/
void e_action_init(void);
void e_action_cleanup(E_Action *a);
int e_action_start(char *action, E_Action_Type act, int button,
char *key, Ecore_Event_Key_Modifiers mods,
@ -97,4 +98,10 @@ 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);
void e_act_exit_start(E_Object * object, E_Action * a, void *data, int x, int y,
int rx, int ry);
void e_act_restart_start(E_Object * object, E_Action * a, void *data, int x, int y,
int rx, int ry);
#endif

View File

@ -6,7 +6,7 @@
static void
e_background_cleanup(E_Background * bg)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -22,7 +22,7 @@ e_background_cleanup(E_Background * bg)
if (bl->file)
FREE(bl->file);
if (bl->obj)
evas_del_object(bg->evas, bl->obj);
evas_object_del(bl->obj);
FREE(bl);
}
evas_list_free(bg->layers);
@ -30,7 +30,7 @@ e_background_cleanup(E_Background * bg)
if (bg->file)
FREE(bg->file);
if (bg->base_obj)
evas_del_object(bg->evas, bg->base_obj);
evas_object_del(bg->base_obj);
e_object_cleanup(E_OBJECT(bg));
@ -149,9 +149,9 @@ e_background_load(char *file)
}
void
e_background_realize(E_Background * bg, Evas evas)
e_background_realize(E_Background * bg, Evas * evas)
{
Evas_List l;
Evas_List * l;
int ww, hh, count;
D_ENTER;
@ -168,9 +168,10 @@ e_background_realize(E_Background * bg, Evas evas)
bl = l->data;
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
bl->obj = evas_add_image_from_file(bg->evas, bl->file);
evas_set_layer(bg->evas, bl->obj, 0);
evas_show(bg->evas, bl->obj);
bl->obj = evas_object_image_add(bg->evas);
evas_object_image_file_set(bl->obj, bl->file, NULL);
evas_object_layer_set(bl->obj, 0);
evas_object_show(bl->obj);
#if 0 /* dont need this... do we? */
if (evas_get_image_alpha(bg->evas, bl->obj))
{
@ -203,7 +204,7 @@ e_background_realize(E_Background * bg, Evas evas)
void
e_background_set_scroll(E_Background * bg, int sx, int sy)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -220,7 +221,7 @@ e_background_set_scroll(E_Background * bg, int sx, int sy)
bl = l->data;
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
evas_set_image_fill(bg->evas, bl->obj,
evas_object_image_fill_set(bl->obj,
(double)bg->geom.sx * bl->scroll.x,
(double)bg->geom.sy * bl->scroll.y,
bl->fw, bl->fh);
@ -232,7 +233,7 @@ e_background_set_scroll(E_Background * bg, int sx, int sy)
void
e_background_set_size(E_Background * bg, int w, int h)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -250,7 +251,7 @@ e_background_set_size(E_Background * bg, int w, int h)
iw = 0;
ih = 0;
if (bg->evas)
evas_get_image_size(bg->evas, bl->obj, &iw, &ih);
evas_object_image_size_get(bl->obj, &iw, &ih);
w = bl->size.w * (double)bg->geom.w;
h = bl->size.h * (double)bg->geom.h;
if (bl->size.orig.w)
@ -277,18 +278,18 @@ e_background_set_size(E_Background * bg, int w, int h)
bl->fh = fh;
if (bg->evas)
{
evas_move(bg->evas, bl->obj, bl->x, bl->y);
evas_resize(bg->evas, bl->obj, bl->w, bl->h);
evas_object_move(bl->obj, bl->x, bl->y);
evas_object_resize(bl->obj, bl->w, bl->h);
if (bl->type == E_BACKGROUND_TYPE_IMAGE)
{
evas_set_image_fill(bg->evas, bl->obj,
evas_object_image_fill_set(bl->obj,
(double)bg->geom.sx * bl->scroll.x,
(double)bg->geom.sy * bl->scroll.y,
bl->fw, bl->fh);
}
else if (bl->type == E_BACKGROUND_TYPE_GRADIENT)
{
evas_set_angle(bg->evas, bl->obj, bl->angle);
evas_object_angle_set(bl->obj, bl->angle);
}
else if (bl->type == E_BACKGROUND_TYPE_SOLID)
{
@ -302,7 +303,7 @@ void
e_background_set_color_class(E_Background * bg, char *cc, int r, int g, int b,
int a)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -316,9 +317,9 @@ e_background_set_color_class(E_Background * bg, char *cc, int r, int g, int b,
if (bg->evas)
{
if ((l == bg->layers) && (bg->base_obj))
evas_set_color(bg->evas, bl->obj, r, g, b, 255);
evas_object_color_set(bl->obj, r, g, b, 255);
else
evas_set_color(bg->evas, bl->obj, r, g, b, a);
evas_object_color_set(bl->obj, r, g, b, a);
}
}
}

View File

@ -18,7 +18,7 @@ struct _E_Background
{
E_Object o;
Evas evas;
Evas * evas;
char *file;
struct
@ -28,9 +28,9 @@ struct _E_Background
}
geom;
Evas_List layers;
Evas_List * layers;
Evas_Object base_obj;
Evas_Object * base_obj;
};
struct _E_Background_Layer
@ -68,13 +68,13 @@ struct _E_Background_Layer
double x, y, w, h, fw, fh;
Evas_Object obj;
Evas_Object * obj;
};
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_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);
void e_background_set_color_class(E_Background * bg, char *cc,

View File

@ -10,14 +10,14 @@ struct _e_block
int refs;
};
static Evas_List blocks = NULL;
static Evas_List * blocks = NULL;
static E_Block *e_block_find(char *name);
static E_Block *
e_block_find(char *name)
{
Evas_List l;
Evas_List * l;
D_ENTER;
for (l = blocks; l; l = l->next)

File diff suppressed because it is too large Load Diff

View File

@ -36,18 +36,17 @@ struct _E_Border
Window client;
}
win;
Evas evas;
Evas *evas;
struct
{
E_Text *title;
Evas_Object title_clip;
Evas_Object *title_clip;
}
obj;
Pixmap pixmap;
Evas_List *windows;
struct
{
int new;
char *file;
Ebits_Object b;
}
bits;
@ -198,7 +197,6 @@ struct _E_Border
int shape_changed;
int placed;
Evas_List grabs;
E_Grab *click_grab;
E_Desktop *desk;
@ -209,8 +207,6 @@ struct _E_Border
int hold_changes;
Evas_List menus;
int changed;
};
@ -225,6 +221,9 @@ void e_border_init(void);
E_Border *e_border_new(void);
void e_border_update_borders(void);
void e_border_redraw_region(E_Border *b, int x, int y,
int w, int h);
void e_border_update_render(E_Border * b);
void e_border_apply_border(E_Border * b);
void e_border_reshape(E_Border * b);
void e_border_release(E_Border * b);
@ -251,11 +250,12 @@ void e_border_raise_above(E_Border * b, E_Border * above);
void e_border_lower_below(E_Border * b, E_Border * below);
E_Border *e_border_current_focused(void);
void e_border_focus_grab_ended(void);
void e_border_raise_next(void);
void e_border_send_pointer(E_Border * b);
int e_border_viewable(E_Border * b);
void e_border_print_pos(char *buf, E_Border * b);
void e_border_print_size(char *buf, E_Border * b);
void e_border_set_gravity(E_Border * b, int gravity);
Evas_List e_border_get_borders_list();
Evas_List *e_border_get_borders_list();
void e_borders_scroll_list(Evas_List *borders,
int dx, int dy);
#endif

View File

@ -6,6 +6,8 @@
#include "icccm.h"
#include "bordermenu.h"
static E_Menu *bordermenu = NULL;
static void e_bordermenu_cb_close(E_Menu * m, E_Menu_Item * mi,
void *data);
static void e_bordermenu_cb_kill(E_Menu * m, E_Menu_Item * mi,
@ -37,7 +39,8 @@ static void e_bordermenu_cb_remember_prog_location_ignore(E_Menu * m,
E_Menu_Item *
mi,
void *data);
static void e_bordermenu_cb_menu_hide(E_Menu * m, void *data);
static void e_bordermenu_cb_to_desktop(E_Menu * m, E_Menu_Item * mi,
void *data);
static void
e_bordermenu_cb_close(E_Menu * m, E_Menu_Item * mi, void *data)
@ -331,20 +334,32 @@ e_bordermenu_cb_remember_prog_location_ignore(E_Menu * m, E_Menu_Item * mi,
}
static void
e_bordermenu_cb_menu_hide(E_Menu * m, void *data)
e_bordermenu_cb_to_desktop(E_Menu * m, E_Menu_Item * mi, void *data)
{
int d = 0;
E_Border *b;
E_Desktop *desk;
D_ENTER;
b = data;
if (b->client.sticky)
D_RETURN;
while (b->menus)
{
m = b->menus->data;
m->delete_me = 1;
b->menus = evas_list_remove(b->menus, m);
}
e_desktops_del_border(b->desk, b);
sscanf(mi->str, "Desktop %d", &d);
desk = e_desktops_get(d);
if (!desk)
desk = e_desktops_get(e_desktops_get_current());
D("Sending border %p to desk %d\n", b, d);
e_desktops_add_border(desk, b);
b->client.desk = d;
b->current.requested.visible = 0;
b->changed = 1;
e_border_update_borders();
D_RETURN;
UN(m);
@ -353,18 +368,19 @@ e_bordermenu_cb_menu_hide(E_Menu * m, void *data)
void
e_bordermenu_do(E_Border * b)
{
int i;
char label[PATH_MAX];
E_Menu *menu;
E_Menu *menu2;
E_Menu_Item *menuitem;
D_ENTER;
if (!b->menus)
if (!bordermenu)
{
menu = e_menu_new();
b->menus = evas_list_append(b->menus, menu);
e_menu_set_padding_icon(menu, 2);
e_menu_set_padding_state(menu, 2);
e_menu_hide_callback(menu, e_bordermenu_cb_menu_hide, b);
menuitem = e_menu_item_new("Close");
/* e_menu_item_set_icon(menuitem, icon); */
@ -451,6 +467,24 @@ e_bordermenu_do(E_Border * b)
b);
e_menu_add_item(menu, menuitem);
e_menu_set_state(menu, menuitem);
menu2 = e_menu_new();
e_menu_set_padding_icon(menu2, 2);
e_menu_set_padding_state(menu2, 2);
for (i = 0; i < e_desktops_get_num(); i++)
{
snprintf(label, PATH_MAX, "Desktop %d", i);
menuitem = e_menu_item_new(label);
e_menu_item_set_callback(menuitem, e_bordermenu_cb_to_desktop, b);
e_menu_add_item(menu2, menuitem);
}
menuitem = e_menu_item_new("Goto Desktop...");
e_menu_item_set_submenu(menuitem, menu2);
e_menu_add_item(menu, menuitem);
bordermenu = menu;
}
{
@ -458,7 +492,7 @@ e_bordermenu_do(E_Border * b)
int crx, cry, crw, crh;
int mx, my;
menu = b->menus->data;
menu = bordermenu;
pl = pr = pt = pb = 0;
if (b->bits.b)
ebits_get_insets(b->bits.b, &pl, &pr, &pt, &pb);
@ -480,3 +514,10 @@ e_bordermenu_do(E_Border * b)
D_RETURN;
}
void
e_bordermenu_hide(void)
{
if (bordermenu)
e_menu_hide(bordermenu);
}

View File

@ -4,5 +4,6 @@
#include "e.h"
void e_bordermenu_do(E_Border * b);
void e_bordermenu_hide(void);
#endif

View File

@ -1,6 +1,12 @@
#include "debug.h"
#include "actions.h"
#include "border.h"
#include "config.h"
#include "data.h"
#include "e_dir.h"
#include "file.h"
#include "keys.h"
#include "observer.h"
#include "util.h"
static char cfg_root[] = "";
@ -24,6 +30,24 @@ static char cfg_fonts_dir[PATH_MAX] = "";
static char cfg_epplets_dir[PATH_MAX] = "";
static char cfg_layout_dir[PATH_MAX] = "";
static E_Observer *behavior_dir = NULL;
E_Config *config_data;
E_Data_Base_Type *cfg_actions = NULL;
E_Data_Base_Type *cfg_config = NULL;
E_Data_Base_Type *cfg_desktops = NULL;
E_Data_Base_Type *cfg_grabs = NULL;
E_Data_Base_Type *cfg_guides = NULL;
E_Data_Base_Type *cfg_match = NULL;
E_Data_Base_Type *cfg_menu = NULL;
E_Data_Base_Type *cfg_move = NULL;
E_Data_Base_Type *cfg_window = NULL;
void e_config_behavior_changed(E_Observer * observer,
E_Observee * observee,
E_Event_Type event, void *data);
void e_config_settings_reload(char *buf);
char *
e_config_get(char *type)
{
@ -74,25 +98,159 @@ e_config_get(char *type)
E_CONF("images", cfg_images_dir, PACKAGE_DATA_DIR "/data/images/");
E_CONF("cursors", cfg_cursors_dir, PACKAGE_DATA_DIR "/data/cursors/");
E_CONF("backgrounds", cfg_backgrounds_dir,
PACKAGE_DATA_DIR"/data/backgrounds/");
E_CONF("fonts", cfg_fonts_dir,
PACKAGE_DATA_DIR"/data/fonts/");
E_CONF("epplets", cfg_epplets_dir,
PACKAGE_DATA_DIR"/data/epplets/");
E_CONF("layout", cfg_layout_dir,
PACKAGE_DATA_DIR"/data/layout/");
PACKAGE_DATA_DIR "/data/backgrounds/");
E_CONF("fonts", cfg_fonts_dir, PACKAGE_DATA_DIR "/data/fonts/");
E_CONF("epplets", cfg_epplets_dir, PACKAGE_DATA_DIR "/data/epplets/");
E_CONF("layout", cfg_layout_dir, PACKAGE_DATA_DIR "/data/layout/");
D_RETURN_("");
}
void
e_config_actions_init()
{
D_ENTER;
/*
* Define the data type for the E_Actions struct.
*/
cfg_actions = e_data_type_new();
E_DATA_NODE(cfg_actions, "name", E_DATA_TYPE_STR, NULL, E_Action, name,
(E_Data_Value) "");
E_DATA_NODE(cfg_actions, "action", E_DATA_TYPE_STR, NULL, E_Action, action,
(E_Data_Value) "");
E_DATA_NODE(cfg_actions, "params", E_DATA_TYPE_STR, NULL, E_Action,
params, (E_Data_Value) "");
E_DATA_NODE(cfg_actions, "event", E_DATA_TYPE_INT, NULL, E_Action, event,
(E_Data_Value) 0);
E_DATA_NODE(cfg_actions, "button", E_DATA_TYPE_INT, NULL, E_Action, button,
(E_Data_Value) 0);
E_DATA_NODE(cfg_actions, "key", E_DATA_TYPE_STR, NULL, E_Action, key,
(E_Data_Value) 0);
E_DATA_NODE(cfg_actions, "modifiers", E_DATA_TYPE_INT, NULL, E_Action,
modifiers, (E_Data_Value) 0);
D_RETURN;
}
void
e_config_desktops_init()
{
cfg_desktops = e_data_type_new();
E_DATA_NODE(cfg_desktops, "count", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
count, (E_Data_Value) 8);
E_DATA_NODE(cfg_desktops, "scroll", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
scroll, (E_Data_Value) 1);
E_DATA_NODE(cfg_desktops, "scroll_sticky", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
scroll_sticky, (E_Data_Value) 1);
E_DATA_NODE(cfg_desktops, "resist", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
resist, (E_Data_Value) 5);
E_DATA_NODE(cfg_desktops, "speed", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
speed, (E_Data_Value) 30);
E_DATA_NODE(cfg_desktops, "width", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
width, (E_Data_Value) 1);
E_DATA_NODE(cfg_desktops, "height", E_DATA_TYPE_INT, NULL, E_Config_Desktops,
height, (E_Data_Value) 1);
}
void
e_config_grabs_init()
{
cfg_grabs = e_data_type_new();
E_DATA_NODE(cfg_grabs, "button", E_DATA_TYPE_INT, NULL, E_Grab, button,
(E_Data_Value) 0);
E_DATA_NODE(cfg_grabs, "modifiers", E_DATA_TYPE_INT, NULL, E_Grab, mods,
(E_Data_Value) 0);
}
void
e_config_guides_init()
{
cfg_guides = e_data_type_new();
E_DATA_NODE(cfg_guides, "display/location", E_DATA_TYPE_INT, NULL,
E_Config_Guides, location, (E_Data_Value) 0);
E_DATA_NODE(cfg_guides, "display/x", E_DATA_TYPE_FLOAT, NULL,
E_Config_Guides, x, (E_Data_Value) 0);
E_DATA_NODE(cfg_guides, "display/y", E_DATA_TYPE_FLOAT, NULL,
E_Config_Guides, y, (E_Data_Value) 0);
}
void
e_config_menu_init()
{
cfg_menu = e_data_type_new();
E_DATA_NODE(cfg_menu, "scroll/resist", E_DATA_TYPE_INT, NULL,
E_Config_Menu, resist, (E_Data_Value) 5);
E_DATA_NODE(cfg_menu, "scroll/speed", E_DATA_TYPE_INT, NULL,
E_Config_Menu, speed, (E_Data_Value) 12);
}
void
e_config_move_init()
{
cfg_move = e_data_type_new();
E_DATA_NODE(cfg_move, "resist", E_DATA_TYPE_INT, NULL,
E_Config_Move, resist, (E_Data_Value) 0);
E_DATA_NODE(cfg_move, "resist/win", E_DATA_TYPE_INT, NULL,
E_Config_Move, win_resist, (E_Data_Value) 0);
E_DATA_NODE(cfg_move, "resist/desk", E_DATA_TYPE_INT, NULL,
E_Config_Move, desk_resist, (E_Data_Value) 0);
}
void
e_config_window_init()
{
cfg_window = e_data_type_new();
E_DATA_NODE(cfg_window, "resize/mode", E_DATA_TYPE_INT, NULL,
E_Config_Window, resize_mode, (E_Data_Value) 0);
E_DATA_NODE(cfg_window, "move/mode", E_DATA_TYPE_INT, NULL,
E_Config_Window, move_mode, (E_Data_Value) 0);
E_DATA_NODE(cfg_window, "focus/mode", E_DATA_TYPE_INT, NULL, E_Config_Window,
focus_mode, (E_Data_Value) 0);
E_DATA_NODE(cfg_window, "raise/auto", E_DATA_TYPE_INT, NULL,
E_Config_Window, auto_raise, (E_Data_Value) 0);
E_DATA_NODE(cfg_window, "raise/delay", E_DATA_TYPE_FLOAT, NULL,
E_Config_Window, raise_delay, (E_Data_Value) (float)0.6);
E_DATA_NODE(cfg_window, "place/mode", E_DATA_TYPE_INT, NULL,
E_Config_Window, place_mode, (E_Data_Value) 0);
}
void
e_config_init(void)
{
char buf[PATH_MAX];
E_Dir *dir;
D_ENTER;
#if 1 /* for now don't do this. i think a cp -r will be needed later anyway */
/* Start by initializing the data loading structures */
e_config_actions_init();
e_config_desktops_init();
e_config_grabs_init();
e_config_guides_init();
e_config_menu_init();
e_config_move_init();
e_config_window_init();
/* Then place the data structures within the config description */
cfg_config = e_data_type_new();
E_DATA_NODE(cfg_config, "actions", E_DATA_TYPE_LIST, cfg_actions,
E_Config, actions, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "grabs", E_DATA_TYPE_LIST, cfg_grabs,
E_Config, grabs, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "desktops", E_DATA_TYPE_PTR, cfg_desktops,
E_Config, desktops, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "guides", E_DATA_TYPE_PTR, cfg_guides,
E_Config, guides, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "menu", E_DATA_TYPE_PTR, cfg_menu,
E_Config, menu, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "move", E_DATA_TYPE_PTR, cfg_move,
E_Config, move, (E_Data_Value) 0);
E_DATA_NODE(cfg_config, "window", E_DATA_TYPE_PTR, cfg_window,
E_Config, window, (E_Data_Value) 0);
/* Create directories as needed */
if (!e_file_is_dir(e_config_user_dir()))
e_file_mkdir(e_config_user_dir());
snprintf(buf, PATH_MAX, "%sappearance", e_config_user_dir());
@ -104,6 +262,8 @@ e_config_init(void)
snprintf(buf, PATH_MAX, "%sbehavior", e_config_user_dir());
if (!e_file_is_dir(buf))
e_file_mkdir(buf);
/* With the directories created, create files if needed and load config */
snprintf(buf, PATH_MAX, "%sbehavior/grabs.db", e_config_user_dir());
if (!e_file_exists(buf))
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/grabs.db", buf);
@ -119,22 +279,74 @@ e_config_init(void)
if (!e_file_exists(buf))
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/apps_menu.db",
buf);
snprintf(buf, PATH_MAX, "%sappearance/borders/border.bits.db",
e_config_user_dir());
#endif
#if 0
ts();
#endif
snprintf(buf, PATH_MAX, "%sbehavior/behavior.db", e_config_user_dir());
if (!e_file_exists(buf))
e_file_cp(PACKAGE_DATA_DIR "/data/config/behavior/default/behavior.db",
buf);
/* Load config data and begin monitoring it with efsd */
e_config_behavior_changed(NULL, NULL, 0, NULL);
snprintf(buf, PATH_MAX, "%sbehavior", e_config_user_dir());
dir = e_dir_new();
e_dir_set_dir(dir, buf);
behavior_dir = NEW(E_Observer, 1);
ZERO(behavior_dir, sizeof(E_Observer), 1);
e_observer_init(behavior_dir, E_EVENT_FILE_CHANGE,
e_config_behavior_changed, free);
e_observer_register_observee(behavior_dir, E_OBSERVEE(dir));
D_RETURN;
}
void
e_config_behavior_changed(E_Observer * observer, E_Observee * observee,
E_Event_Type event, void *data)
{
char buf[PATH_MAX];
Evas_List *l;
if (config_data)
{
e_data_free(cfg_config, (char *)config_data);
FREE(config_data);
}
snprintf(buf, PATH_MAX, "%sbehavior/behavior.db", e_config_user_dir());
config_data = e_data_load(buf, "", cfg_config);
/* FIXME: this should probably be a function in actions.c */
for (l = config_data->actions; l; l = l->next)
{
E_Action *a;
a = l->data;
e_object_init(E_OBJECT(a), (E_Cleanup_Func) e_action_cleanup);
if ((a->key) && (strlen(a->key) > 0))
{
if (a->modifiers == -1)
e_keys_grab(a->key, ECORE_EVENT_KEY_MODIFIER_NONE, 1);
else
e_keys_grab(a->key, (Ecore_Event_Key_Modifiers) a->modifiers,
0);
a->grabbed = 1;
}
}
return;
UN(observer);
UN(observee);
UN(event);
UN(data);
}
void
e_config_set_user_dir(char *dir)
{
D_ENTER;
strcpy(cfg_root, dir);
STRNCPY(cfg_root, dir, PATH_MAX);
/* reset the cached dir paths */
cfg_grabs_db[0] = 0;
cfg_settings_db[0] = 0;
@ -163,272 +375,11 @@ e_config_user_dir(void)
{
D_ENTER;
/* We copy the config files to the user's home dir, no need to fall back */
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 */
snprintf(cfg_user_dir, PATH_MAX, "%s/.e/", e_util_get_user_home());
#else
snprintf(cfg_user_dir, PATH_MAX, PACKAGE_DATA_DIR "/data/config/");
#endif
D_RETURN_(cfg_user_dir);
}
typedef struct _e_config_file_entry E_Config_File_Entry;
struct _e_config_file_entry
{
char *name;
struct
{
char *path;
time_t last_mod;
}
user , system;
Evas_List hash[256];
};
void
e_config_add_change_cb(char *file, void (*func) (void *_data), void *data)
{
}
void
e_config_del_change_cb(char *file, void (*func) (void *_data))
{
}
int
e_config_val_int_get(char *file, char *key, int def)
{
}
float
e_config_val_float_get(char *file, char *key, float def)
{
}
char *
e_config_val_str_get(char *file, char *key, char *def)
{
}
char *
e_config_val_key_get(char *file, char *key, char *def)
{
}
void
e_config_type_add_node(E_Config_Base_Type * base, char *prefix,
E_Config_Datatype type, E_Config_Base_Type * list_type,
int offset, int def_int, float def_float, char *def_str)
{
E_Config_Node *cfg_node;
D_ENTER;
cfg_node = NEW(E_Config_Node, 1);
ZERO(cfg_node, E_Config_Node, 1);
cfg_node->prefix = strdup(prefix);
cfg_node->type = type;
cfg_node->sub_type = list_type;
cfg_node->offset = offset;
cfg_node->def_int = def_int;
cfg_node->def_float = def_float;
if (cfg_node->def_str)
{
e_strdup(cfg_node->def_str, def_str);
}
base->nodes = evas_list_append(base->nodes, cfg_node);
D_RETURN;
}
E_Config_Base_Type *
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);
D_RETURN_(t);
}
void *
e_config_load(char *file, char *prefix, E_Config_Base_Type * type)
{
E_DB_File *db;
char buf[PATH_MAX];
Evas_List l;
char *data;
D_ENTER;
if (!e_file_exists(file))
D_RETURN_(NULL);
db = e_db_open_read(file);
if (!db)
D_RETURN_(NULL);
data = NEW(char, type->size);
ZERO(data, char, type->size);
for (l = type->nodes; l; l = l->next)
{
E_Config_Node *node;
node = l->data;
switch (node->type)
{
case E_CFG_TYPE_INT:
{
int val;
val = 0;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if (e_db_int_get(db, buf, &val))
(*((int *)(&(data[node->offset])))) = val;
else
(*((int *)(&(data[node->offset])))) = node->def_int;
}
break;
case E_CFG_TYPE_STR:
{
char *val;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if ((val = e_db_str_get(db, buf)))
(*((char **)(&(data[node->offset])))) = val;
else
e_strdup((*((char **)(&(data[node->offset])))),
node->def_str);
}
break;
case E_CFG_TYPE_FLOAT:
{
float val;
val = 0;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if (e_db_float_get(db, buf, &val))
(*((float *)(&(data[node->offset])))) = val;
else
(*((float *)(&(data[node->offset])))) = node->def_float;
}
break;
case E_CFG_TYPE_LIST:
{
Evas_List l2;
int i, count;
l2 = NULL;
snprintf(buf, PATH_MAX, "%s/%s/count", prefix, node->prefix);
count = 0;
e_db_int_get(db, buf, &count);
for (i = 0; i < count; i++)
{
void *data2;
snprintf(buf, PATH_MAX, "%s/%s/%i", prefix, node->prefix,
i);
data2 = e_config_load(file, buf, node->sub_type);
l2 = evas_list_append(l2, data2);
}
(*((Evas_List *) (&(data[node->offset])))) = l2;
}
break;
case E_CFG_TYPE_KEY:
{
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
(*((char **)(&(data[node->offset])))) = strdup(buf);
}
break;
default:
break;
}
}
e_db_close(db);
D_RETURN_(data);
}
#if 0
typedef struct _list_base List_Base;
typedef struct _list_element List_Element;
struct _list_base
{
Evas_List elements;
};
struct _list_element
{
char *name;
int size;
float perc;
};
/* eg: */
void
ts(void)
{
/* define the different config types and structs to the config engine */
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);
E_CONFIG_NODE(cf_element, "perc", E_CFG_TYPE_FLOAT, NULL, List_Element, perc,
0, 3.1415, NULL);
cf_list = e_config_type_new();
E_CONFIG_NODE(cf_list, "list", E_CFG_TYPE_LIST, cf_element, List_Base,
elements, 0, 0, NULL);
/* now test it */
{
List_Base *cfg_data;
/* load the base data type from the base of the test db file */
cfg_data = e_config_load("test.db", "", cf_list);
/* no data file? */
if (!cfg_data)
{
D("no load!\n");
}
/* got data */
else
{
Evas_List l;
for (l = cfg_data->elements; l; l = l->next)
{
List_Element *cfg_element;
D("element\n");
cfg_element = l->data;
D("... name %s\n", cfg_element->name);
D("... size %i\n", cfg_element->size);
D("... perc %3.3f\n", cfg_element->perc);
}
}
exit(0);
}
D_RETURN;
}
#endif

View File

@ -3,218 +3,75 @@
#include "e.h"
typedef struct _E_Config_File E_Config_File;
typedef struct _E_Config_Element E_Config_Element;
/* something to check validity of config files where we get data from */
/* for now its just a 5 second timout so it will only invalidate */
/* if we havent looked for 5 seconds... BUT later when efsd is more solid */
/* we should use that to tell us when its invalid */
struct _E_Config_File
/*
* Define small subsets of the whole config for defining data types for
* loading from the databases.
*/
typedef struct _E_Config_Desktops E_Config_Desktops;
struct _E_Config_Desktops
{
char *src;
double last_fetch;
int count;
int scroll;
int scroll_sticky;
int resist;
int speed;
int width;
int height;
};
struct _E_Config_Element
typedef struct _E_Config_Guides E_Config_Guides;
struct _E_Config_Guides
{
char *src;
char *key;
double last_fetch;
int type;
int def_int_val;
float def_float_val;
char *def_str_val;
void *def_data_val;
int def_data_val_size;
int cur_int_val;
float cur_float_val;
char *cur_str_val;
void *cur_data_val;
int cur_data_val_size;
float x;
float y;
int location;
};
#define E_CFG_FILE(_var, _src) \
static E_Config_File _var = {_src, 0.0}
#define E_CONFIG_CHECK_VALIDITY(_var, _src) \
{ \
double __time; \
__time = ecore_get_time(); \
if (_var.last_fetch < (__time - 5.0)) { \
_var.last_fetch = __time;
#define E_CONFIG_CHECK_VALIDITY_END \
} \
}
typedef enum e_config_type
typedef struct _E_Config_Menu E_Config_Menu;
struct _E_Config_Menu
{
E_CFG_INT_T,
E_CFG_FLOAT_T,
E_CFG_STR_T,
E_CFG_DATA_T,
}
E_Config_Type;
int resist;
int speed;
};
#define E_CFG_INT(_var, _src, _key, _default) \
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_INT_T, \
_default, 0.0, NULL, NULL, 0, \
0, 0.0, NULL, NULL, 0, \
}
typedef struct _E_Config_Move E_Config_Move;
struct _E_Config_Move
{
int resist;
int win_resist;
int desk_resist;
};
#define E_CFG_FLOAT(_var, _src, _key, _default) \
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_FLOAT_T, \
0, _default, NULL, NULL, 0, \
0, 0.0, NULL, NULL, 0, \
}
typedef struct _E_Config_Window E_Config_Window;
struct _E_Config_Window
{
int move_mode;
int focus_mode;
int auto_raise;
float raise_delay;
int resize_mode;
int place_mode;
};
#define E_CFG_STR(_var, _src, _key, _default) \
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_STR_T, \
0, 0.0, _default, NULL, 0, \
0, 0.0, NULL, NULL, 0, \
}
typedef struct _E_Config E_Config;
struct _E_Config
{
Evas_List *actions;
Evas_List *grabs;
Evas_List *match;
#define E_CFG_DATA(_var, _src, _key, _default, _default_size) \
static E_Config_Element _var = { _src, _key, 0.0, E_CFG_DATAT_T, \
0, 0.0, NULL, _default, _default_size, \
0, 0.0, NULL, NULL, 0, \
}
E_Config_Desktops *desktops;
E_Config_Guides *guides;
E_Config_Menu *menu;
E_Config_Move *move;
E_Config_Window *window;
};
/* yes for now it only fetches them every 5 seconds - in the end i need a */
/* validity flag for the database file to know if it changed and only then */
/* get the value again. this is waiting for efsd to become more solid */
#define E_CFG_VALIDITY_CHECK(_var) \
{ \
double __time; \
__time = ecore_get_time(); \
if (_var.last_fetch < (__time - 5.0)) { \
int __cfg_ok = 0; \
_var.last_fetch = __time;
#define E_CFG_END_VALIDITY_CHECK \
} \
}
#define E_CONFIG_INT_GET(_var, _val) \
{{ \
E_CFG_VALIDITY_CHECK(_var) \
E_DB_INT_GET(e_config_get(_var.src), _var.key, _var.cur_int_val, __cfg_ok); \
if (!__cfg_ok) _var.cur_int_val = _var.def_int_val; \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var.cur_int_val;}
#define E_CONFIG_FLOAT_GET(_var, _val) \
{{ \
E_CFG_VALIDITY_CHECK(_var) \
E_DB_FLOAT_GET(e_config_get(_var.src), _var.key, _var.cur_float_val, __cfg_ok); \
if (!__cfg_ok) _var.cur_float_val = _var.def_float_val; \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var.cur_float_val;}
#define E_CONFIG_STR_GET(_var, _val) \
{{ \
E_CFG_VALIDITY_CHECK(_var) \
if (_var.cur_str_val) free(_var.cur_str_val); \
_var.cur_str_val = NULL; \
E_DB_STR_GET(e_config_get(_var.src), _var.key, _var.cur_str_val, __cfg_ok); \
if (!__cfg_ok) _var.cur_str_val = _var.def_str_val \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var.cur_str_val;}
#define E_CONFIG_DATA_GET(_var, _val, _size) \
{{ \
E_CFG_VALIDITY_CHECK(_var) \
if (_var.cur_data_val) free(_var.cur_data_val); \
_var.cur_data_val = NULL; \
_var.cur_data_size = 0; \
{ E_DB_File *__db; \
__db = e_db_open_read(e_config_get(_var.src)); \
if (__db) { \
_var.cur_data_val = e_db_data_get(__db, _var.key, &(_var.cur_data_size)); \
if (_var.cur_data_val) __cfg_ok = 1; \
e_db_close(__db); \
} \
} \
if (!__cfg_ok) { \
_var.cur_data_val = e_memdup(_var.def_data_val, _var.def_data_size); \
_var.cur_data_size = _var.def_data_size; \
} \
E_CFG_END_VALIDITY_CHECK \
} \
_val = _var.cur_data_val; \
_size = _var.cur_data_size;}
extern E_Config *config_data;
char *e_config_get(char *type);
void e_config_init(void);
void e_config_set_user_dir(char *dir);
char *e_config_user_dir(void);
typedef struct _e_config_base_type E_Config_Base_Type;
typedef struct _e_config_node E_Config_Node;
typedef struct _e_config_value E_Config_Value;
typedef enum _e_config_datatype E_Config_Datatype;
enum _e_config_datatype
{
E_CFG_TYPE_INT,
E_CFG_TYPE_STR,
E_CFG_TYPE_FLOAT,
E_CFG_TYPE_LIST,
E_CFG_TYPE_KEY
};
struct _e_config_base_type
{
int size;
Evas_List nodes;
};
struct _e_config_node
{
char *prefix;
E_Config_Datatype type;
int offset;
E_Config_Base_Type *sub_type;
int def_int;
float def_float;
char *def_str;
};
#define E_CONFIG_NODE(var, prefix, type, sub, struct_type, struct_member, def_int, def_float, def_str) \
{ \
struct_type _cfg_dummy; \
char *_cfg_p1, *_cfg_p2; \
int _cfg_offset; \
\
_cfg_p1 = (char *)(&(_cfg_dummy)); \
_cfg_p2 = (char *)(&(_cfg_dummy.struct_member)); \
_cfg_offset = (int)(_cfg_p2 - _cfg_p1); \
\
e_config_type_add_node(var, prefix, type, sub, _cfg_offset, def_int, def_float, def_str); \
var->size = sizeof(struct_type); \
}
E_Config_Value *e_config_value_get_int(E_Config_Value * handle, char *file,
char *prefix, char *key,
int *val_ret, int default_val);
E_Config_Value *e_config_value_get_str(E_Config_Value * handle, char *file,
char *prefix, char *key,
char **val_ret, char *default_val);
E_Config_Value *e_config_value_get_float(E_Config_Value * handle,
char *file, char *prefix,
char *key, float *val_ret,
float default_val);
E_Config_Base_Type *e_config_type_new(void);
void e_config_type_add_node(E_Config_Base_Type * base,
char *prefix,
E_Config_Datatype type,
E_Config_Base_Type * list_type,
int offset,
int def_int,
float def_float, char *def_str);
void *e_config_load(char *file,
char *prefix, E_Config_Base_Type * type);
#endif

View File

@ -16,7 +16,7 @@ struct _e_cursor
static int cursor_change = 0;
static char *cur_cursor = NULL;
static char *prev_cursor = NULL;
static Evas_List cursors = NULL;
static Evas_List * cursors = NULL;
static void e_cursors_idle(void *data);
static void e_cursors_set(char *type);
@ -62,7 +62,7 @@ e_cursors_set(char *type)
static E_Cursor *
e_cursors_find(char *type)
{
Evas_List l;
Evas_List * l;
D_ENTER;

220
src/data.c Normal file
View File

@ -0,0 +1,220 @@
#include "debug.h"
#include "e.h"
#include "data.h"
#include "file.h"
#include "util.h"
void
e_data_type_add_node(E_Data_Base_Type * base, char *prefix,
E_Data_Datatype type,
E_Data_Base_Type * list_type,
int offset, E_Data_Value def_val)
{
E_Data_Node *data_node;
D_ENTER;
data_node = NEW(E_Data_Node, 1);
ZERO(data_node, E_Data_Node, 1);
data_node->prefix = strdup(prefix);
data_node->type = type;
data_node->sub_type = list_type;
data_node->offset = offset;
switch (type)
{
case E_DATA_TYPE_INT:
data_node->def_val.int_val = def_val.int_val;
break;
case E_DATA_TYPE_FLOAT:
data_node->def_val.float_val = def_val.float_val;
break;
case E_DATA_TYPE_STR:
if (data_node->def_val.str_val)
{
e_strdup(data_node->def_val.str_val, def_val.str_val);
}
break;
default:
break;
}
base->nodes = evas_list_append(base->nodes, data_node);
D_RETURN;
}
E_Data_Base_Type *
e_data_type_new(void)
{
E_Data_Base_Type *t;
D_ENTER;
t = NEW(E_Data_Base_Type, 1);
ZERO(t, E_Data_Base_Type, 1);
D_RETURN_(t);
}
void *
e_data_load(char *file, char *prefix, E_Data_Base_Type * type)
{
E_DB_File *db;
char buf[PATH_MAX];
Evas_List *l;
char *data;
D_ENTER;
if (!e_file_exists(file))
D_RETURN_(NULL);
db = e_db_open_read(file);
if (!db)
D_RETURN_(NULL);
data = NEW(char, type->size);
ZERO(data, char, type->size);
for (l = type->nodes; l; l = l->next)
{
E_Data_Node *node;
node = l->data;
switch (node->type)
{
case E_DATA_TYPE_INT:
{
int val;
val = 0;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if (e_db_int_get(db, buf, &val))
(*((int *)(&(data[node->offset])))) = val;
else
(*((int *)(&(data[node->offset])))) = node->def_val.int_val;
}
break;
case E_DATA_TYPE_STR:
{
char *val;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if ((val = e_db_str_get(db, buf)))
(*((char **)(&(data[node->offset])))) = val;
else
e_strdup((*((char **)(&(data[node->offset])))),
node->def_val.str_val);
}
break;
case E_DATA_TYPE_PTR:
{
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
(*((void **)(&(data[node->offset])))) = e_data_load(file, buf,
node->
sub_type);
}
break;
case E_DATA_TYPE_FLOAT:
{
float val;
val = 0;
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
if (e_db_float_get(db, buf, &val))
(*((float *)(&(data[node->offset])))) = val;
else
(*((float *)(&(data[node->offset])))) =
node->def_val.float_val;
}
break;
case E_DATA_TYPE_LIST:
{
Evas_List *l2;
int i, count;
l2 = NULL;
snprintf(buf, PATH_MAX, "%s/%s/count", prefix, node->prefix);
count = 0;
e_db_int_get(db, buf, &count);
for (i = 0; i < count; i++)
{
void *data2;
snprintf(buf, PATH_MAX, "%s/%s/%i", prefix, node->prefix,
i);
data2 = e_data_load(file, buf, node->sub_type);
l2 = evas_list_append(l2, data2);
}
(*((Evas_List **) (&(data[node->offset])))) = l2;
}
break;
case E_DATA_TYPE_KEY:
{
snprintf(buf, PATH_MAX, "%s/%s", prefix, node->prefix);
(*((char **)(&(data[node->offset])))) = strdup(buf);
}
break;
default:
break;
}
}
e_db_close(db);
D_RETURN_(data);
}
void
e_data_free(E_Data_Base_Type * type, char *data)
{
Evas_List *l;
D_ENTER;
for (l = type->nodes; l; l = l->next)
{
E_Data_Node *node;
node = l->data;
switch (node->type)
{
case E_DATA_TYPE_LIST:
{
Evas_List *l2;
l2 = (*((Evas_List **) (&(data[node->offset]))));
while (l2)
{
char *data2;
data2 = l2->data;
l2 = evas_list_remove(l2, data2);
e_data_free(node->sub_type, (char *)data2);
FREE(data2);
}
}
break;
case E_DATA_TYPE_STR:
case E_DATA_TYPE_KEY:
{
IF_FREE((*((char **)(&(data[node->offset])))));
}
break;
case E_DATA_TYPE_PTR:
{
e_data_free(node->sub_type,
(*((void **)(&(data[node->offset])))));
FREE((*((void **)(&(data[node->offset])))));
}
break;
case E_DATA_TYPE_INT:
case E_DATA_TYPE_FLOAT:
break;
default:
D("DATA WARNING: Data node %p corrupted!!!\n", node);
break;
}
}
D_RETURN;
}

97
src/data.h Normal file
View File

@ -0,0 +1,97 @@
#ifndef _DB_H
#define _DB_H
/*
* The API described in this file is used to map data from a database into a
* struct. TODO: Arbitrary cleanup function for handling fields not described
* by the base type, ie. not read in from the database.
*/
typedef struct _e_data_base_type E_Data_Base_Type;
typedef union _e_data_value E_Data_Value;
typedef struct _e_data_node E_Data_Node;
typedef enum _e_data_datatype E_Data_Datatype;
enum _e_data_datatype
{
E_DATA_TYPE_INT,
E_DATA_TYPE_STR,
E_DATA_TYPE_PTR,
E_DATA_TYPE_FLOAT,
E_DATA_TYPE_LIST,
E_DATA_TYPE_KEY
};
struct _e_data_base_type
{
int size;
Evas_List *nodes;
};
union _e_data_value
{
int int_val;
float float_val;
char *str_val;
};
struct _e_data_node
{
char *prefix;
E_Data_Datatype type;
int offset;
E_Data_Base_Type *sub_type;
E_Data_Value def_val;
};
#define E_DATA_NODE(var, prefix, type, sub, struct_type, struct_member, def_val) \
{ \
struct_type _cfg_dummy; \
char *_cfg_p1, *_cfg_p2; \
int _cfg_offset; \
\
_cfg_p1 = (char *)(&(_cfg_dummy)); \
_cfg_p2 = (char *)(&(_cfg_dummy.struct_member)); \
_cfg_offset = (int)(_cfg_p2 - _cfg_p1); \
\
e_data_type_add_node(var, prefix, type, sub, _cfg_offset, def_val); \
var->size = sizeof(struct_type); \
}
/**
* e_data_type_new - create the basis for a new datatype description
*
* Returns a pointer to base type for tracking the elements of a data type.
*/
E_Data_Base_Type *e_data_type_new(void);
/**
* e_data_type_add_node - add a type node to the base data type
*
* Add the necessary information for setting a data field in the base struct.
*/
void e_data_type_add_node(E_Data_Base_Type * base,
char *prefix,
E_Data_Datatype type,
E_Data_Base_Type * list_type,
int offset, E_Data_Value def_val);
/**
* e_data_load - allocate and assign the data of the base type
*
* Returns a newly allocated struct of the base type, with data filled from
* the database file with keys prefixed by prefix.
*/
void *e_data_load(char *file, char *prefix,
E_Data_Base_Type * type);
/**
* e_data_free - free the data allocated by e_data_load
*
* The data assigned by e_data_load is freed, but the struct itself is not,
* since the programmer may have other fields in the struct that were not
* allocated by e_data_load.
*/
void e_data_free(E_Data_Base_Type * type, char *data);
#endif

View File

@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "debug.h"
static int do_print = 0;
static int do_print = 1;
static int calldepth = 0;
static void debug_whitespace(int calldepth);

View File

@ -1,6 +1,7 @@
#include <string.h>
#include "debug.h"
#include "delayed.h"
#include "util.h"
static void
e_delayed_action_cleanup(E_Delayed_Action * eda)
@ -14,7 +15,8 @@ e_delayed_action_cleanup(E_Delayed_Action * eda)
}
E_Delayed_Action *
e_delayed_action_new(E_Event_Type event, double delay, E_Delay_Func delay_func)
e_delayed_action_new(E_Event_Type event, E_Delay_Val delay,
E_Delay_Func delay_func)
{
E_Delayed_Action *eda = NULL;
@ -41,9 +43,11 @@ e_delayed_action_start(E_Observer * obs, E_Observee * obj, E_Event_Type event, v
D_ENTER;
snprintf(event_name, PATH_MAX, "_e_delayed_action_notify(%d)", obs->event);
ecore_add_event_timer(event_name, eda->delay, eda->delay_func, 0, obj);
ecore_add_event_timer(event_name, eda->delay(), eda->delay_func, 0, obj);
D_RETURN;
UN(event);
UN(data);
}
void

View File

@ -5,19 +5,21 @@
#include "observer.h"
typedef void (*E_Delay_Func) (int val, void *obj);
typedef float (*E_Delay_Val) ();
typedef struct _e_delayed_action
{
E_Observer obs;
double delay;
E_Delay_Val delay;
E_Delay_Func delay_func;
}
E_Delayed_Action;
E_Delayed_Action *e_delayed_action_new(E_Event_Type event,
double delay, E_Delay_Func delay_func);
E_Delay_Val delay,
E_Delay_Func delay_func);
void e_delayed_action_start(E_Observer * obs, E_Observee * obj,
E_Event_Type event, void *data);

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,6 @@
#define E_DESKTOPS_H
#include "e.h"
#include "view.h"
#include "border.h"
#include "object.h"
@ -11,25 +10,31 @@
typedef struct _E_Desktop E_Desktop;
#endif
#include "view_layout.h"
#ifndef E_DESKTOPS_ADAPTOR_TYPEDEF
#define E_DESKTOPS_ADAPTOR_TYPEDEF
typedef struct _E_Desktop_Adaptor E_Desktop_Adaptor;
#endif
struct _E_Desktop
{
E_Observee obs;
char *name;
char *dir;
struct
/* struct
{
Window main;
Window container;
}
win;
win; */
int x, y;
struct
{
int w, h;
}
real , virt;
Evas_List windows;
Evas_List * windows;
struct
{
int desk;
@ -40,8 +45,19 @@ struct _E_Desktop
area;
}
desk;
E_View *view;
int changed;
E_Desktop_Adaptor *adaptor;
Evas *evas;
E_View_Layout *layout;
E_View_Look *look;
E_Background bg;
E_Iconbar *iconbar;
/* int changed; */
};
struct _E_Desktop_Adaptor
{
E_Observer obsvr;
E_Desktop *desktop;
};
/**
@ -57,17 +73,9 @@ void e_desktops_init(void);
void e_desktops_scroll(E_Desktop * desk, int dx, int dy);
void e_desktops_free(E_Desktop * desk);
/**
* e_desktops_init_file_display - Loads desktop graphics information
* @desk: The desktop for which the graphics are loaded
*
* This function loads the desktop's graphics from the user's desktop
* file definition, which lives in ~/.e/desktop/default/.e_background.bg.db.
*/
void e_desktops_init_file_display(E_Desktop * desk);
E_Desktop *e_desktops_new(void);
E_Desktop *e_desktops_new(int i);
void e_desktops_add_border(E_Desktop * d, E_Border * b);
void e_desktops_add_sticky(E_Border *b);
void e_desktops_del_border(E_Desktop * d, E_Border * b);
void e_desktops_delete(E_Desktop * d);
void e_desktops_show(E_Desktop * d);
@ -91,6 +99,11 @@ E_Desktop *e_desktops_get(int d);
int e_desktops_get_current(void);
void e_desktops_goto_desk(int d);
void e_desktops_goto(int d, int ax, int ay);
Evas_List e_desktops_get_desktops_list();
Evas_List *e_desktops_get_desktops_list();
void e_desktop_bg_reload(E_Desktop * d);
void e_desktop_ib_reload(E_Desktop * d);
void e_desktop_update(E_Desktop *d);
E_Border *e_desktop_raise_next_border(void);
Window e_desktop_window();
#endif

View File

@ -22,6 +22,7 @@
#endif
#include <Imlib2.h>
#include <Evas.h>
#include <Evas_Engine_Software_X11.h>
#include <Ebits.h>
#include <Ecore.h>
#include <Edb.h>
@ -44,7 +45,7 @@ backtrace_symbols_fd(__BT_array, __BT_n, fileno(stdout)); \
/* macros for allowing sections of code to be runtime profiled */
#define E_PROF 1
#ifdef E_PROF
extern Evas_List __e_profiles;
extern Evas_List * __e_profiles;
typedef struct _e_prof
{
@ -57,7 +58,7 @@ E_Prof;
#define E_PROF_START(_prof_func) \
{ \
E_Prof __p, *__pp; \
Evas_List __pl; \
Evas_List * __pl; \
__p.func = _prof_func; \
__p.total = 0.0; \
__p.t1 = ecore_get_time(); \
@ -86,7 +87,7 @@ __e_profiles = evas_list_append(__e_profiles, __pp); \
}
#define E_PROF_DUMP \
{ \
Evas_List __pl; \
Evas_List * __pl; \
for (__pl = __e_profiles; __pl; __pl = __pl->next) \
{ \
E_Prof *__p; \

View File

@ -1,4 +1,5 @@
#include "file.h"
#include "desktops.h"
#include "e_dir.h"
#include "e_view_machine.h"
#include "view.h"
@ -65,39 +66,47 @@ e_dir_new(void)
}
static void
e_dir_handle_fs_restart(void *data)
{
e_dir_handle_fs_restart(void *data) {
E_Dir *d;
D_ENTER;
d = data;
D("e_dir_handle_fs_restart\n");
if (e_fs_get_connection())
{
EfsdOptions *ops;
/* FIXME restart with metadata pending for views */
if((d = data)) {
if(d->dir&&*(d->dir)) {
if (e_fs_get_connection()) {
EfsdOptions *ops;
ops = efsd_ops(3,
efsd_op_get_stat(),
efsd_op_get_filetype(), efsd_op_list_all());
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
ops, TRUE);
/* FIXME restart with metadata pending for views */
}
D("restarted monitor id (connection = %p), %i for %s\n",
e_fs_get_connection(), d->monitor_id, d->dir);
ops = efsd_ops(3,
efsd_op_get_stat(),
efsd_op_get_filetype(), efsd_op_list_all());
if((d->monitor_id=efsd_start_monitor(e_fs_get_connection(), d->dir,
ops, TRUE))<0) {
D("could not restart monitor (connx %p) for \"%s\" => %i\n",
e_fs_get_connection(), d->dir, d->monitor_id); }
else {
D("restarted monitor (connx %p) for \"%s\" => ID %i...\n",
e_fs_get_connection(), d->dir, d->monitor_id); }}
else {
D("could not restart, connection refused\n"); }}
else {
D("could not restart, no dir given!?\n"); }}
else {
D("could not restart, no data\n"); }
D_RETURN;
}
D_RETURN; }
void
e_dir_set_dir(E_Dir * d, char *dir)
{
D_ENTER;
if (!d)
D_RETURN;
if (!d) {
D("e_dir_set_dir -- no E_Dir!\n");
D_RETURN; }
/* stop monitoring old dir */
if ((d->dir) && (d->monitor_id))
@ -106,8 +115,29 @@ e_dir_set_dir(E_Dir * d, char *dir)
d->monitor_id = 0;
}
IF_FREE(d->dir);
if(!dir||!*dir) {
D("e_dir_set_dir -- no dir!\n");
D_RETURN; }
d->dir = e_file_realpath(dir);
if(!d->dir||!*(d->dir)) {
/* realpath failed. this would mean that we tried to set a monitor
on a non-existent (or inacessible) file. this may mean that the
programmer really meant "...and if it doesn't exist YET, tell me
if and when it is created", so rather than failing right here and
now, we'll forget about the realpath, stick in the path they
requested in the first place, and hope the backend actually supports
watching something it cannot determine an inode for... we'll still
throw a warning though, just for good measure. Azundris 2003/01/11 */
D("e_dir_set_dir -- e_file_realpath(\"%s\") failed...\n",dir);
if(d->dir)
free(d->dir);
if(!(d->dir=strdup(dir))) {
D("e_dir_set_dir: OOM\n");
D_RETURN; }}
/* start monitoring new dir */
d->restarter = e_fs_add_restart_handler(e_dir_handle_fs_restart, d);
if (e_fs_get_connection())
@ -119,7 +149,7 @@ e_dir_set_dir(E_Dir * d, char *dir)
efsd_op_get_filetype(), efsd_op_list_all());
d->monitor_id = efsd_start_monitor(e_fs_get_connection(), d->dir,
ops, TRUE);
D("monitor id for %s = %i\n", d->dir, d->monitor_id);
D("monitor id for \"%s\" = %i\n", d->dir, d->monitor_id);
}
D_RETURN;
}
@ -205,14 +235,14 @@ e_dir_handle_efsd_event_reply_getfiletype(EfsdEvent * ev)
p = strchr(m, '/');
if (p)
{
strcpy(base, m);
strcpy(mime, p + 1);
STRNCPY(base, m, PATH_MAX);
STRNCPY(mime, p + 1, PATH_MAX);
p = strchr(base, '/');
*p = 0;
}
else
{
strcpy(base, m);
STRNCPY(base, m, PATH_MAX);
strcpy(mime, "unknown");
}
e_file_set_mime(f, base, mime);
@ -282,7 +312,7 @@ e_dir_handle_efsd_event_reply_readlink(EfsdEvent * ev)
static void
e_dir_handle_efsd_event_reply_getmeta(EfsdEvent * ev)
{
Evas_List l;
Evas_List * l;
EfsdCmdId cmd;
D_ENTER;
@ -428,7 +458,7 @@ e_dir_file_added(int id, char *file)
E_File *f;
D_ENTER;
/* if we get a path - ignore it - its not a file in the dir */
if (!file || file[0] == '/')
D_RETURN;
@ -479,7 +509,7 @@ e_dir_file_changed(int id, char *file)
f = e_file_get_by_name(d->files, file);
if (file[0] != '.')
{
e_observee_notify_observers(E_OBSERVEE(d), E_EVENT_FILE_DELETE, f);
e_observee_notify_observers(E_OBSERVEE(d), E_EVENT_FILE_CHANGE, f);
}
D_RETURN;
}
@ -501,7 +531,7 @@ E_Dir *
e_dir_find_by_monitor_id(int id)
{
E_Dir *d;
Evas_List l;
Evas_List * l;
D_ENTER;

View File

@ -28,7 +28,7 @@ struct _E_Dir
/* The realpath of the view's directory */
char *dir;
Evas_List files;
Evas_List * files;
/*
* Evas_Object obj_bg;

View File

@ -1,76 +0,0 @@
/*#include "debug.h"*/
#include "e_ferite.h"
#include "e_ferite_gen_header.h"
#include "debug.h"
#if 0
#ifdef D /* until ferite doesn't pullte the D(ebug) macro */
# undef D
# define D(x,...)
# define D_ENTER
# define D_RETURN
# define D_RETURN_(x)
#endif
#endif
void
e_ferite_init(void)
{
D_ENTER;
D("Initialising ferite....\n");
ferite_init(0, NULL);
D_RETURN;
}
void
e_ferite_deinit(void)
{
D_ENTER;
D("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);
D_RETURN_(1);
}
int
e_ferite_script_warning(FeriteScript * script, char *warnmsg)
{
D_ENTER;
fprintf(stderr, "e17: ferite warning: %s\n", warnmsg);
D_RETURN_(1);
}
void
e_ferite_run(char *txt)
{
FeriteScript *script = NULL;
D_ENTER;
D("Ferite: Compiling script `%s'\n", txt);
script = __ferite_compile_string(txt);
e_ferite_register(script, script->mainns);
script->error_cb = e_ferite_script_error;
script->warning_cb = e_ferite_script_warning;
D("Ferite: executing script.\n");
ferite_script_execute(script);
D("Ferite: Cleaning up.\n");
ferite_script_delete(script);
D_RETURN;
}

View File

@ -1,170 +0,0 @@
header %{
#include "Ecore.h"
#include "Ebits.h"
#include "ferite.h"
#include "desktops.h"
#include "border.h"
#include "debug.h"
#include "observer.h"
#include "file.h"
#define BorderObj ((E_Border *)(self->odata))
%}
class Border {
function Border()
%{
%}
function get_name()
%{
if(BorderObj)
FE_RETURN_STR(BorderObj->client.name, 0);
%}
function get_title()
%{
if(BorderObj)
FE_RETURN_STR(BorderObj->client.title, 0);
%}
function get_class()
%{
if(BorderObj)
FE_RETURN_STR(BorderObj->client.class, 0);
%}
function get_x()
%{
if(BorderObj)
FE_RETURN_LONG(BorderObj->current.x);
%}
function get_y()
%{
if(BorderObj)
FE_RETURN_LONG(BorderObj->current.y);
%}
function get_width()
%{
if(BorderObj)
FE_RETURN_LONG(BorderObj->current.w);
%}
function get_height()
%{
if(BorderObj)
FE_RETURN_LONG(BorderObj->current.h);
%}
function move( number x, number y );
function resize( number width, number height );
function show();
function hide();
function is_visible()
%{
if(BorderObj)
{
if (BorderObj->current.visible) { FE_RETURN_TRUE; }
else { FE_RETURN_FALSE; }
}
%}
function shade();
function unshade();
function is_shaded();
function iconify()
%{
e_border_iconify(BorderObj);
%}
function uniconify()
%{
e_border_uniconify(BorderObj);
%}
function is_iconic()
%{
if (BorderObj->client.iconified) { FE_RETURN_TRUE }
else { FE_RETURN_FALSE }
%}
function is_mapped();
function is_transient();
function is_shaped();
function raise()
%{
%}
function lower()
%{
%}
function delete();
function kill();
}
namespace e {
function flip_to_desktop( number desk )
%{
e_desktops_goto_desk( (long)desk );
%}
function get_current_desktop()
%{
int retval = e_desktops_get_current();
FE_RETURN_LONG( retval );
%}
function get_desktop_count()
%{
int retval = e_desktops_get_num();
printf("desktop_count: %i\n", retval);
FE_RETURN_LONG( retval );
%}
function get_width();
function get_height();
// shutdown enlightenment
function shutdown()
%{
ecore_event_loop_quit();
%}
function restart()
%{
e_exec_restart();
%}
function dataCopy(object from, object to)
%{
to->odata = from->odata;
%}
function dataCmp(object from, object to)
%{
if (to->odata == from->odata) {FE_RETURN_TRUE;}
else {FE_RETURN_FALSE;}
%}
function getTime()
%{
FE_RETURN_DOUBLE(ecore_get_time());
%}
}

View File

@ -1,30 +0,0 @@
#ifndef E_FERITE_H
#define E_FERITE_H
#include <config.h>
#ifdef USE_FERITE
#include <ferite.h>
#else
#define FeriteScript void
#define FeriteNamespace void
#define FeriteVariable void
#define FeriteFunction void
#define FeriteObject void
#define FeriteNamespaceBucket void
#endif
void e_ferite_init(void);
void e_ferite_deinit(void);
void e_ferite_run(char *script);
void e_ferite_register(FeriteScript * script,
FeriteNamespace * ns);
int e_ferite_script_error(FeriteScript * script, char *errmsg,
int val);
int e_ferite_script_warning(FeriteScript * script,
char *warnmsg);
#endif /* E_FERITE_H */

View File

@ -11,7 +11,8 @@ e_file_cleanup(E_File * f)
D_ENTER;
IF_FREE(f->info.icon);
IF_FREE(f->info.link) IF_FREE(f->info.custom_icon);
IF_FREE(f->info.link);
IF_FREE(f->info.custom_icon);
IF_FREE(f->info.mime.base);
IF_FREE(f->info.mime.type);
IF_FREE(f->file);
@ -45,9 +46,9 @@ e_file_new(char *file)
}
E_File *
e_file_get_by_name(Evas_List l, char *file)
e_file_get_by_name(Evas_List * l, char *file)
{
Evas_List ll;
Evas_List * ll;
E_File *f;
D_ENTER;
@ -106,7 +107,7 @@ e_file_set_mime(E_File * f, char *base, char *mime)
*/
/* find an icon */
strcpy(type, f->info.mime.type);
STRNCPY(type, f->info.mime.type, PATH_MAX);
p = type;
do
{

View File

@ -27,7 +27,7 @@ struct _E_File
};
E_File *e_file_new(char *file);
E_File *e_file_get_by_name(Evas_List l, char *file);
E_File *e_file_get_by_name(Evas_List * l, char *file);
void e_file_set_mime(E_File * f, char *base, char *mime);
void e_file_set_link(E_File * f, char *link);

View File

@ -1,5 +1,6 @@
#include "e_view_look.h"
#include "util.h"
#include "desktops.h"
#include "e_view_look.h"
#include "view.h"
#include "observer.h"
#include "e_file.h"
@ -99,7 +100,7 @@ e_view_look_set_dir(E_View_Look *l, char *dir)
if (d)
{
l->dir = d;
e_observer_register_observee(E_OBSERVER(l), E_OBSERVEE(d));
e_observer_register_observee(E_OBSERVER(l), E_OBSERVEE(l->dir));
}
else
{
@ -117,25 +118,25 @@ e_view_look_file_change(E_View_Look *l, E_File *f)
char buf[PATH_MAX];
D_ENTER;
snprintf(buf, PATH_MAX, "%s/%s", l->dir->dir, f->file);
if (!strcmp(f->file, "background.db"))
if (!strncmp(f->file, "background.db", PATH_MAX))
{
IF_FREE(l->obj->bg);
l->obj->bg = strdup(buf);
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_BG_CHANGED, f);
}
else if (!strcmp(f->file, "iconbar.db"))
else if (!strncmp(f->file, "iconbar.db", PATH_MAX))
{
IF_FREE(l->obj->icb);
l->obj->icb = strdup(buf);
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_ICB_CHANGED, f);
}
else if (!strcmp(f->file, "iconbar.bits.db"))
else if (!strncmp(f->file, "iconbar.bits.db", PATH_MAX))
{
IF_FREE(l->obj->icb_bits);
l->obj->icb_bits = strdup(buf);
e_observee_notify_observers(E_OBSERVEE(l->obj), E_EVENT_ICB_CHANGED, f);
}
else if (!strcmp(f->file, "layout.db"))
else if (!strncmp(f->file, "layout.db", PATH_MAX))
{
IF_FREE(l->obj->layout);
l->obj->layout = strdup(buf);
@ -148,7 +149,7 @@ static void
e_view_look_file_delete(E_View_Look *l, E_File *f)
{
D_ENTER;
if (!strcmp(f->file, "background.db"))
{
IF_FREE(l->obj->bg);

View File

@ -75,7 +75,7 @@ e_view_machine_unregister_look(E_View_Look * l)
void
e_view_machine_close_all_views(void)
{
Evas_List l;
Evas_List * l;
D_ENTER;
/* Copy the list of views and unregister them */
@ -92,7 +92,7 @@ E_Dir *
e_view_machine_dir_lookup(char *path)
{
E_Dir *d;
Evas_List l;
Evas_List * l;
char *realpath = NULL;
D_ENTER;
@ -122,7 +122,7 @@ E_View_Look *
e_view_machine_look_lookup(char *path)
{
E_View_Look *vl;
Evas_List l;
Evas_List * l;
char *realpath = NULL;
D_ENTER;
@ -152,7 +152,7 @@ e_view_machine_look_lookup(char *path)
E_View *
e_view_machine_get_view_by_main_window(Window win)
{
Evas_List l;
Evas_List * l;
D_ENTER;
for (l = VM->views; l; l = l->next)
@ -168,7 +168,7 @@ e_view_machine_get_view_by_main_window(Window win)
E_View *
e_view_machine_get_view_by_base_window(Window win)
{
Evas_List l;
Evas_List * l;
D_ENTER;
for (l = VM->views; l; l = l->next)
@ -180,5 +180,3 @@ e_view_machine_get_view_by_base_window(Window win)
}
D_RETURN_(NULL);
}

View File

@ -4,9 +4,9 @@
#include "view.h"
struct _e_view_machine
{
Evas_List views;
Evas_List dirs;
Evas_List looks;
Evas_List * views;
Evas_List * dirs;
Evas_List * looks;
};
typedef struct _e_view_machine E_View_Machine;

View File

@ -7,9 +7,9 @@ typedef struct _Embed Embed_Private;
struct _Embed
{
Ebits_Object o;
Evas evas;
Evas_Object image_obj;
Evas_Object clip_obj;
Evas * evas;
Evas_Object * image_obj;
Evas_Object * clip_obj;
int clip_x, clip_y;
E_Text *text_obj;
};
@ -23,7 +23,7 @@ e_embed_text_func_show(void *_data)
em = _data;
if (em->clip_obj)
evas_show(em->evas, em->clip_obj);
evas_object_show(em->clip_obj);
e_text_show(em->text_obj);
D_RETURN;
@ -38,7 +38,7 @@ e_embed_text_func_hide(void *_data)
em = _data;
if (em->clip_obj)
evas_hide(em->evas, em->clip_obj);
evas_object_hide(em->clip_obj);
e_text_hide(em->text_obj);
D_RETURN;
@ -53,7 +53,7 @@ e_embed_text_func_move(void *_data, double x, double y)
em = _data;
if (em->clip_obj)
evas_move(em->evas, em->clip_obj, x, y);
evas_object_move(em->clip_obj, x, y);
e_text_move(em->text_obj, x, y);
D_RETURN;
@ -68,7 +68,7 @@ e_embed_text_func_resize(void *_data, double w, double h)
em = _data;
if (em->clip_obj)
evas_resize(em->evas, em->clip_obj, w, h);
evas_object_resize(em->clip_obj, w, h);
e_text_resize(em->text_obj, w, h);
D_RETURN;
@ -83,7 +83,7 @@ e_embed_text_func_raise(void *_data)
em = _data;
if (em->clip_obj)
evas_raise(em->evas, em->clip_obj);
evas_object_raise(em->clip_obj);
e_text_raise(em->text_obj);
D_RETURN;
@ -98,7 +98,7 @@ e_embed_text_func_lower(void *_data)
em = _data;
if (em->clip_obj)
evas_lower(em->evas, em->clip_obj);
evas_object_lower(em->clip_obj);
e_text_lower(em->text_obj);
D_RETURN;
@ -113,14 +113,14 @@ e_embed_text_func_set_layer(void *_data, int l)
em = _data;
if (em->clip_obj)
evas_set_layer(em->evas, em->clip_obj, l);
evas_object_layer_set(em->clip_obj, l);
e_text_set_layer(em->text_obj, l);
D_RETURN;
}
static void
e_embed_text_func_set_clip(void *_data, Evas_Object clip)
e_embed_text_func_set_clip(void *_data, Evas_Object * clip)
{
Embed_Private *em;
@ -198,7 +198,7 @@ e_embed_text_func_get_max_size(void *_data, double *w, double *h)
/***/
Embed
e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text * text_obj,
e_embed_text(Ebits_Object o, char *bit_name, Evas * evas, E_Text * text_obj,
int clip_x, int clip_y)
{
Embed_Private *em;
@ -214,10 +214,10 @@ e_embed_text(Ebits_Object o, char *bit_name, Evas evas, E_Text * text_obj,
em->clip_y = clip_y;
if ((clip_x) || (clip_y))
{
em->clip_obj = evas_add_rectangle(em->evas);
evas_set_color(em->evas, em->clip_obj, 255, 255, 255, 255);
em->clip_obj = evas_object_rectangle_add(em->evas);
evas_object_color_set(em->clip_obj, 255, 255, 255, 255);
e_text_set_clip(em->text_obj, em->clip_obj);
evas_show(em->evas, em->clip_obj);
evas_object_show(em->clip_obj);
}
ebits_set_named_bit_replace(o, bit_name,
e_embed_text_func_show,
@ -244,7 +244,7 @@ e_embed_image_func_show(void *_data)
D_ENTER;
em = _data;
evas_show(em->evas, em->image_obj);
evas_object_show(em->image_obj);
D_RETURN;
}
@ -257,7 +257,7 @@ e_embed_image_func_hide(void *_data)
D_ENTER;
em = _data;
evas_hide(em->evas, em->image_obj);
evas_object_hide(em->image_obj);
D_RETURN;
}
@ -270,7 +270,7 @@ e_embed_image_func_move(void *_data, double x, double y)
D_ENTER;
em = _data;
evas_move(em->evas, em->image_obj, x, y);
evas_object_move(em->image_obj, x, y);
D_RETURN;
}
@ -283,8 +283,8 @@ e_embed_image_func_resize(void *_data, double w, double h)
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);
evas_object_resize(em->image_obj, w, h);
evas_object_image_fill_set(em->image_obj, 0, 0, w, h);
D_RETURN;
}
@ -297,7 +297,7 @@ e_embed_image_func_raise(void *_data)
D_ENTER;
em = _data;
evas_raise(em->evas, em->image_obj);
evas_object_raise(em->image_obj);
D_RETURN;
}
@ -310,7 +310,7 @@ e_embed_image_func_lower(void *_data)
D_ENTER;
em = _data;
evas_lower(em->evas, em->image_obj);
evas_object_lower(em->image_obj);
D_RETURN;
}
@ -323,13 +323,13 @@ e_embed_image_func_set_layer(void *_data, int l)
D_ENTER;
em = _data;
evas_set_layer(em->evas, em->image_obj, l);
evas_object_layer_set(em->image_obj, l);
D_RETURN;
}
static void
e_embed_image_func_set_clip(void *_data, Evas_Object clip)
e_embed_image_func_set_clip(void *_data, Evas_Object * clip)
{
Embed_Private *em;
@ -337,9 +337,9 @@ e_embed_image_func_set_clip(void *_data, Evas_Object clip)
em = _data;
if (clip)
evas_set_clip(em->evas, em->image_obj, clip);
evas_object_clip_set(em->image_obj, clip);
else
evas_unset_clip(em->evas, em->image_obj);
evas_object_clip_unset(em->image_obj);
D_RETURN;
}
@ -354,7 +354,7 @@ e_embed_image_func_set_color_class(void *_data, char *cc, int r, int g, int b,
em = _data;
if ((cc) && (!strcmp(cc, "icon")))
evas_set_color(em->evas, em->image_obj, r, g, b, a);
evas_object_color_set(em->image_obj, r, g, b, a);
D_RETURN;
}
@ -370,7 +370,7 @@ e_embed_image_func_get_min_size(void *_data, double *w, double *h)
em = _data;
iw = 0;
ih = 0;
evas_get_image_size(em->evas, em->image_obj, &iw, &ih);
evas_object_image_size_get(em->image_obj, &iw, &ih);
if (w)
*w = iw;
if (h)
@ -388,7 +388,7 @@ e_embed_image_func_get_max_size(void *_data, double *w, double *h)
D_ENTER;
em = _data;
evas_get_image_size(em->evas, em->image_obj, &iw, &ih);
evas_object_image_size_get(em->image_obj, &iw, &ih);
if (w)
*w = iw;
if (h)
@ -400,8 +400,8 @@ e_embed_image_func_get_max_size(void *_data, double *w, double *h)
/***/
Embed
e_embed_image_object(Ebits_Object o, char *bit_name, Evas evas,
Evas_Object image_obj)
e_embed_image_object(Ebits_Object o, char *bit_name, Evas * evas,
Evas_Object * image_obj)
{
Embed_Private *em;
@ -438,7 +438,7 @@ e_embed_free(Embed emb)
em = emb;
if (em->clip_obj)
evas_del_object(em->evas, em->clip_obj);
evas_object_del(em->clip_obj);
FREE(em);
D_RETURN;

View File

@ -6,10 +6,10 @@
typedef void *Embed;
Embed e_embed_text(Ebits_Object o, char *bit_name, Evas evas,
Embed e_embed_text(Ebits_Object o, char *bit_name, Evas * evas,
E_Text * text_obj, int clip_x, int clip_y);
Embed e_embed_image_object(Ebits_Object o, char *bit_name,
Evas evas, Evas_Object image_obj);
Evas * evas, Evas_Object * image_obj);
void e_embed_free(Embed em);
#endif

View File

@ -3,16 +3,16 @@
#include "config.h"
#include "util.h"
static Evas_List entries;
static Evas_List * entries;
static void e_clear_selection(Ecore_Event * ev);
static void e_paste_request(Ecore_Event * ev);
static void e_entry_down_cb(void *_data, Evas _e, Evas_Object _o,
static void e_entry_down_cb(void *_data, Evas * _e, Evas_Object * _o,
int _b, int _x, int _y);
static void e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
static void e_entry_up_cb(void *_data, Evas * _e, Evas_Object * _o, int _b,
int _x, int _y);
static void e_entry_move_cb(void *_data, Evas _e, Evas_Object _o,
static void e_entry_move_cb(void *_data, Evas * _e, Evas_Object * _o,
int _b, int _x, int _y);
static void e_entry_realize(E_Entry * entry);
static void e_entry_unrealize(E_Entry * entry);
@ -22,7 +22,7 @@ static void
e_clear_selection(Ecore_Event * ev)
{
Ecore_Event_Clear_Selection *e;
Evas_List l;
Evas_List * l;
D_ENTER;
@ -49,7 +49,7 @@ static void
e_paste_request(Ecore_Event * ev)
{
Ecore_Event_Paste_Request *e;
Evas_List l;
Evas_List * l;
D_ENTER;
@ -73,7 +73,7 @@ e_paste_request(Ecore_Event * ev)
}
static void
e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_entry_down_cb(void *_data, Evas *_e, Evas_Object * _o, int _b, int _x, int _y)
{
E_Entry *entry;
int pos;
@ -90,13 +90,19 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
else if (!entry->mouse_down)
{
entry->focused = 1;
/* checkme
pos = evas_text_at_position(_e, entry->text, _x, _y,
NULL, NULL, NULL, NULL);
*/
pos = evas_object_text_char_coords_get(entry->text, _x, _y,
NULL, NULL, NULL, NULL);
if (pos < 0)
{
int tw;
/* checkme todo
tw = evas_get_text_width(_e, entry->text);
*/
if (_x > entry->x + tw)
{
entry->cursor_pos = strlen(entry->buffer);
@ -116,11 +122,12 @@ e_entry_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
D_RETURN;
UN(_e);
UN(_o);
}
static void
e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_entry_up_cb(void *_data, Evas * _e, Evas_Object * _o, int _b, int _x, int _y)
{
E_Entry *entry;
@ -141,7 +148,7 @@ e_entry_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
static void
e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_entry_move_cb(void *_data, Evas * _e, Evas_Object * _o, int _b, int _x, int _y)
{
E_Entry *entry;
@ -154,14 +161,20 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
double ty;
ppos = entry->cursor_pos;
evas_get_geometry(entry->evas, entry->text, NULL, &ty, NULL, NULL);
evas_object_geometry_get(entry->text, NULL, &ty, NULL, NULL);
/* checkme
pos = evas_text_at_position(_e, entry->text, _x, ty,
NULL, NULL, NULL, NULL);
*/
pos = evas_object_text_char_coords_get(entry->text, _x, ty,
NULL, NULL, NULL, NULL);
if (pos < 0)
{
int tw;
/* checkme todo
tw = evas_get_text_width(_e, entry->text);
*/
if (_x > entry->x + tw)
{
entry->cursor_pos = strlen(entry->buffer);
@ -222,6 +235,7 @@ e_entry_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
UN(_y);
@ -258,24 +272,27 @@ e_entry_realize(E_Entry * entry)
/* ebits_set_color_class(entry->obj_base, "Base FG", 100, 200, 255, 255);*/
}
entry->clip_box = evas_add_rectangle(entry->evas);
entry->text = evas_add_text(entry->evas, "borzoib", 8, "");
entry->clip_box = evas_object_rectangle_add(entry->evas);
entry->text = evas_object_text_add(entry->evas);
evas_object_text_font_set(entry->text, "borzoib", 8);
if (entry->obj_cursor)
ebits_set_clip(entry->obj_cursor, entry->clip_box);
if (entry->obj_selection)
ebits_set_clip(entry->obj_selection, entry->clip_box);
entry->event_box = evas_add_rectangle(entry->evas);
evas_set_color(entry->evas, entry->clip_box, 255, 255, 255, 255);
evas_set_color(entry->evas, entry->event_box, 0, 0, 0, 0);
evas_set_color(entry->evas, entry->text, 0, 0, 0, 255);
evas_set_clip(entry->evas, entry->text, entry->clip_box);
evas_set_clip(entry->evas, entry->event_box, entry->clip_box);
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_DOWN,
entry->event_box = evas_object_rectangle_add(entry->evas);
evas_object_color_set(entry->clip_box, 255, 255, 255, 255);
evas_object_color_set(entry->event_box, 0, 0, 0, 0);
evas_object_color_set(entry->text, 0, 0, 0, 255);
evas_object_clip_set(entry->text, entry->clip_box);
evas_object_clip_set(entry->event_box, entry->clip_box);
/* checkme todo
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_DOWN,
e_entry_down_cb, entry);
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_UP,
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_UP,
e_entry_up_cb, entry);
evas_callback_add(entry->evas, entry->event_box, CALLBACK_MOUSE_MOVE,
evas_object_event_callback_add(entry->event_box, EVAS_CALLBACK_MOUSE_MOVE,
e_entry_move_cb, entry);
*/
D_RETURN;
}
@ -286,11 +303,11 @@ e_entry_unrealize(E_Entry * entry)
D_ENTER;
if (entry->event_box)
evas_del_object(entry->evas, entry->event_box);
evas_object_del(entry->event_box);
if (entry->text)
evas_del_object(entry->evas, entry->text);
evas_object_del(entry->text);
if (entry->clip_box)
evas_del_object(entry->evas, entry->clip_box);
evas_object_del(entry->clip_box);
if (entry->obj_base)
ebits_free(entry->obj_base);
if (entry->obj_cursor)
@ -330,12 +347,12 @@ e_entry_configure(E_Entry * entry)
ebits_move(entry->obj_base, entry->x, entry->y);
ebits_resize(entry->obj_base, entry->w, entry->h);
}
evas_move(entry->evas, entry->clip_box, entry->x + p1l, entry->y + p1t);
evas_resize(entry->evas, entry->clip_box, entry->w - p1l - p1r,
evas_object_move(entry->clip_box, entry->x + p1l, entry->y + p1t);
evas_object_resize(entry->clip_box, entry->w - p1l - p1r,
entry->h - p1t - p1b);
evas_move(entry->evas, entry->event_box, entry->x + p1l + p2l,
evas_object_move(entry->event_box, entry->x + p1l + p2l,
entry->y + p1t + p2t);
evas_resize(entry->evas, entry->event_box, entry->w - p1l - p1r - p2l - p2r,
evas_object_resize(entry->event_box, entry->w - p1l - p1r - p2l - p2r,
entry->h - p1t - p1b - p2t - p2b);
if ((entry->buffer) && (entry->buffer[0] != 0) && (entry->focused))
{
@ -343,18 +360,30 @@ e_entry_configure(E_Entry * entry)
if (entry->cursor_pos < (int)strlen(entry->buffer))
{
/* checkme
evas_text_at(entry->evas, entry->text, entry->cursor_pos, &tx, &ty,
&tw, &th);
*/
evas_object_text_char_pos_get(entry->text, entry->cursor_pos, &tx, &ty,
&tw, &th);
}
else
{
entry->cursor_pos = strlen(entry->buffer);
/* checkme
evas_text_at(entry->evas, entry->text, entry->cursor_pos - 1, &tx,
&ty, &tw, &th);
*/
evas_object_text_char_pos_get(entry->text, entry->cursor_pos - 1, &tx,
&ty, &tw, &th);
tx += tw;
tw = entry->end_width;
}
/* check me
th = evas_get_text_height(entry->evas, entry->text);
*/
th = evas_object_text_ascent_get(entry->text)+
evas_object_text_descent_get(entry->text);
if (tx + tw + entry->scroll_pos > entry->w - p1l - p1r)
entry->scroll_pos = entry->w - tx - tw - p1l - p1r - p1l - p2l;
else if (tx + entry->scroll_pos < p1l)
@ -375,7 +404,11 @@ e_entry_configure(E_Entry * entry)
entry->scroll_pos = 0;
tw = 4;
tx = 0;
/* checkme
th = evas_get_text_height(entry->evas, entry->text);
*/
th = evas_object_text_ascent_get(entry->text)+
evas_object_text_descent_get(entry->text);
if (entry->obj_cursor)
{
ebits_move(entry->obj_cursor,
@ -391,27 +424,45 @@ e_entry_configure(E_Entry * entry)
if (entry->obj_cursor)
ebits_hide(entry->obj_cursor);
}
evas_move(entry->evas, entry->text, entry->x + entry->scroll_pos + p1l + p2l,
evas_object_move(entry->text, entry->x + entry->scroll_pos + p1l + p2l,
entry->y + p1t + p2t);
if (entry->select.start >= 0)
{
double x1, y1, x2, tw, th;
/* checkme
evas_text_at(entry->evas, entry->text, entry->select.start, &x1, &y1,
NULL, NULL);
*/
evas_object_text_char_pos_get(entry->text, entry->select.start, &x1, &y1,
NULL, NULL);
if (entry->select.start + entry->select.length <=
(int)strlen(entry->buffer))
{
/* checkme
evas_text_at(entry->evas, entry->text,
entry->select.start + entry->select.length - 1, &x2,
NULL, &tw, &th);
*/
evas_object_text_char_pos_get(entry->text,
entry->select.start + entry->select.length - 1, &x2,
NULL, &tw, &th);
}
else
{
/* checkme
evas_text_at(entry->evas, entry->text,
entry->select.start + entry->select.length - 2, &x2,
NULL, &tw, &th);
*/
evas_object_text_char_pos_get(entry->text,
entry->select.start + entry->select.length - 2, &x2,
NULL, &tw, &th);
tw += entry->end_width;
}
/* checkme todo
th = evas_get_text_height(entry->evas, entry->text);
*/
if (entry->obj_selection)
{
ebits_move(entry->obj_selection,
@ -598,7 +649,7 @@ e_entry_handle_keypress(E_Entry * entry, Ecore_Event_Key_Down * e)
}
void
e_entry_set_evas(E_Entry * entry, Evas evas)
e_entry_set_evas(E_Entry * entry, Evas * evas)
{
D_ENTER;
@ -632,9 +683,9 @@ e_entry_show(E_Entry * entry)
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);
evas_object_show(entry->event_box);
evas_object_show(entry->clip_box);
evas_object_show(entry->text);
D_RETURN;
}
@ -655,9 +706,9 @@ e_entry_hide(E_Entry * entry)
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);
evas_object_hide(entry->event_box);
evas_object_hide(entry->clip_box);
evas_object_hide(entry->text);
D_RETURN;
}
@ -669,13 +720,13 @@ e_entry_raise(E_Entry * entry)
if (entry->obj_base)
ebits_raise(entry->obj_base);
evas_raise(entry->evas, entry->clip_box);
evas_raise(entry->evas, entry->text);
evas_object_raise(entry->clip_box);
evas_object_raise(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);
evas_object_raise(entry->event_box);
D_RETURN;
}
@ -685,13 +736,13 @@ e_entry_lower(E_Entry * entry)
{
D_ENTER;
evas_lower(entry->evas, entry->event_box);
evas_object_lower(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);
evas_object_lower(entry->text);
evas_object_lower(entry->clip_box);
if (entry->obj_base)
ebits_lower(entry->obj_base);
@ -705,23 +756,23 @@ e_entry_set_layer(E_Entry * entry, int l)
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);
evas_object_layer_set(entry->clip_box, l);
evas_object_layer_set(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);
evas_object_layer_set(entry->event_box, l);
D_RETURN;
}
void
e_entry_set_clip(E_Entry * entry, Evas_Object clip)
e_entry_set_clip(E_Entry * entry, Evas_Object * clip)
{
D_ENTER;
evas_set_clip(entry->evas, entry->clip_box, clip);
evas_object_clip_set(entry->clip_box, clip);
if (entry->obj_base)
ebits_set_clip(entry->obj_base, clip);
@ -733,7 +784,7 @@ e_entry_unset_clip(E_Entry * entry)
{
D_ENTER;
evas_unset_clip(entry->evas, entry->clip_box);
evas_object_clip_unset(entry->clip_box);
if (entry->obj_base)
ebits_unset_clip(entry->obj_base);
@ -779,14 +830,18 @@ e_entry_query_max_size(E_Entry * entry, int *w, int *h)
if (entry->obj_cursor)
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
/* checkme todo
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;
UN(w);
UN(h);
}
void
@ -805,11 +860,14 @@ e_entry_max_size(E_Entry * entry, int *w, int *h)
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
if (w)
*w = 8000;
/* checkme todo
if (h)
*h =
evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
*/
D_RETURN;
UN(h);
}
void
@ -828,11 +886,14 @@ e_entry_min_size(E_Entry * entry, int *w, int *h)
ebits_get_insets(entry->obj_cursor, &p2l, &p2r, &p2t, &p2b);
if (w)
*w = p1l + p1r + p2l + p2r + entry->min_size;
/* checkme todo
if (h)
*h =
evas_get_text_height(entry->evas, entry->text) + p1t + p1b + p2t + p2b;
*/
D_RETURN;
UN(h);
}
void
@ -889,7 +950,7 @@ e_entry_set_text(E_Entry * entry, const char *text)
IF_FREE(entry->buffer);
e_strdup(entry->buffer, text);
evas_set_text(entry->evas, entry->text, entry->buffer);
evas_object_text_text_set(entry->text, entry->buffer);
if (entry->cursor_pos > (int)strlen(entry->buffer))
entry->cursor_pos = strlen(entry->buffer);
e_entry_configure(entry);
@ -981,17 +1042,19 @@ e_entry_set_focus_out_callback(E_Entry * entry,
void
e_entry_insert_text(E_Entry * entry, char *text)
{
int size;
char *str2;
D_ENTER;
if (!text)
D_RETURN;
str2 = malloc(strlen(e_entry_get_text(entry)) + 1 + strlen(text));
size = strlen(e_entry_get_text(entry)) + 1 + strlen(text);
str2 = malloc(size);
str2[0] = 0;
strncat(str2, entry->buffer, entry->cursor_pos);
strcat(str2, text);
strcat(str2, &(entry->buffer[entry->cursor_pos]));
strncat(str2, text, size);
strncat(str2, &(entry->buffer[entry->cursor_pos]), size);
e_entry_set_text(entry, str2);
FREE(str2);
entry->cursor_pos += strlen(text);

View File

@ -7,7 +7,7 @@ typedef struct _E_Entry E_Entry;
struct _E_Entry
{
Evas evas;
Evas * evas;
char *buffer;
int cursor_pos;
struct
@ -24,9 +24,9 @@ struct _E_Entry
Ebits_Object obj_base;
Ebits_Object obj_cursor;
Ebits_Object obj_selection;
Evas_Object event_box;
Evas_Object clip_box;
Evas_Object text;
Evas_Object * event_box;
Evas_Object * clip_box;
Evas_Object * text;
Window paste_win;
Window selection_win;
int end_width;
@ -52,13 +52,13 @@ void e_entry_free(E_Entry * entry);
E_Entry *e_entry_new(void);
void e_entry_handle_keypress(E_Entry * entry,
Ecore_Event_Key_Down * e);
void e_entry_set_evas(E_Entry * entry, Evas evas);
void e_entry_set_evas(E_Entry * entry, Evas * evas);
void e_entry_show(E_Entry * entry);
void e_entry_hide(E_Entry * entry);
void e_entry_raise(E_Entry * entry);
void e_entry_lower(E_Entry * entry);
void e_entry_set_layer(E_Entry * entry, int l);
void e_entry_set_clip(E_Entry * entry, Evas_Object clip);
void e_entry_set_clip(E_Entry * entry, Evas_Object * clip);
void e_entry_unset_clip(E_Entry * entry);
void e_entry_move(E_Entry * entry, int x, int y);
void e_entry_resize(E_Entry * entry, int w, int h);

View File

@ -1,821 +0,0 @@
#include "debug.h"
#include "epplet.h"
#include "file.h"
#include "observer.h"
#include "desktops.h"
#include "e_ferite.h"
static void e_epplet_cleanup(E_Epplet * epp);
static void e_epplet_mouse_down_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh);
static void e_epplet_mouse_up_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh);
static void e_epplet_mouse_move_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh);
static void e_epplet_observer_cleanup(E_Object * o);
E_Epplet *
e_epplet_new(void *scr)
{
#ifdef USE_FERITE
E_Epplet *epp;
FeriteScript *script;
char buf[PATH_MAX];
D_ENTER;
script = (FeriteScript *) scr;
epp = NEW(E_Epplet, 1);
ZERO(epp, E_Epplet, 1);
e_object_init(E_OBJECT(epp), (E_Cleanup_Func) e_epplet_cleanup);
epp->context = e_epplet_get_context_from_script(script);
if (!(epp->context))
{
D("Error: epplet context not found\n");
D_RETURN_(NULL);
}
epp->view = epp->context->view;
epp->name = strdup(epp->context->name);
epp->current.x = epp->context->geom.x;
epp->current.y = epp->context->geom.y;
epp->current.w = epp->context->geom.w;
epp->current.h = epp->context->geom.h;
epp->context->epp = epp;
snprintf(buf, PATH_MAX, "%s/.e_epplets/%s/", epp->view->dir, epp->name);
epp->dir = strdup(buf);
if (!(epp->view))
{
D("Error: no view found for epplet: %s\n", epp->name);
e_object_unref(E_OBJECT(epp));
D_RETURN_(NULL);
}
else
{
D_RETURN_(epp);
}
#endif
}
static void
e_epplet_cleanup(E_Epplet * epp)
{
Evas_List l;
D_ENTER;
#ifdef USE_FERITE
for (l = epp->ebits; l; l = l->next)
{
Ebits_Object o = l->data;
ebits_free(o);
}
for (l = epp->evas_objects; l; l = l->next)
{
Evas_Object_Wrapper *o = l->data;
evas_del_object(o->evas, o->obj);
free(o);
}
if (epp->layout)
ebits_free(epp->layout);
if (epp->ui)
ebits_free(epp->ui);
#endif
D_RETURN;
}
void
e_epplet_load_from_layout(E_View * v)
{
char buf[PATH_MAX];
Evas_List bit_names, l;
D_ENTER;
#ifdef USE_FERITE
snprintf(buf, PATH_MAX, "%s/.e_epplets.bits.db", v->dir);
v->epplet_layout = ebits_load(buf);
if (!v->epplet_layout)
D_RETURN;
ebits_add_to_evas(v->epplet_layout, v->evas);
ebits_resize(v->epplet_layout, v->size.w, v->size.h);
ebits_move(v->epplet_layout, 0, 0);
bit_names = ebits_get_bit_names(v->epplet_layout);
for (l = bit_names; l; l = l->next)
{
double x, y, w, h;
E_Epplet_Context *context;
context = NEW(E_Epplet_Context, 1);
ZERO(context, E_Epplet_Context, 1);
context->name = l->data;
ebits_get_named_bit_geometry(v->epplet_layout, context->name, &x, &y,
&w, &h);
context->geom.x = x;
context->geom.y = y;
context->geom.w = w;
context->geom.h = h;
context->view = v;
D("epplet has following info:\n");
D("x: %f, y: %f, w: %f, h: %f\n", x, y, w, h);
v->epplet_contexts = evas_list_append(v->epplet_contexts, context);
snprintf(buf, PATH_MAX, "%s/.e_epplets/%s/%s.fe", v->dir, context->name,
context->name);
if (e_file_exists(buf))
e_epplet_script_load(context, buf);
else
D("Error: Can't find epplet `%s'\n", buf);
}
#endif
D_RETURN;
}
E_Epplet_Context *
e_epplet_get_context_from_script(FeriteScript * script)
{
Evas_List l, ll;
D_ENTER;
D("script address: %p\n", script);
#ifdef USE_FERITE
for (l = views; l; l = l->next)
{
E_View *v;
v = l->data;
D("searching view: %s\n", v->dir);
if (v->epplet_contexts == NULL)
D("no scripts in view\n");
for (ll = v->epplet_contexts; ll; ll = ll->next)
{
E_Epplet_Context *context = ll->data;
D("found script: %p\n", context->script);
if (context->script == script)
D_RETURN_(context);
}
}
#endif
D_RETURN_(NULL);
}
void
e_epplet_script_load(E_Epplet_Context * context, char *path)
{
FeriteScript *script = NULL;
D_ENTER;
#ifdef USE_FERITE
D("Ferite: Compiling epplet script `%s'\n", path);
script = ferite_script_compile(path);
if (!script)
{
D("Error compiling script... aborting\n");
D_RETURN;
}
context->script = script;
e_ferite_register(script, script->mainns);
script->error_cb = e_ferite_script_error;
script->warning_cb = e_ferite_script_warning;
D("Ferite: executing epplet.\n");
ferite_script_execute(script);
D("Ferite: epplet executed.\n");
/*ferite_script_delete(script); */
#endif
D_RETURN;
}
void
e_epplet_set_common_callbacks(E_Epplet * epp)
{
/*
D ("setting callbacks\n");
#ifdef USE_FERITE
if (!epp->bits)
{
D ("Error: no bits to set callbacks on\n");
D_RETURN;
}
ebits_set_classed_bit_callback (epp->bits, "Title_Bar",
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Title_Bar", CALLBACK_MOUSE_UP,
e_epplet_mouse_up_cb, epp);
ebits_set_classed_bit_callback (epp->bits, "Title_Bar", CALLBACK_MOUSE_MOVE,
e_epplet_mouse_move_cb, epp);
ebits_set_classed_bit_callback (epp->bits, "Resize",
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize", CALLBACK_MOUSE_UP,
e_epplet_mouse_up_cb, epp);
ebits_set_classed_bit_callback (epp->bits, "Resize", CALLBACK_MOUSE_MOVE,
e_epplet_mouse_move_cb, epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
CALLBACK_MOUSE_UP, e_epplet_mouse_up_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Vertical",
CALLBACK_MOUSE_MOVE, e_epplet_mouse_move_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
CALLBACK_MOUSE_DOWN, e_epplet_mouse_down_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
CALLBACK_MOUSE_UP, e_epplet_mouse_up_cb,
epp);
ebits_set_classed_bit_callback (epp->bits, "Resize_Horizontal",
CALLBACK_MOUSE_MOVE, e_epplet_mouse_move_cb,
epp);
#endif
D ("callbacks set\n");
*/
}
static void
e_epplet_mouse_down_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
E_Epplet *epp;
D_ENTER;
#ifdef USE_FERITE
epp = _data;
if (!strcmp(_c, "Title_Bar"))
{
epp->state.moving = 1;
epp->offset.x = _x - epp->current.x;
epp->offset.y = _y - epp->current.y;
}
if (!strcmp(_c, "Resize"))
{
if (_x < epp->current.x + (epp->current.w / 2))
{
epp->state.resizing.left = 1;
epp->offset.x = epp->current.x - _x;
}
if (_x >= epp->current.x + (epp->current.w / 2))
{
epp->state.resizing.right = 1;
epp->offset.x = epp->current.x + epp->current.w - _x;
}
if (_y < epp->current.y + (epp->current.h / 2))
{
epp->state.resizing.up = 1;
epp->offset.y = epp->current.y - _y;
}
if (_y >= epp->current.y + (epp->current.h / 2))
{
epp->state.resizing.down = 1;
epp->offset.y = epp->current.y + epp->current.h - _y;
}
}
if (!strcmp(_c, "Resize_Horizontal"))
{
if (_x < epp->current.x + (epp->current.w / 2))
{
epp->state.resizing.left = 1;
epp->offset.x = epp->current.x - _x;
}
else
{
epp->state.resizing.right = 1;
epp->offset.x = epp->current.x + epp->current.w - _x;
}
}
if (!strcmp(_c, "Resize_Vertical"))
{
if (_y < epp->current.y + (epp->current.h / 2))
{
epp->state.resizing.up = 1;
epp->offset.y = epp->current.y - _y;
}
else
{
epp->state.resizing.down = 1;
epp->offset.y = epp->current.y + epp->current.h - _y;
}
}
#endif
D_RETURN;
}
static void
e_epplet_mouse_up_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
E_Epplet *epp;
D_ENTER;
#ifdef USE_FERITE
epp = _data;
if (!strcmp(_c, "Title_Bar"))
{
epp->state.moving = 0;
}
if (!strncmp(_c, "Resize", 6))
{
epp->state.resizing.up = 0;
epp->state.resizing.down = 0;
epp->state.resizing.left = 0;
epp->state.resizing.right = 0;
}
#endif
D_RETURN;
}
static void
e_epplet_mouse_move_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
E_Epplet *epp;
double x, y;
D_ENTER;
#ifdef USE_FERITE
/* epp = _data;
if (epp->state.moving)
{
x = _x - epp->offset.x;
y = _y - epp->offset.y;
if (x < 0)
x = 0;
if (y < 0)
y = 0;
if (x > epp->view->size.w - epp->current.w)
x = epp->view->size.w - epp->current.w;
if (y > epp->view->size.h - epp->current.h)
y = epp->view->size.h - epp->current.h;
epp->current.x = x;
epp->current.y = y;
ebits_move (epp->ui, epp->current.x, epp->current.y);
}
if (epp->state.resizing.left || epp->state.resizing.right
|| epp->state.resizing.up || epp->state.resizing.down)
{
int w, h, x, y;
int mw, mh;
if (epp->state.resizing.left)
{
w = epp->current.x + epp->current.w - _x - epp->offset.x;
x = _x + epp->offset.x;
}
else if (epp->state.resizing.right)
{
w = _x - epp->current.x + epp->offset.x;
x = epp->current.x;
}
else
{
w = epp->current.w;
x = epp->current.x;
}
if (epp->state.resizing.up)
{
h = epp->current.h + epp->current.y - _y - epp->offset.y;
y = _y + epp->offset.y;
}
else if (epp->state.resizing.down)
{
h = _y - epp->current.y + epp->offset.y;
y = epp->current.y;
}
else
{
h = epp->current.h;
y = epp->current.y;
}
ebits_get_max_size (epp->bits, &mw, &mh);
if (w >= mw)
{
w = mw;
x = epp->current.x;
}
if (h >= mh)
{
h = mh;
y = epp->current.y;
}
ebits_get_min_size (epp->bits, &mw, &mh);
if (w < mw)
{
w = mw;
x = epp->current.x;
}
if (h < mh)
{
h = mh;
y = epp->current.y;
}
epp->current.x = x;
epp->current.y = y;
epp->current.w = w;
epp->current.h = h;
ebits_resize (epp->bits, epp->current.w, epp->current.h);
ebits_move (epp->bits, epp->current.x, epp->current.y);
}
*/
#endif
D_RETURN;
}
E_Epplet_CB_Info *
e_epplet_cb_new(FeriteScript * script, char *func_name, FeriteObject * data,
FeriteObject * data2)
{
E_Epplet_CB_Info *cb;
FeriteNamespaceBucket *nsb;
D_ENTER;
#ifdef USE_FERITE
cb = NEW(E_Epplet_CB_Info, 1);
ZERO(cb, E_Epplet_CB_Info, 1);
nsb = __ferite_find_namespace(script, script->mainns, func_name, FENS_FNC);
if (nsb != NULL)
{
cb->func = nsb->data;
if (data)
{
cb->data = data;
data->refcount++;
}
if (data2)
{
cb->data2 = data2;
data2->refcount++;
}
cb->script = script;
}
#endif
D_RETURN_(cb);
}
void
e_epplet_cb_cleanup(E_Epplet_CB_Info * cb)
{
#ifdef USE_FERITE
if (cb->data)
{
cb->data->refcount--;
cb->data = NULL;
}
if (cb->data2)
{
cb->data2->refcount--;
cb->data2 = NULL;
}
FREE(cb);
#endif
}
void
e_epplet_bits_cb(void *_data, Ebits_Object _o,
char *_c, int _b, int _x, int _y,
int _ox, int _oy, int _ow, int _oh)
{
E_Epplet_CB_Info *cb;
FeriteVariable **params;
D_ENTER;
#ifdef USE_FERITE
cb = _data;
if (cb->script)
{
D("creating params and calling func\n");
params =
__ferite_create_parameter_list_from_data(cb->script, "osnnnnnnn",
cb->data, _c, _b, _x, _y,
_ox, _oy, _ow, _oh);
__ferite_variable_destroy(cb->script,
__ferite_call_function(cb->script, cb->func,
params));
__ferite_delete_parameter_list(cb->script, params);
D("func called, params deleted\n");
}
else
{
D("ERROR: script does not exist\n");
}
/* e_epplet_cb_cleanup(cb); */
#endif
D_RETURN;
}
void
e_epplet_evas_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
{
E_Epplet_CB_Info *cb;
FeriteVariable **params;
D_ENTER;
#ifdef USE_FERITE
cb = _data;
D("d1: %s, d2: %s\n", cb->data->name, cb->data2->name);
if (cb->script)
{
D("creating params\n");
params = __ferite_create_parameter_list_from_data(cb->script, "oonnn",
cb->data, cb->data2,
(double)_b,
(double)_x,
(double)_y);
D("calling func: %s\n", cb->func->name);
__ferite_variable_destroy(cb->script,
__ferite_call_function(cb->script, cb->func,
params));
__ferite_delete_parameter_list(cb->script, params);
D("func called, params deleted\n");
}
else
{
D("ERROR: script does not exist\n");
}
/* e_epplet_cb_cleanup(cb); */
#endif
D_RETURN;
}
void
e_epplet_timer_func(int val, void *data)
{
E_Epplet_CB_Info *cb;
FeriteVariable **params;
D_ENTER;
#ifdef USE_FERITE
/* D("in timer func\n"); */
cb = data;
if (cb->script)
{
/* D("creating params\n"); */
params = __ferite_create_parameter_list_from_data(cb->script, "on",
cb->data, (float)val);
/* D("calling func\n"); */
__ferite_variable_destroy(cb->script,
__ferite_call_function(cb->script, cb->func,
params));
__ferite_delete_parameter_list(cb->script, params);
/* D("func called, params deleted\n"); */
}
else
{
D("ERROR: script does not exist\n");
}
/* e_epplet_cb_cleanup(cb); */
#endif
D_RETURN;
}
E_Epplet_Observer *
e_epplet_observer_new(FeriteScript * script, char *func_name,
FeriteObject * data, char *event_type)
{
E_Epplet_Observer *obs = NULL;
FeriteNamespaceBucket *nsb;
D_ENTER;
#ifdef USE_FERITE
obs = NEW(E_Epplet_Observer, 1);
memset(obs, 0, sizeof(E_Epplet_Observer));
if (!strcmp(event_type, "DESKTOP_SWITCH"))
e_observer_init(E_OBSERVER(obs), E_EVENT_DESKTOP_SWITCH,
e_epplet_desktop_observer_func,
(E_Cleanup_Func) e_epplet_observer_cleanup);
#if 0
else if (!strcmp(event_type, "ICONIFY"))
e_observer_init(E_OBSERVER(obs), E_EVENT_BORDER_ICONIFY,
e_epplet_border_observer_func,
(E_Cleanup_Func) e_epplet_observer_cleanup);
else if (!strcmp(event_type, "UNICONIFY"))
e_observer_init(E_OBSERVER(obs), E_EVENT_BORDER_UNICONIFY,
e_epplet_border_observer_func,
(E_Cleanup_Func) e_epplet_observer_cleanup);
else
e_observer_init(E_OBSERVER(obs), E_EVENT_MAX,
e_epplet_desktop_observer_func,
(E_Cleanup_Func) e_epplet_observer_cleanup);
#endif
nsb = __ferite_find_namespace(script, script->mainns, func_name, FENS_FNC);
if (nsb != NULL)
{
obs->script = script;
obs->func = nsb->data;
if (data)
{
((E_Epplet_Observer *) obs)->data = data;
data->refcount++;
}
}
D("returning, event: %i\n", E_OBSERVER(obs)->event);
#endif
D_RETURN_(obs);
}
static void
e_epplet_observer_cleanup(E_Object * o)
{
#ifdef USE_FERITE
/*FIXME: we need something here!!! Leeeeaky! */
#endif
}
void
e_epplet_observer_register_desktops(E_Epplet_Observer * obs)
{
Evas_List l;
D_ENTER;
#ifdef USE_FERITE
D("odeskregister, bserver func: %s\n", obs->func->name);
D("register each desktop in list\n");
for (l = e_desktops_get_desktops_list(); l; l = l->next)
{
E_Desktop *d = l->data;
D("registering desktop...\n")
e_observer_register_observee(E_OBSERVER(obs), E_OBSERVEE(d));
D("desktop registered\n")}
#endif
D_RETURN;
}
#if 0
void
e_epplet_observer_register_borders(E_Epplet_Observer * obs)
{
Evas_List l;
D_ENTER;
#ifdef USE_FERITE
for (l = e_border_get_borders_list(); l; l = l->next)
{
E_Border *b = l->data;
D("registering desktop...\n")
e_observer_register_observee(E_OBSERVER(obs), E_OBSERVEE(b));
D("desktop registered\n")}
#endif
D_RETURN;
}
#endif
void
e_epplet_desktop_observer_func(E_Observer * observer, E_Observee * observee,
E_Event_Type event)
{
E_Epplet_Observer *obs;
E_Desktop *desk;
FeriteVariable **params;
D_ENTER;
#ifdef USE_FERITE
obs = (E_Epplet_Observer *) observer;
desk = (E_Desktop *) observee;
D("desktop: %i\n", desk->desk.desk);
D("current: %i\n", e_desktops_get_current());
if (obs->script)
{
D("creating params\n");
params = __ferite_create_parameter_list_from_data(obs->script, "on",
obs->data,
(float)(desk->desk.
desk));
D("calling func: %s\n", obs->func->name);
__ferite_variable_destroy(obs->script,
__ferite_call_function(obs->script, obs->func,
params));
D("function called\n");
__ferite_delete_parameter_list(obs->script, params);
D("func called, params deleted\n");
}
else
{
D("ERROR: script does not exist\n");
}
#endif
D_RETURN;
}
#if 0 /* don't use this, its currently broken */
void
e_epplet_border_observer_func(E_Observer * observer, E_Observee * observee)
{
E_Epplet_Observer *obs;
E_Border *b;
FeriteVariable **params;
D_ENTER;
#ifdef USE_FERITE
obs = (E_Epplet_Observer *) observer;
b = (E_Border *) observee;
obs->data->odata = b;
if (obs->script)
{
/*D("creating params\n"); */
params = __ferite_create_parameter_list_from_data(obs->script, "o",
obs->data);
/*D("calling func: %s\n", obs->func->name); */
__ferite_variable_destroy(obs->script,
__ferite_call_function(obs->script, obs->func,
params));
/*D("function called\n"); */
__ferite_delete_parameter_list(obs->script, params);
/*D("func called, params deleted\n"); */
}
else
{
D("ERROR: script does not exist\n");
}
#endif
D_RETURN;
}
#endif

View File

@ -1,123 +0,0 @@
#ifndef E_EPPLET_H
#define E_EPPLET_H
#include "e.h"
#include "view.h"
#include "observer.h"
#include "e_ferite.h"
typedef struct _E_Epplet E_Epplet;
typedef struct _E_Epplet_Context E_Epplet_Context;
typedef struct _E_Epplet_CB_Info E_Epplet_CB_Info;
typedef struct _Evas_Object_Wrapper Evas_Object_Wrapper;
typedef struct _E_Epplet_Observer E_Epplet_Observer;
struct _E_Epplet_Observer
{
E_Observer o;
FeriteScript *script;
FeriteFunction *func;
FeriteObject *data;
};
struct _E_Epplet_CB_Info
{
FeriteScript *script;
FeriteFunction *func;
FeriteObject *data;
FeriteObject *data2;
};
struct _E_Epplet_Context
{
char *name;
E_View *view;
FeriteScript *script;
E_Epplet *epp;
struct
{
double x, y;
double w, h;
}
geom;
};
struct _E_Epplet
{
E_Object o;
E_Epplet_Context *context;
char *name;
E_View *view;
char *dir;
Ebits_Object layout;
Ebits_Object ui;
struct
{
double x, y;
double w, h;
}
current , requested, offset;
struct
{
int changed;
int moving;
struct
{
int up, down, left, right;
}
resizing;
}
state;
Evas_List evas_objects;
Evas_List ebits;
};
struct _Evas_Object_Wrapper
{
Evas evas;
Evas_Object obj;
E_Epplet *epp;
};
/* epplet loading / cleanup */
E_Epplet *e_epplet_new();
void e_epplet_load_from_layout(E_View * v);
void e_epplet_script_load(E_Epplet_Context * v,
char *script_path);
E_Epplet_Context *e_epplet_get_context_from_script(FeriteScript * script);
/* probably won't use this... */
void e_epplet_set_common_callbacks(E_Epplet * epp);
/* callbacks */
E_Epplet_CB_Info *e_epplet_cb_new(FeriteScript * script, char *func_name,
FeriteObject * data, FeriteObject * data2);
void e_epplet_cb_cleanup(E_Epplet_CB_Info * cb);
void e_epplet_bits_cb(void *_data, Ebits_Object _o, char *_c,
int _b, int _x, int _y, int _ox, int _oy,
int _ow, int _oh);
void e_epplet_evas_cb(void *_data, Evas _e, Evas_Object _o,
int _b, int _x, int _y);
/* timers */
void e_epplet_timer_func(int val, void *data);
/* Observers */
E_Epplet_Observer *e_epplet_observer_new(FeriteScript * script,
char *func_name, FeriteObject * data,
char *event_type);
void e_epplet_observer_register_desktops(E_Epplet_Observer *
obs);
void e_epplet_desktop_observer_func(E_Observer * observer,
E_Observee * observee,
E_Event_Type event);
/*void e_epplet_border_observer_func(E_Observer *observer, E_Observee *observee);*/
#endif

View File

@ -15,7 +15,7 @@ struct _e_hack_found_cb
void *func_data;
};
static Evas_List hack_found_cb = NULL;
static Evas_List * hack_found_cb = NULL;
void *
e_exec_broadcast_cb_add(void (*func) (Window win, void *_data), void *data)
@ -42,7 +42,7 @@ e_exec_broadcast_cb_del(void *cbp)
void
e_exec_broadcast_e_hack_found(Window win)
{
Evas_List l;
Evas_List * l;
for (l = hack_found_cb; l; l = l->next)
{
@ -108,7 +108,7 @@ e_exec_restart(void)
exe[0] = 0;
for (i = 0; i < e_argc; i++)
{
strcat(exe, e_argv[i]);
strncat(exe, e_argv[i], PATH_MAX);
strcat(exe, " ");
}
execl("/bin/sh", "/bin/sh", "-c", exe, NULL);

View File

@ -126,7 +126,7 @@ e_file_get_dir(char *file)
D_ENTER;
strcpy(buf, file);
STRNCPY(buf, file, PATH_MAX);
p = strrchr(buf, '/');
if (!p)
{
@ -193,12 +193,12 @@ e_file_readlink(char *link)
D_RETURN_(f);
}
Evas_List
Evas_List *
e_file_ls(char *dir)
{
DIR *dirp;
struct dirent *dp;
Evas_List list;
Evas_List * list;
D_ENTER;
@ -210,7 +210,7 @@ e_file_ls(char *dir)
{
if ((strcmp(dp->d_name, ".")) && (strcmp(dp->d_name, "..")))
{
Evas_List l;
Evas_List * l;
char *f;
/* insertion sort */

View File

@ -35,6 +35,6 @@ char *e_file_get_dir(char *path);
int e_file_can_exec(struct stat *st);
char *e_file_readlink(char *link);
Evas_List e_file_ls(char *dir);
Evas_List * e_file_ls(char *dir);
#endif

View File

@ -4,7 +4,7 @@
#include "e.h"
#include "util.h"
static Evas_List focus_list = NULL;
static Evas_List * focus_list = NULL;
void
e_focus_set_focus(E_Border * b)

View File

@ -4,8 +4,8 @@
#include "util.h"
static EfsdConnection *ec = NULL;
static Evas_List fs_handlers = NULL;
static Evas_List fs_restart_handlers = NULL;
static Evas_List * fs_handlers = NULL;
static Evas_List * fs_restart_handlers = NULL;
static pid_t efsd_pid = 0;
static void e_fs_child_handle(Ecore_Event * ev);
@ -80,7 +80,7 @@ e_fs_fd_handle(int fd)
if (efsd_next_event(ec, &ev) >= 0)
{
Evas_List l;
Evas_List * l;
for (l = fs_handlers; l; l = l->next)
{
@ -136,7 +136,7 @@ e_fs_restarter(int val, void *data)
}
if (ec)
{
Evas_List l;
Evas_List * l;
ecore_add_event_fd(efsd_get_connection_fd(ec), e_fs_fd_handle);
for (l = fs_restart_handlers; l; l = l->next)

View File

@ -4,6 +4,7 @@
#include "config.h"
#include "embed.h"
#include "util.h"
#include <Imlib2.h>
static struct
{
@ -37,10 +38,10 @@ static struct
win;
struct
{
Evas evas;
Evas * evas;
Ebits_Object bg;
E_Text *text;
Evas_Object icon;
Evas_Object * icon;
Imlib_Image image;
}
disp;
@ -103,19 +104,49 @@ e_guides_update(void)
{
font_dir = e_config_get("fonts");
guides.disp.evas = evas_new();
evas_set_output_method(guides.disp.evas, RENDER_METHOD_IMAGE);
evas_output_method_set(guides.disp.evas,
evas_render_method_lookup("software_x11"));
evas_object_font_path_append(guides.disp.evas, font_dir);
evas_output_size_set(guides.disp.evas, 1, 1);
evas_output_viewport_set(guides.disp.evas, 0, 0, 1, 1);
evas_object_font_cache_set(guides.disp.evas, font_cache);
evas_object_image_cache_set(guides.disp.evas, image_cache);
{
Evas_Engine_Info_Software_X11 *einfo;
XSetWindowAttributes att;
/*Window window;*/
Pixmap pmap, mask;
pmap = ecore_pixmap_new(guides.win.display, 100, 100, 0);
mask = ecore_pixmap_new(guides.win.display, 100, 100, 1);
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(guides.disp.evas);
/* the following is specific to the engine */
einfo->info.display = ecore_display_get();
einfo->info.visual = DefaultVisual(einfo->info.display, DefaultScreen(einfo->info.display));
einfo->info.colormap = DefaultColormap(einfo->info.display, DefaultScreen(einfo->info.display));
att.background_pixmap = None;
att.colormap = /*colormap*/ DefaultColormap(einfo->info.display, DefaultScreen(einfo->info.display));
att.border_pixel = 0;
att.event_mask = 0;
einfo->info.drawable = pmap;
einfo->info.mask = mask;
einfo->info.depth = DefaultDepth(einfo->info.display, DefaultScreen(einfo->info.display));
einfo->info.rotation = 0;
einfo->info.debug = 0;
evas_engine_info_set(guides.disp.evas, (Evas_Engine_Info *) einfo);
/* And setup for Imlib2 */
imlib_context_set_display(einfo->info.display);
imlib_context_set_visual(DefaultVisual(einfo->info.display, DefaultScreen(einfo->info.display)));
}
guides.disp.image = imlib_create_image(1, 1);
imlib_context_set_image(guides.disp.image);
imlib_image_set_has_alpha(1);
imlib_image_clear();
evas_set_output_image(guides.disp.evas, guides.disp.image);
evas_font_add_path(guides.disp.evas, font_dir);
evas_set_output_size(guides.disp.evas, 1, 1);
evas_set_output_viewport(guides.disp.evas, 0, 0, 1, 1);
evas_set_font_cache(guides.disp.evas, font_cache);
evas_set_image_cache(guides.disp.evas, image_cache);
}
}
else
@ -195,19 +226,20 @@ e_guides_update(void)
}
if ((!guides.current.display.icon) && (guides.disp.icon))
{
evas_del_object(guides.disp.evas, guides.disp.icon);
evas_object_del(guides.disp.icon);
guides.disp.icon = NULL;
}
if ((guides.current.display.icon) && (!guides.disp.icon))
{
guides.disp.icon =
evas_add_image_from_file(guides.disp.evas,
guides.current.display.icon);
evas_show(guides.disp.evas, guides.disp.icon);
evas_object_image_add(guides.disp.evas);
evas_object_image_file_set(guides.disp.icon,
guides.current.display.icon, NULL);
evas_object_show(guides.disp.icon);
}
if (guides.disp.icon)
evas_set_image_file(guides.disp.evas, guides.disp.icon,
guides.current.display.icon);
evas_object_image_file_set(guides.disp.icon,
guides.current.display.icon, NULL);
e_text_set_text(guides.disp.text, guides.current.display.text);
if (!guides.disp.bg)
{
@ -284,37 +316,18 @@ e_guides_update(void)
guides.disp.image = NULL;
}
guides.disp.image = imlib_create_image(dw, dh);
imlib_context_set_image(guides.disp.image);
imlib_image_set_has_alpha(1);
imlib_image_clear();
evas_set_output_image(guides.disp.evas, guides.disp.image);
evas_set_output_size(guides.disp.evas, dw, dh);
evas_set_output_viewport(guides.disp.evas, 0, 0, dw, dh);
evas_update_rect(guides.disp.evas, 0, 0, dw, dh);
evas_output_size_set(guides.disp.evas, dw, dh);
evas_output_viewport_set(guides.disp.evas, 0, 0, dw, dh);
evas_damage_rectangle_add(guides.disp.evas, 0, 0, dw, dh);
evas_render(guides.disp.evas);
{
Pixmap pmap, mask;
Evas_Engine_Info_Software_X11 *einfo;
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(guides.disp.evas);
pmap = ecore_pixmap_new(guides.win.display, dw, dh, 0);
mask = ecore_pixmap_new(guides.win.display, dw, dh, 1);
imlib_context_set_image(guides.disp.image);
imlib_context_set_dither_mask(1);
imlib_context_set_dither(1);
imlib_context_set_drawable(pmap);
imlib_context_set_mask(mask);
imlib_context_set_blend(0);
imlib_context_set_color_modifier(NULL);
imlib_render_image_on_drawable(0, 0);
ecore_window_set_background_pixmap(guides.win.display, pmap);
ecore_window_set_shape_mask(guides.win.display, mask);
ecore_window_set_background_pixmap(guides.win.display, einfo->info.drawable);
ecore_window_set_shape_mask(guides.win.display, einfo->info.mask);
ecore_window_clear(guides.win.display);
ecore_pixmap_free(pmap);
ecore_pixmap_free(mask);
}
ecore_window_move(guides.win.display, dx, dy);
ecore_window_resize(guides.win.display, dw, dh);

File diff suppressed because it is too large Load Diff

View File

@ -24,10 +24,10 @@ struct _E_Iconbar
{
E_Object o;
E_View *view;
Evas_List icons;
E_Desktop *desktop;
Evas_List *icons;
Evas_Object clip;
Evas_Object *clip;
int has_been_scrolled;
int changed;
@ -54,7 +54,7 @@ struct _E_Iconbar_Icon
E_Iconbar *iconbar;
Evas_Object image;
Evas_Object * image;
Imlib_Image imlib_image;
char *image_path;
@ -63,7 +63,7 @@ struct _E_Iconbar_Icon
int hilited;
struct
{
Evas_Object image;
Evas_Object * image;
char *timer;
double start;
}
@ -94,7 +94,7 @@ struct _E_Iconbar_Icon
};
void e_iconbar_init(void);
E_Iconbar *e_iconbar_new(E_View * v);
E_Iconbar *e_iconbar_new(E_Desktop * d);
void e_iconbar_icon_free(E_Iconbar_Icon *);
void e_iconbar_realize(E_Iconbar * ib);
void e_iconbar_fix(E_Iconbar * ib);
@ -104,9 +104,8 @@ void e_iconbar_file_delete(E_View * v, char *file);
void e_iconbar_file_change(E_View * v, char *file);
void e_iconbar_save_out_final(E_Iconbar * ib);
E_Rect *e_iconbar_get_resist_rect(E_Iconbar * ib);
void e_iconbar_set_view_window_spacing(E_Iconbar * ib);
void e_iconbar_icon_move(E_Iconbar_Icon * ic, int x, int y);
void e_iconbar_dnd_add_files(E_View * v, E_View * source,
void e_iconbar_dnd_add_files(E_Desktop * d, E_View * source,
int num_files, char **dnd_files);
#endif

View File

@ -9,23 +9,19 @@
#include "e_view_machine.h"
#include "globals.h"
static void e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_icon_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
static void e_icon_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
static void e_icon_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
static void e_icon_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
static void e_icon_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info);
static void
e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_icon_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
E_Icon *ic;
Ecore_Event *ev;
Ecore_Event_Mouse_Down *e;
Evas_Event_Mouse_Down *ev_info = event_info;
D_ENTER;
@ -34,11 +30,11 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
e = ev->event;
ic = _data;
ic->view->select.down.x = _x;
ic->view->select.down.y = _y;
ic->view->select.down.x = ev_info->output.x;
ic->view->select.down.y = ev_info->output.y;
ic->state.clicked = 1;
e_icon_update_state(ic);
if (_b == 1)
if (ev_info->button == 1)
{
if (e->double_click)
{
@ -62,10 +58,10 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
}
}
else if (_b == 2)
else if (ev_info->button == 2)
{
}
else if (_b == 3)
else if (ev_info->button == 3)
{
}
@ -75,11 +71,12 @@ e_icon_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
static void
e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_icon_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
E_Icon *ic;
Ecore_Event *ev;
Ecore_Event_Mouse_Up *e;
Evas_Event_Mouse_Up *ev_info = event_info;
D_ENTER;
@ -112,7 +109,7 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
ecore_window_dnd_finished();
D_RETURN;
}
if (_b == 1)
if (ev_info->button == 1)
{
if (ic->state.just_executed)
{
@ -139,12 +136,10 @@ e_icon_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_x);
UN(_y);
}
static void
e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_icon_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
E_Icon *ic;
@ -156,13 +151,11 @@ e_icon_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
UN(_x);
UN(_y);
UN(event_info);
}
static void
e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_icon_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
E_Icon *ic;
@ -172,16 +165,14 @@ e_icon_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
UN(_x);
UN(_y);
UN(event_info);
}
static void
_paint_selected_icons_onto_drag_window(E_View * v, Imlib_Image im, int wx,
int wy)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -201,7 +192,7 @@ _paint_selected_icons_onto_drag_window(E_View * v, Imlib_Image im, int wx,
if (!ic->state.selected)
continue;
evas_get_geometry(ic->view->evas, ic->obj.icon, &ix, &iy, NULL, NULL);
evas_object_geometry_get(ic->obj.icon, &ix, &iy, NULL, NULL);
icx = ix + v->location.x - wx;
icy = iy + v->location.y - wy;
if (!ic->file->info.icon)
@ -248,7 +239,7 @@ static void
_start_drag(E_View * v, int _x, int _y)
{
Pixmap pmap, mask;
Evas_List l;
Evas_List * l;
int x, y, xx, yy, rw, rh, downx, downy, wx, wy, ww, wh;
int dx, dy;
@ -370,11 +361,12 @@ _start_drag(E_View * v, int _x, int _y)
}
static void
e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_icon_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
E_Icon *ic;
Ecore_Event *ev;
Ecore_Event_Mouse_Move *e;
Evas_Event_Mouse_Move *ev_info = event_info;
D_ENTER;
@ -390,14 +382,14 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
if (!ic->view->drag.started)
{
_start_drag(ic->view, _x, _y);
_start_drag(ic->view, ev_info->cur.output.x, ev_info->cur.output.y);
}
else if (ic->view->drag.started)
{
int x, y;
x = _x - ic->view->drag.offset.x;
y = _y - ic->view->drag.offset.y;
x = ev_info->cur.output.x - ic->view->drag.offset.x;
y = ev_info->cur.output.y - ic->view->drag.offset.y;
ic->view->drag.x = x;
ic->view->drag.y = y;
ic->view->drag.update = 1;
@ -422,7 +414,6 @@ e_icon_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
}
static void
@ -435,10 +426,16 @@ e_icon_cleanup(E_Icon * ic)
if (ic->obj.event1)
{
evas_del_object(ic->view->evas, ic->obj.event1);
evas_del_object(ic->view->evas, ic->obj.event2);
evas_object_del(ic->obj.event1);
evas_object_del(ic->obj.event2);
}
if (ic->obj.icon)
evas_object_del(ic->obj.icon);
if (ic->obj.text)
e_text_free(ic->obj.text);
if (ic->obj.sel.under.icon)
ebits_free(ic->obj.sel.under.icon);
if (ic->obj.sel.under.text)
@ -471,7 +468,7 @@ e_icon_new(void)
E_Icon *
e_icon_find_by_file(E_View * view, char *file)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -495,42 +492,44 @@ e_icon_show(E_Icon * ic)
if (ic->state.visible)
D_RETURN;
ic->state.visible = 1;
if (!ic->obj.event1)
{
ic->obj.event1 = evas_add_rectangle(ic->view->evas);
ic->obj.event2 = evas_add_rectangle(ic->view->evas);
evas_set_color(ic->view->evas, ic->obj.event1, 0, 0, 0, 0);
evas_set_color(ic->view->evas, ic->obj.event2, 0, 0, 0, 0);
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_DOWN,
ic->obj.event1 = evas_object_rectangle_add(ic->view->evas);
ic->obj.event2 = evas_object_rectangle_add(ic->view->evas);
evas_object_color_set(ic->obj.event1, 0, 0, 0, 0);
evas_object_color_set(ic->obj.event2, 0, 0, 0, 0);
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_DOWN,
e_icon_down_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_UP,
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_UP,
e_icon_up_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_IN,
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_IN,
e_icon_in_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_OUT,
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_OUT,
e_icon_out_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event1, CALLBACK_MOUSE_MOVE,
evas_object_event_callback_add(ic->obj.event1, EVAS_CALLBACK_MOUSE_MOVE,
e_icon_move_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_DOWN,
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_DOWN,
e_icon_down_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_UP,
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_UP,
e_icon_up_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_IN,
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_IN,
e_icon_in_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_OUT,
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_OUT,
e_icon_out_cb, ic);
evas_callback_add(ic->view->evas, ic->obj.event2, CALLBACK_MOUSE_MOVE,
evas_object_event_callback_add(ic->obj.event2, EVAS_CALLBACK_MOUSE_MOVE,
e_icon_move_cb, ic);
}
evas_set_layer(ic->view->evas, ic->obj.icon, 200);
e_text_set_layer(ic->obj.text, 200);
evas_set_layer(ic->view->evas, ic->obj.event1, 210);
evas_set_layer(ic->view->evas, ic->obj.event2, 210);
evas_show(ic->view->evas, ic->obj.icon);
}
evas_object_layer_set(ic->obj.icon, 200);
e_text_set_layer(ic->obj.text, 200);
evas_object_layer_set(ic->obj.event1, 210);
evas_object_layer_set(ic->obj.event2, 210);
evas_object_show(ic->obj.icon);
e_text_show(ic->obj.text);
evas_show(ic->view->evas, ic->obj.event1);
evas_show(ic->view->evas, ic->obj.event2);
evas_object_show(ic->obj.event1);
evas_object_show(ic->obj.event2);
D_RETURN;
}
@ -543,10 +542,10 @@ e_icon_hide(E_Icon * ic)
if (!ic->state.visible)
D_RETURN;
ic->state.visible = 0;
evas_hide(ic->view->evas, ic->obj.icon);
evas_object_hide(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);
evas_object_hide(ic->obj.event1);
evas_object_hide(ic->obj.event2);
/* Hide any selection in the view */
if (ic->obj.sel.under.icon)
@ -572,13 +571,13 @@ e_icon_hide_delete_pending(E_Icon * ic)
{
if (ic->view->drag.drop_mode == E_DND_MOVE)
{
evas_hide(ic->view->evas, ic->obj.icon);
evas_object_hide(ic->obj.icon);
ic->state.drag_delete = 1;
}
else
/* copy... */
{
evas_show(ic->view->evas, ic->obj.icon);
evas_object_show(ic->obj.icon);
ic->state.drag_delete = 0;
}
}
@ -600,7 +599,7 @@ e_icon_show_delete_end(E_Icon * ic, E_dnd_enum dnd_pending_mode)
{
ic->state.drag_delete = 0;
if (dnd_pending_mode == E_DND_COPIED)
evas_show(ic->view->evas, ic->obj.icon);
evas_object_show(ic->obj.icon);
}
}
@ -623,20 +622,23 @@ e_icon_apply_xy(E_Icon * ic)
ic->geom.w = ic->geom.icon.w;
ic->geom.h = ic->geom.icon.h + ic->geom.text.h + ic->view->spacing.icon.g;
evas_resize(ic->view->evas, ic->obj.event1,
if(ic->obj.event1)
{
evas_object_resize(ic->obj.event1,
ic->geom.icon.w, ic->geom.icon.h);
evas_resize(ic->view->evas, ic->obj.event2,
evas_object_resize(ic->obj.event2,
ic->geom.text.w, ic->geom.text.h);
evas_move(ic->view->evas, ic->obj.event1,
evas_object_move(ic->obj.event1,
ic->view->scroll.x + ic->geom.x +
((ic->geom.w - ic->geom.icon.w) / 2),
ic->view->scroll.y + ic->geom.y);
evas_move(ic->view->evas, ic->obj.event2,
evas_object_move(ic->obj.event2,
ic->view->scroll.x + ic->geom.x +
((ic->geom.w - ic->geom.text.w) / 2),
ic->view->scroll.y + ic->geom.y + ic->geom.icon.h +
ic->view->spacing.icon.g);
evas_move(ic->view->evas, ic->obj.icon,
}
evas_object_move(ic->obj.icon,
ic->view->scroll.x + ic->geom.x +
((ic->geom.w - ic->geom.icon.w) / 2),
ic->view->scroll.y + ic->geom.y);
@ -734,9 +736,9 @@ e_icon_check_permissions(E_Icon * ic)
if (!strcmp(ic->file->info.mime.base, "dir"))
{
if (e_file_can_exec(&ic->file->stat))
evas_set_color(ic->view->evas, ic->obj.icon, 255, 255, 255, 255);
evas_object_color_set(ic->obj.icon, 255, 255, 255, 255);
else
evas_set_color(ic->view->evas, ic->obj.icon, 128, 128, 128, 128);
evas_object_color_set(ic->obj.icon, 128, 128, 128, 128);
}
D_RETURN;
@ -752,7 +754,7 @@ e_icon_initial_show(E_Icon * ic)
D_RETURN;
/* first. lets figure out the size of the icon */
evas_get_image_size(ic->view->evas, ic->obj.icon,
evas_object_image_size_get(ic->obj.icon,
&(ic->geom.icon.w), &(ic->geom.icon.h));
{
double tw, th;
@ -779,7 +781,7 @@ e_icon_initial_show(E_Icon * ic)
void
e_icon_update_state(E_Icon * ic)
{
char icon[PATH_MAX];
char icon[PATH_MAX], key[PATH_MAX];
int iw, ih;
D_ENTER;
@ -791,15 +793,18 @@ e_icon_update_state(E_Icon * ic)
}
if (ic->state.clicked)
{
snprintf(icon, PATH_MAX, "%s:/icon/clicked", ic->file->info.icon);
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
strcpy(key, "/icon/clicked");
}
else if (ic->state.selected)
{
snprintf(icon, PATH_MAX, "%s:/icon/selected", ic->file->info.icon);
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
strcpy(key, "/icon/selected");
}
else
{
snprintf(icon, PATH_MAX, "%s:/icon/normal", ic->file->info.icon);
snprintf(icon, PATH_MAX, "%s", ic->file->info.icon);
strcpy(key, "/icon/normal");
}
if ((ic->state.selected) &&
(!ic->obj.sel.under.icon) && (!ic->obj.sel.over.icon))
@ -856,8 +861,18 @@ e_icon_update_state(E_Icon * ic)
/* This relies on the obj.icon having been allocated in view_file_add.
* Maybe it would be better to allocate here, the first
* time the icon is set? -- till */
evas_set_image_file(ic->view->evas, ic->obj.icon, icon);
evas_get_image_size(ic->view->evas, ic->obj.icon, &iw, &ih);
evas_object_image_file_set(ic->obj.icon, icon, key);
evas_object_image_size_get(ic->obj.icon, &iw, &ih);
/* kjb cep */
/* evas_object_image_size_set(ic->obj.icon, 30, 30);
*/
/* Hmm, this shouldn't be needed, should it? */
evas_object_resize(ic->obj.icon,
iw, ih);
evas_object_image_fill_set(ic->obj.icon,
0, 0, iw, ih);
e_icon_check_permissions(ic);
e_icon_apply_xy(ic);
ic->view->changed = 1;

View File

@ -24,9 +24,9 @@ struct _E_Icon
struct
{
Evas_Object icon;
Evas_Object event1;
Evas_Object event2;
Evas_Object * icon;
Evas_Object * event1;
Evas_Object * event2;
E_Text *text;
struct
{

View File

@ -17,21 +17,30 @@
#include "util.h"
#include "e_view_machine.h"
#ifdef USE_FERITE
# include "e_ferite.h"
#endif
#include <time.h>
#include <X11/Xproto.h>
#ifdef E_PROF
Evas_List __e_profiles = NULL;
Evas_List * __e_profiles = NULL;
#endif
static void cb_exit(void);
static void wm_running_error(Display * d, XErrorEvent * ev);
static void setup(void);
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_runtime_flush();
D_RETURN;
UN(data);
}
static void
cb_exit(void)
{
@ -86,8 +95,6 @@ main(int argc, char **argv)
atexit(cb_exit);
e_exec_set_args(argc, argv);
e_config_init();
/* Check command line options here: */
for (i = 1; i < argc; i++)
{
@ -133,39 +140,35 @@ main(int argc, char **argv)
ecore_grab();
ecore_sync();
ecore_set_error_handler(wm_running_error);
ecore_window_set_events(0, XEV_CHILD_REDIRECT | XEV_PROPERTY | XEV_COLORMAP);
ecore_window_set_events(0, XEV_CHILD_REDIRECT | XEV_PROPERTY | XEV_COLORMAP |
XEV_FOCUS | XEV_KEY | XEV_MOUSE_MOVE | XEV_BUTTON |
XEV_IN_OUT);
ecore_sync();
ecore_reset_error_handler();
ecore_ungrab();
/* Initialization for the various modules: */
e_view_machine_init();
e_config_init();
e_keys_init();
e_fs_init();
e_desktops_init();
e_border_init();
e_desktops_init();
e_action_init();
e_menu_init();
e_view_machine_init();
e_entry_init();
e_keys_init();
e_guides_init();
e_place_init();
e_cursors_init();
e_iconbar_init();
#ifdef USE_FERITE
e_ferite_init();
#endif
e_desktops_init_file_display(e_desktops_get(0));
ecore_event_filter_idle_handler_add(ecore_idle, NULL);
e_desktops_show(e_desktops_get(0));
setup();
ecore_event_loop();
#ifdef USE_FERITE
e_ferite_deinit();
#endif
return 0;
}

View File

@ -4,8 +4,8 @@
#include "util.h"
#include "math.h"
static Evas_List open_menus = NULL; /* List of all open menus */
static Evas_List menus = NULL;
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 */
@ -28,22 +28,17 @@ static void e_menu_item_unselect(E_Menu_Item * mi);
static void
e_scroller_timer(int val, void *data)
{
Evas_List l;
Evas_List * l;
int ok = 0;
int resist = 5;
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);
resist = config_data->menu->resist;
scroll_speed = config_data->menu->speed;
t = ecore_get_time();
if (val != 0)
@ -142,7 +137,7 @@ e_scroller_timer(int val, void *data)
static void
e_idle(void *data)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -240,7 +235,7 @@ e_key_down(Ecore_Event * ev)
ok = 1;
else
{
Evas_List l;
Evas_List * l;
for (l = open_menus; l; l = l->next)
{
@ -256,7 +251,7 @@ e_key_down(Ecore_Event * ev)
}
if (ok)
{
Evas_List l;
Evas_List * l;
E_Menu *m = NULL;
E_Menu_Item *mi = NULL;
@ -386,7 +381,7 @@ e_mouse_up(Ecore_Event * ev)
m = open_menus->data;
if ((e->time - m->time) > 200)
{
Evas_List l;
Evas_List * l;
for (l = open_menus; l; l = l->next)
{
@ -398,7 +393,7 @@ e_mouse_up(Ecore_Event * ev)
/* Get the dimensions of the selection for use in
* the test */
double s_x, s_y, s_w, s_h;
evas_get_geometry(m->evas, m->selected->obj_entry,
evas_object_geometry_get(m->selected->obj_entry,
&s_x, &s_y, &s_w, &s_h);
if (INTERSECTS(m->current.x + rint(s_x),
m->current.y + rint(s_y),
@ -443,7 +438,7 @@ e_mouse_move(Ecore_Event * ev)
keyboard_nav = 0;
if (e->win == menu_event_win)
{
Evas_List l;
Evas_List * l;
mouse_x = e->rx;
mouse_y = e->ry;
@ -452,13 +447,17 @@ e_mouse_move(Ecore_Event * ev)
E_Menu *m;
m = l->data;
evas_event_move(m->evas,
/* checkme
evas_event_move(m->evas,
e->rx - m->current.x, e->ry - m->current.y);
*/
evas_event_feed_mouse_move(m->evas,
e->rx - m->current.x, e->ry - m->current.y);
}
}
else
{
Evas_List l;
Evas_List * l;
mouse_x = e->rx;
mouse_y = e->ry;
@ -468,8 +467,12 @@ e_mouse_move(Ecore_Event * ev)
m = l->data;
/* checkme
evas_event_move(m->evas,
e->rx - m->current.x, e->ry - m->current.y);
*/
evas_event_feed_mouse_move(m->evas,
e->rx - m->current.x, e->ry - m->current.y);
}
}
e_scroller_timer(0, NULL);
@ -517,7 +520,7 @@ e_mouse_out(Ecore_Event * ev)
}
else
{
Evas_List l;
Evas_List * l;
for (l = open_menus; l; l = l->next)
{
@ -526,7 +529,7 @@ e_mouse_out(Ecore_Event * ev)
m = l->data;
if ((e->win == m->win.main) || (e->win == m->win.evas))
{
evas_event_move(m->evas, -99999999, -99999999);
evas_event_feed_mouse_move(m->evas, -99999999, -99999999);
}
}
}
@ -548,7 +551,7 @@ e_window_expose(Ecore_Event * ev)
e = ev->event;
{
Evas_List l;
Evas_List * l;
for (l = open_menus; l; l = l->next)
{
@ -558,9 +561,14 @@ e_window_expose(Ecore_Event * ev)
if (e->win == m->win.evas)
{
m->first_expose = 1;
/* checkme
evas_update_rect(m->evas, e->x, e->y, e->w, e->h);
*/
evas_damage_rectangle_add(m->evas, e->x, e->y, e->w, e->h);
break;
}
e_menu_update_shape(m);
}
}
@ -625,9 +633,10 @@ e_menu_item_select(E_Menu_Item * mi)
* @y: ?????
*/
static void
e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_menu_item_in_cb(void *_data, Evas * _e, Evas_Object * _o, void *ev_info)
{
E_Menu_Item *mi;
Evas_Event_Mouse_In *event_info = ev_info;
D_ENTER;
@ -645,9 +654,7 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
UN(_x);
UN(_y);
UN(event_info);
}
/**
@ -662,9 +669,10 @@ e_menu_item_in_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
* @y: ?????
*/
static void
e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_menu_item_out_cb(void *_data, Evas * _e, Evas_Object * _o, void *ev_info)
{
E_Menu_Item *mi;
Evas_Event_Mouse_Out *event_info = ev_info;
D_ENTER;
@ -674,9 +682,7 @@ e_menu_item_out_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
UN(_x);
UN(_y);
UN(event_info);
}
void
@ -721,7 +727,7 @@ e_menu_item_set_callback(E_Menu_Item * mi,
void
e_menu_hide_submenus(E_Menu * menus_after)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -756,7 +762,7 @@ e_menu_hide_submenus(E_Menu * menus_after)
void
e_menu_select(int dx, int dy)
{
Evas_List l, ll;
Evas_List *l, *ll;
int done = 0;
D_ENTER;
@ -852,7 +858,7 @@ e_menu_select(int dx, int dy)
/* Moving out of a submenu: */
if (dx < 0)
{
Evas_List ll;
Evas_List * ll;
mm = l->prev->data;
for (ll = mm->entries; (ll) && (!mi); ll = ll->next)
@ -962,7 +968,7 @@ e_menu_event_win_show(void)
ecore_window_raise(menu_event_win);
if ((!ecore_grab_window_get()) || (!ecore_keyboard_grab_window_get()))
{
Evas_List l;
Evas_List * l;
for (l = menus; l; l = l->next)
{
@ -1209,7 +1215,7 @@ e_menu_set_state(E_Menu * m, E_Menu_Item * mi)
static void
e_menu_cleanup(E_Menu * m)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -1242,9 +1248,6 @@ E_Menu *
e_menu_new(void)
{
E_Menu *m;
int max_colors = 216;
int font_cache = 1024 * 1024;
int image_cache = 8192 * 1024;
char *font_dir;
D_ENTER;
@ -1257,11 +1260,9 @@ e_menu_new(void)
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(),
m->evas = e_evas_new_all(ecore_display_get(),
m->win.main,
0, 0, 1, 1,
RENDER_METHOD_ALPHA_SOFTWARE,
max_colors, font_cache, image_cache, font_dir);
0, 0, 1, 1, font_dir);
/* aaaaaaaaah. this makes building the menu fast - moves the mouse far */
/* far far far far away so callbacks and events arent triggerd as we */
/* create objects that ofter hang around 0,0 - the default place for */
@ -1276,9 +1277,9 @@ e_menu_new(void)
/* screen - an then re-render it all - but well.. it's an extreme and */
/* for now i think people will just have to live with a maximum menu size */
/* of 32768x32768... didums! */
evas_event_move(m->evas, -999999999, -99999999);
evas_event_feed_mouse_move(m->evas, -999999999, -99999999);
m->win.evas = evas_get_window(m->evas);
m->win.evas = e_evas_get_window(m->evas);
ecore_window_set_events(m->win.evas,
XEV_EXPOSE | XEV_MOUSE_MOVE | XEV_BUTTON | XEV_IN_OUT
| XEV_KEY);
@ -1420,7 +1421,7 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
th = 0;
if (mi->obj_text)
{
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &dtw, &dth);
evas_object_geometry_get(mi->obj_text, NULL, NULL, &dtw, &dth);
tw = (int)dtw;
th = (int)dth;
}
@ -1433,7 +1434,7 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
{
int sh;
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
sh = th;
if (rh > th)
sh = rh;
@ -1446,10 +1447,10 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
ix = rx + m->size.state + m->pad.state;
ix += ((m->size.icon - iw) / 2);
iy = ((mi->size.h - ih) / 2);
evas_move(m->evas, mi->obj_icon, m->sel_border.l + mi->x + ix,
evas_object_move(mi->obj_icon, m->sel_border.l + mi->x + ix,
m->sel_border.t + mi->y + iy);
evas_resize(m->evas, mi->obj_icon, iw, ih);
evas_set_image_fill(m->evas, mi->obj_icon, 0, 0, iw, ih);
evas_object_resize(mi->obj_icon, iw, ih);
evas_object_image_fill_set(mi->obj_icon, 0, 0, iw, ih);
}
if (mi->obj_text)
@ -1459,14 +1460,14 @@ e_menu_item_update(E_Menu * m, E_Menu_Item * mi)
if (m->size.icon)
tx += m->size.icon + m->pad.icon;
ty = ((mi->size.h - th) / 2);
evas_move(m->evas, mi->obj_text, m->sel_border.l + mi->x + tx,
evas_object_move(mi->obj_text, m->sel_border.l + mi->x + tx,
m->sel_border.t + mi->y + ty);
}
if (mi->obj_entry)
{
evas_move(m->evas, mi->obj_entry, mi->x, mi->y);
evas_resize(m->evas, mi->obj_entry,
evas_object_move(mi->obj_entry, mi->x, mi->y);
evas_object_resize(mi->obj_entry,
mi->size.w + m->sel_border.l + m->sel_border.r,
mi->size.h + m->sel_border.t + m->sel_border.b);
}
@ -1490,13 +1491,13 @@ e_menu_item_unrealize(E_Menu * m, E_Menu_Item * mi)
IF_FREE(mi->bg_file);
mi->bg_file = NULL;
if (mi->obj_entry)
evas_del_object(m->evas, mi->obj_entry);
evas_object_del(mi->obj_entry);
mi->obj_entry = NULL;
if (mi->obj_text)
evas_del_object(m->evas, mi->obj_text);
evas_object_del(mi->obj_text);
mi->obj_text = NULL;
if (mi->obj_icon)
evas_del_object(m->evas, mi->obj_icon);
evas_object_del(mi->obj_icon);
mi->obj_icon = NULL;
if (mi->state)
ebits_free(mi->state);
@ -1510,6 +1511,7 @@ e_menu_item_unrealize(E_Menu * m, E_Menu_Item * mi)
mi->sep_file = NULL;
D_RETURN;
UN(m);
}
void
@ -1528,29 +1530,32 @@ e_menu_item_realize(E_Menu * m, E_Menu_Item * mi)
{
if (mi->str)
{
mi->obj_text = evas_add_text(m->evas, "borzoib", 8, mi->str);
evas_set_color(m->evas, mi->obj_text, 0, 0, 0, 255);
evas_show(m->evas, mi->obj_text);
evas_set_layer(m->evas, mi->obj_text, 10);
mi->obj_text = evas_object_text_add(m->evas);
evas_object_text_font_set(mi->obj_text, "borzoib", 8);
evas_object_text_text_set(mi->obj_text, mi->str);
evas_object_color_set(mi->obj_text, 0, 0, 0, 255);
evas_object_show(mi->obj_text);
evas_object_layer_set(mi->obj_text, 10);
}
if (mi->icon)
{
mi->obj_icon = evas_add_image_from_file(m->evas, mi->icon);
evas_show(m->evas, mi->obj_icon);
evas_set_layer(m->evas, mi->obj_icon, 10);
mi->obj_icon = evas_object_image_add(m->evas);
evas_object_image_file_set(mi->obj_icon, mi->icon, NULL);
evas_object_show(mi->obj_icon);
evas_object_layer_set(mi->obj_icon, 10);
}
mi->obj_entry = evas_add_rectangle(m->evas);
evas_set_layer(m->evas, mi->obj_entry, 11);
evas_set_color(m->evas, mi->obj_entry, 0, 0, 0, 0);
evas_show(m->evas, mi->obj_entry);
mi->obj_entry = evas_object_rectangle_add(m->evas);
evas_object_layer_set(mi->obj_entry, 11);
evas_object_color_set(mi->obj_entry, 0, 0, 0, 0);
evas_object_show(mi->obj_entry);
tw = 0;
th = 0;
if (mi->obj_text)
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw, &th);
evas_object_geometry_get(mi->obj_text, NULL, NULL, &tw, &th);
iw = 0;
ih = 0;
if (mi->obj_icon)
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
rw = 0;
rh = 0;
if (mi->state)
@ -1561,9 +1566,10 @@ e_menu_item_realize(E_Menu * m, E_Menu_Item * mi)
if (((!mi->scale_icon) && (ih > th)) || ((!mi->str) && (ih > th)))
th = (double)ih;
mi->size.min.h = (int)th;
evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_IN,
/* checkme todo */
evas_object_event_callback_add(mi->obj_entry, EVAS_CALLBACK_MOUSE_IN,
e_menu_item_in_cb, mi);
evas_callback_add(m->evas, mi->obj_entry, CALLBACK_MOUSE_OUT,
evas_object_event_callback_add(mi->obj_entry, EVAS_CALLBACK_MOUSE_OUT,
e_menu_item_out_cb, mi);
e_menu_set_sel(m, mi);
if ((mi->radio) || (mi->check))
@ -1595,17 +1601,17 @@ 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,
evas_obscured_clear(m->evas);
evas_obscured_rectangle_add(m->evas,
-m->current.x - 100000,
-m->current.y - 100000, 200000 + screen_w, 100000);
evas_add_obscured_rect(m->evas,
evas_obscured_rectangle_add(m->evas,
-m->current.x - 100000,
-m->current.y - 100000, 100000, 200000 + screen_h);
evas_add_obscured_rect(m->evas,
evas_obscured_rectangle_add(m->evas,
-m->current.x - 100000,
screen_h - m->current.y, 200000 + screen_w, 100000);
evas_add_obscured_rect(m->evas,
evas_obscured_rectangle_add(m->evas,
screen_w - m->current.x,
-m->current.y - 100000, 100000, 200000 + screen_h);
@ -1615,7 +1621,7 @@ e_menu_obscure_outside_screen(E_Menu * m)
void
e_menu_scroll_all_by(int dx, int dy)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -1638,7 +1644,7 @@ e_menu_scroll_all_by(int dx, int dy)
E_Menu *m;
m = l->data;
evas_event_move(m->evas,
evas_event_feed_mouse_move(m->evas,
mouse_x - m->current.x, mouse_y - m->current.y);
}
}
@ -1696,7 +1702,7 @@ e_menu_update_base(E_Menu * m)
if (m->recalc_entries)
{
Evas_List l;
Evas_List * l;
int max_w, max_h;
int i;
@ -1725,12 +1731,12 @@ e_menu_update_base(E_Menu * m)
tw = 0;
th = 0;
if (mi->obj_text)
evas_get_geometry(m->evas, mi->obj_text, NULL, NULL, &tw,
evas_object_geometry_get(mi->obj_text, NULL, NULL, &tw,
&th);
iw = 0;
ih = 0;
if (mi->obj_icon)
evas_get_image_size(m->evas, mi->obj_icon, &iw, &ih);
evas_object_image_size_get(mi->obj_icon, &iw, &ih);
rw = 0;
rh = 0;
if (mi->state)
@ -1791,7 +1797,7 @@ e_menu_update_base(E_Menu * m)
}
if (m->redo_sel)
{
Evas_List l;
Evas_List * l;
for (l = m->entries; l; l = l->next)
{
@ -1839,12 +1845,14 @@ e_menu_update_base(E_Menu * m)
if (size_changed)
{
ecore_window_resize(m->win.evas, m->current.w, m->current.h);
evas_set_output_size(m->evas, m->current.w, m->current.h);
evas_set_output_viewport(m->evas, 0, 0, m->current.w, m->current.h);
evas_output_size_set(m->evas, m->current.w, m->current.h);
evas_output_viewport_set(m->evas, 0, 0, m->current.w, m->current.h);
if (m->bg)
ebits_resize(m->bg, m->current.w, m->current.h);
}
e_menu_update_shape(m);
D_RETURN;
}
@ -1881,6 +1889,8 @@ e_menu_update_shows(E_Menu * m)
}
}
e_menu_update_shape(m);
D_RETURN;
}
@ -1928,9 +1938,32 @@ e_menu_update_hides(E_Menu * m)
}
}
e_menu_update_shape(m);
D_RETURN;
}
void
e_menu_update_shape(E_Menu *m)
{
Pixmap pmap, mask;
D_ENTER;
pmap = ecore_pixmap_new(m->win.main, m->current.w, m->current.h, 0);
mask = ecore_pixmap_new(m->win.main, m->current.w, m->current.h, 1);
e_evas_get_mask(m->evas, pmap, mask);
ecore_window_set_background_pixmap(m->win.main, pmap);
ecore_window_set_shape_mask(m->win.main, mask);
ecore_window_clear(m->win.main);
ecore_pixmap_free(pmap);
ecore_pixmap_free(mask);
D_RETURN;
}
void
e_menu_update(E_Menu * m)
{

View File

@ -27,9 +27,9 @@ struct _E_Menu
Window main, evas;
}
win;
Evas evas;
Ebits_Object bg;
Evas_List entries;
Evas * evas;
Ebits_Object * bg;
Evas_List * entries;
char *bg_file;
int first_expose;
@ -77,13 +77,13 @@ struct _E_Menu_Item
char *bg_file;
int selected;
Evas_Object obj_entry;
Evas_Object * obj_entry;
char *str;
Evas_Object obj_text;
Evas_Object * obj_text;
char *icon;
Evas_Object obj_icon;
Evas_Object * obj_icon;
int scale_icon;
Ebits_Object state;
@ -149,6 +149,7 @@ void e_menu_update_base(E_Menu * m);
void e_menu_update_finish(E_Menu * m);
void e_menu_update_shows(E_Menu * m);
void e_menu_update_hides(E_Menu * m);
void e_menu_update_shape(E_Menu *m);
void e_menu_update(E_Menu * m);
void e_menu_item_set_icon(E_Menu_Item * mi, char *icon);
void e_menu_item_set_text(E_Menu_Item * mi, char *text);

View File

@ -6,12 +6,9 @@
#include "file.h"
#include "border.h"
#include "observer.h"
#include "actions.h"
#ifdef USE_FERITE
# include "e_ferite.h"
#endif
Evas_List build_menus = NULL;
Evas_List * build_menus = NULL;
static void e_build_menu_cb_exec(E_Menu * m, E_Menu_Item * mi,
void *data);
@ -33,7 +30,8 @@ static void e_build_menu_iconified_borders_changed(E_Observer *
observer,
E_Observee *
observee,
E_Event_Type event);
E_Event_Type event,
void *data);
/* ------------ various callbacks ---------------------- */
static void
@ -73,12 +71,13 @@ e_build_menu_cb_script(E_Menu * m, E_Menu_Item * mi, void *data)
D_ENTER;
#ifdef USE_FERITE
script = data;
e_ferite_run(script);
#else
D("No cookies for you. You will have to install ferite.\n");
#endif
if(strstr(script, "e.shutdown"))
e_act_exit_start(NULL,NULL,NULL,0,0,0,0);
if(strstr(script, "e.restart"))
e_act_restart_start(NULL,NULL,NULL,0,0,0,0);
D_RETURN;
UN(m);
@ -92,7 +91,7 @@ e_build_menu_cb_script(E_Menu * m, E_Menu_Item * mi, void *data)
static void
e_build_menu_unbuild(E_Build_Menu * bm)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -282,7 +281,7 @@ static E_Menu *
e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
{
E_Menu *menu = NULL;
Evas_List l, entries = NULL;
Evas_List *l, *entries = NULL;
D_ENTER;
@ -293,7 +292,7 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
{
FILE *f;
char buf[PATH_MAX];
Evas_List dirlist = NULL;
Evas_List * dirlist = NULL;
/* read .order file */
snprintf(buf, PATH_MAX, "%s/.order", dir);
@ -324,7 +323,7 @@ e_build_menu_gnome_apps_build_dir(E_Build_Menu * bm, char *dir)
/* if it isnt a "dot" file or dir */
if (s[0] != '.')
{
Evas_List ll;
Evas_List * ll;
int have_it;
have_it = 0;
@ -538,7 +537,7 @@ E_Build_Menu *
e_build_menu_new_from_iconified_borders()
{
E_Build_Menu *bm;
Evas_List l;
Evas_List * l;
D_ENTER;
@ -546,10 +545,12 @@ e_build_menu_new_from_iconified_borders()
ZERO(bm, E_Build_Menu, 1);
/* e_observer_init(E_OBSERVER(bm), E_EVENT_BORDER_ICONIFY | E_EVENT_BORDER_UNICONIFY | E_EVENT_BORDER_NEW, e_build_menu_iconified_borders_changed, (E_Cleanup_Func) e_build_menu_cleanup);*/
e_observer_init(E_OBSERVER(bm), E_EVENT_BORDER_ALL,
e_build_menu_iconified_borders_changed,
(E_Notify_Func) e_build_menu_iconified_borders_changed,
(E_Cleanup_Func) e_build_menu_cleanup);
for (l = e_border_get_borders_list(); l; l = l->next)
{
E_Border *b = l->data;
@ -578,7 +579,7 @@ e_build_menu_iconified_borders_rebuild(E_Build_Menu * bm)
static void
e_build_menu_iconified_borders_changed(E_Observer * observer,
E_Observee * observee,
E_Event_Type event)
E_Event_Type event, void *data)
{
E_Build_Menu *bm;
@ -604,13 +605,14 @@ e_build_menu_iconified_borders_changed(E_Observer * observer,
bm->changed = 1;
}
D_RETURN;
UN(data);
}
static E_Menu *
e_build_menu_iconified_borders_build(E_Build_Menu * bm)
{
E_Menu *menu = NULL;
Evas_List l;
Evas_List * l;
D_ENTER;

View File

@ -4,6 +4,7 @@
#include "e.h"
#include "object.h"
#include "observer.h"
#include "menu.h"
typedef struct _E_Build_Menu E_Build_Menu;
@ -16,8 +17,8 @@ struct _E_Build_Menu
E_Menu *menu;
Evas_List menus;
Evas_List commands;
Evas_List * menus;
Evas_List * commands;
int changed;
};

View File

@ -3,7 +3,7 @@
#include "debug.h"
#include "observer.h"
static Evas_List observers;
static Evas_List * observers;
void
e_observer_init(E_Observer * obs, E_Event_Type event,
@ -97,18 +97,18 @@ e_observee_init(E_Observee * obs, E_Cleanup_Func cleanup_func)
void
e_observee_notify_observers(E_Observee * o, E_Event_Type event, void *data)
{
Evas_List obs_list = NULL;
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);
/* check bit mask */
if (obs->event & event)
{
@ -122,7 +122,7 @@ e_observee_notify_observers(E_Observee * o, E_Event_Type event, void *data)
void
e_observee_notify_all_observers(E_Observee * o, E_Event_Type event, void *data)
{
Evas_List obs_list = NULL;
Evas_List * obs_list = NULL;
E_Observer *obs = NULL;
D_ENTER;

View File

@ -18,25 +18,29 @@ typedef enum _e_event_type
E_EVENT_BORDER_NEW = 1 << 0,
E_EVENT_BORDER_DELETE = 1 << 1,
E_EVENT_BORDER_FOCUS_IN = 1 << 2,
E_EVENT_BORDER_ICONIFY = 1 << 3,
E_EVENT_BORDER_UNICONIFY = 1 << 4,
E_EVENT_BORDER_MAXIMIZE = 1 << 5,
E_EVENT_BORDER_UNMAXIMIZE = 1 << 6,
E_EVENT_BORDER_MOVE = 1 << 7,
E_EVENT_BORDER_RESIZE = 1 << 8,
E_EVENT_BORDER_FOCUS_OUT = 1 << 3,
E_EVENT_BORDER_ICONIFY = 1 << 4,
E_EVENT_BORDER_UNICONIFY = 1 << 5,
E_EVENT_BORDER_MAXIMIZE = 1 << 6,
E_EVENT_BORDER_UNMAXIMIZE = 1 << 7,
E_EVENT_BORDER_MOVE = 1 << 8,
E_EVENT_BORDER_RESIZE = 1 << 9,
E_EVENT_BORDER_RAISE = 1 << 10,
E_EVENT_BORDER_LOWER = 1 << 11,
E_EVENT_DESKTOP_NEW = 1 << 10,
E_EVENT_DESKTOP_DELETE = 1 << 11,
E_EVENT_DESKTOP_SWITCH = 1 << 12,
E_EVENT_DESKTOP_NEW = 1 << 12,
E_EVENT_DESKTOP_DELETE = 1 << 13,
E_EVENT_DESKTOP_SWITCH = 1 << 14,
E_EVENT_DESKTOP_SCROLL = 1 << 15,
E_EVENT_FILE_ADD = 1 << 13,
E_EVENT_FILE_CHANGE = 1 << 14,
E_EVENT_FILE_DELETE = 1 << 15,
E_EVENT_FILE_INFO = 1 << 16,
E_EVENT_FILE_ADD = 1 << 16,
E_EVENT_FILE_CHANGE = 1 << 17,
E_EVENT_FILE_DELETE = 1 << 18,
E_EVENT_FILE_INFO = 1 << 19,
E_EVENT_BG_CHANGED = 1 << 17,
E_EVENT_ICB_CHANGED = 1 << 18,
E_EVENT_LAYOUT_CHANGED = 1 << 19,
E_EVENT_BG_CHANGED = 1 << 20,
E_EVENT_ICB_CHANGED = 1 << 21,
E_EVENT_LAYOUT_CHANGED = 1 << 22,
/* meta event types */
E_EVENT_BORDER_ALL = E_EVENT_BORDER_NEW |
@ -60,7 +64,7 @@ struct _e_observer
{
E_Object obj;
Evas_List watched; /* list<E_Observee> */
Evas_List * watched; /* list<E_Observee> */
E_Event_Type event;
E_Notify_Func notify_func;
};
@ -69,7 +73,7 @@ struct _e_observee
{
E_Object obj;
Evas_List observers; /* list<E_Observer> */
Evas_List * observers; /* list<E_Observer> */
};
/**

View File

@ -71,12 +71,9 @@ e_place_manual(E_Border * b, E_Desktop * desk, int *x, int *y)
int mx, my, rx, ry;
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);
move_mode = config_data->window->move_mode;
w = b->current.requested.w;
h = b->current.requested.h;
@ -93,7 +90,8 @@ e_place_manual(E_Border * b, E_Desktop * desk, int *x, int *y)
}
/* get mouse coords */
ecore_pointer_xy(desk->win.main, &mx, &my);
/* ecore_pointer_xy(desk->win.main, &mx, &my); */
ecore_pointer_xy(0, &mx, &my);
rx = mx;
ry = my;
prx = rx;
@ -122,7 +120,7 @@ e_place_smart(E_Border * b, E_Desktop * desk, int *x, int *y)
int w, h;
int a_w = 0, a_h = 0;
int *a_x = NULL, *a_y = NULL;
Evas_List l;
Evas_List * l;
D_ENTER;

View File

@ -14,18 +14,14 @@ e_resist_border(E_Border * b)
/* int ok = 0; */
int dx, dy, d;
int resist_x = 0, resist_y = 0;
Evas_List l, rects = NULL;
Evas_List *l, *rects = NULL;
E_Rect *r;
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);
E_CONFIG_INT_GET(cfg_win_resist, win_resist);
resist = config_data->move->resist;
desk_resist = config_data->move->desk_resist;
win_resist = config_data->move->win_resist;
if (!resist)
{
b->current.x = b->current.requested.x;
@ -55,11 +51,11 @@ rects = evas_list_append(rects, r); \
/* here if need be - ie xinerama middle between screens and panels etc. */
{
if (b->desk->view->iconbar)
evas_list_append(rects,
e_iconbar_get_resist_rect(b->desk->view->iconbar));
if (b->desk->iconbar)
evas_list_append(rects,
e_iconbar_get_resist_rect(b->desk->iconbar));
}
for (l = b->desk->windows; l; l = l->next)
{
E_Border *bd;

View File

@ -144,31 +144,31 @@ e_scrollbar_setup_bits(E_Scrollbar * sb)
sb->h = h;
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Trough",
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
sb);
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Trough",
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow1",
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
sb);
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow1",
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow2",
CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
EVAS_CALLBACK_MOUSE_DOWN, e_sb_base_down_cb,
sb);
ebits_set_classed_bit_callback(sb->base, "Scrollbar_Arrow2",
CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
EVAS_CALLBACK_MOUSE_UP, e_sb_base_up_cb, sb);
}
if (sb->bar)
{
ebits_add_to_evas(sb->bar, sb->evas);
ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar",
CALLBACK_MOUSE_DOWN, e_sb_bar_down_cb,
EVAS_CALLBACK_MOUSE_DOWN, e_sb_bar_down_cb,
sb);
ebits_set_classed_bit_callback(sb->bar, "Scrollbar_Bar",
CALLBACK_MOUSE_UP, e_sb_bar_up_cb, sb);
EVAS_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,
EVAS_CALLBACK_MOUSE_MOVE, e_sb_bar_move_cb,
sb);
}
@ -568,7 +568,7 @@ e_scrollbar_cleanup(E_Scrollbar * sb)
}
void
e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas evas)
e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas * evas)
{
D_ENTER;
@ -692,7 +692,7 @@ e_scrollbar_set_direction(E_Scrollbar * sb, int d)
sb->direction = d;
if (sb->evas)
{
Evas evas;
Evas * evas;
if (sb->base)
ebits_free(sb->base);

View File

@ -25,7 +25,7 @@ struct _E_Scrollbar
double range;
E_View *view;
Evas evas;
Evas * evas;
Ebits_Object bar;
Ebits_Object base;
@ -59,7 +59,7 @@ struct _E_Scrollbar
};
E_Scrollbar *e_scrollbar_new(E_View * v);
void e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas evas);
void e_scrollbar_add_to_evas(E_Scrollbar * sb, Evas * evas);
void e_scrollbar_show(E_Scrollbar * sb);
void e_scrollbar_hide(E_Scrollbar * sb);
void e_scrollbar_raise(E_Scrollbar * sb);

View File

@ -3,7 +3,7 @@
#include "util.h"
E_Text *
e_text_new(Evas evas, char *text, char *class)
e_text_new(Evas * evas, char *text, char *class)
{
E_Text *t;
@ -21,32 +21,49 @@ e_text_new(Evas evas, char *text, char *class)
else
t->text = strdup("");
t->evas = evas;
t->obj.o1 = evas_add_text(t->evas, "borzoib", 8, t->text);
t->obj.o2 = evas_add_text(t->evas, "borzoib", 8, t->text);
t->obj.o3 = evas_add_text(t->evas, "borzoib", 8, t->text);
t->obj.o4 = evas_add_text(t->evas, "borzoib", 8, t->text);
t->obj.text = evas_add_text(t->evas, "borzoib", 8, t->text);
evas_set_pass_events(t->evas, t->obj.o1, 1);
evas_set_pass_events(t->evas, t->obj.o2, 1);
evas_set_pass_events(t->evas, t->obj.o3, 1);
evas_set_pass_events(t->evas, t->obj.o4, 1);
evas_set_pass_events(t->evas, t->obj.text, 1);
evas_set_color(t->evas, t->obj.o1, 0, 0, 0, 255);
evas_set_color(t->evas, t->obj.o2, 0, 0, 0, 255);
evas_set_color(t->evas, t->obj.o3, 0, 0, 0, 255);
evas_set_color(t->evas, t->obj.o4, 0, 0, 0, 255);
evas_set_color(t->evas, t->obj.text, 255, 255, 255, 255);
evas_move(t->evas, t->obj.o1, t->x + 1, t->y);
evas_move(t->evas, t->obj.o2, t->x, t->y + 1);
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);
t->obj.o1 = evas_object_text_add(t->evas);
evas_object_text_font_set(t->obj.o1, "borzoib", 8);
evas_object_text_text_set(t->obj.o1, t->text);
t->obj.o2 = evas_object_text_add(t->evas);
evas_object_text_font_set(t->obj.o2, "borzoib", 8);
evas_object_text_text_set(t->obj.o2, t->text);
t->obj.o3 = evas_object_text_add(t->evas);
evas_object_text_font_set(t->obj.o3, "borzoib", 8);
evas_object_text_text_set(t->obj.o3, t->text);
t->obj.o4 = evas_object_text_add(t->evas);
evas_object_text_font_set(t->obj.o4, "borzoib", 8);
evas_object_text_text_set(t->obj.o4, t->text);
t->obj.text = evas_object_text_add(t->evas);
evas_object_text_font_set(t->obj.text, "borzoib", 8);
evas_object_text_text_set(t->obj.text, t->text);
evas_object_pass_events_set(t->obj.o1, 1);
evas_object_pass_events_set(t->obj.o2, 1);
evas_object_pass_events_set(t->obj.o3, 1);
evas_object_pass_events_set(t->obj.o4, 1);
evas_object_pass_events_set(t->obj.text, 1);
evas_object_color_set(t->obj.o1, 0, 0, 0, 255);
evas_object_color_set(t->obj.o2, 0, 0, 0, 255);
evas_object_color_set(t->obj.o3, 0, 0, 0, 255);
evas_object_color_set(t->obj.o4, 0, 0, 0, 255);
evas_object_color_set(t->obj.text, 255, 255, 255, 255);
evas_object_move(t->obj.o1, t->x + 1, t->y);
evas_object_move(t->obj.o2, t->x, t->y + 1);
evas_object_move(t->obj.o3, t->x + 2, t->y + 1);
evas_object_move(t->obj.o4, t->x + 1, t->y + 2);
evas_object_move(t->obj.text, t->x + 1, t->y + 1);
t->color.r = 255;
t->color.g = 255;
t->color.b = 255;
t->color.a = 255;
t->w = evas_get_text_width(t->evas, t->obj.text) + 2;
t->h = evas_get_text_height(t->evas, t->obj.text) + 2;
evas_object_geometry_get(t->obj.text, NULL, NULL, &t->w, &t->h);
t->w += 2;
t->h += 2;
t->min.w = t->w + 2;
t->min.h = t->h + 2;
t->max.w = t->w + 2;
@ -66,11 +83,11 @@ e_text_free(E_Text * t)
if ((t->evas) && (t->obj.text))
{
evas_del_object(t->evas, t->obj.o1);
evas_del_object(t->evas, t->obj.o2);
evas_del_object(t->evas, t->obj.o3);
evas_del_object(t->evas, t->obj.o4);
evas_del_object(t->evas, t->obj.text);
evas_object_del(t->obj.o1);
evas_object_del(t->obj.o2);
evas_object_del(t->obj.o3);
evas_object_del(t->obj.o4);
evas_object_del(t->obj.text);
}
FREE(t);
@ -88,13 +105,15 @@ e_text_set_text(E_Text * t, char *text)
D_RETURN;
FREE(t->text);
t->text = strdup(text);
evas_set_text(t->evas, t->obj.o1, t->text);
evas_set_text(t->evas, t->obj.o2, t->text);
evas_set_text(t->evas, t->obj.o3, t->text);
evas_set_text(t->evas, t->obj.o4, t->text);
evas_set_text(t->evas, t->obj.text, t->text);
t->w = evas_get_text_width(t->evas, t->obj.text) + 2;
t->h = evas_get_text_height(t->evas, t->obj.text) + 2;
evas_object_text_text_set(t->obj.o1, t->text);
evas_object_text_text_set(t->obj.o2, t->text);
evas_object_text_text_set(t->obj.o3, t->text);
evas_object_text_text_set(t->obj.o4, t->text);
evas_object_text_text_set(t->obj.text, t->text);
evas_object_geometry_get(t->obj.text, NULL, NULL, &t->w, &t->h);
t->w += 2;
t->h += 2;
t->min.w = t->w + 2;
t->min.h = t->h + 2;
t->max.w = t->w + 2;
@ -111,25 +130,25 @@ e_text_set_layer(E_Text * t, int l)
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);
evas_object_layer_set(t->obj.o1, t->layer);
evas_object_layer_set(t->obj.o2, t->layer);
evas_object_layer_set(t->obj.o3, t->layer);
evas_object_layer_set(t->obj.o4, t->layer);
evas_object_layer_set(t->obj.text, t->layer);
D_RETURN;
}
void
e_text_set_clip(E_Text * t, Evas_Object clip)
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);
evas_object_clip_set(t->obj.o1, clip);
evas_object_clip_set(t->obj.o2, clip);
evas_object_clip_set(t->obj.o3, clip);
evas_object_clip_set(t->obj.o4, clip);
evas_object_clip_set(t->obj.text, clip);
D_RETURN;
}
@ -139,11 +158,11 @@ 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);
evas_object_clip_unset(t->obj.o1);
evas_object_clip_unset(t->obj.o2);
evas_object_clip_unset(t->obj.o3);
evas_object_clip_unset(t->obj.o4);
evas_object_clip_unset(t->obj.text);
D_RETURN;
}
@ -153,11 +172,11 @@ 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);
evas_object_raise(t->obj.o1);
evas_object_raise(t->obj.o2);
evas_object_raise(t->obj.o3);
evas_object_raise(t->obj.o4);
evas_object_raise(t->obj.text);
D_RETURN;
}
@ -167,11 +186,11 @@ 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);
evas_object_lower(t->obj.text);
evas_object_lower(t->obj.o4);
evas_object_lower(t->obj.o3);
evas_object_lower(t->obj.o2);
evas_object_lower(t->obj.o1);
D_RETURN;
}
@ -184,11 +203,11 @@ e_text_show(E_Text * t)
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);
evas_object_show(t->obj.o1);
evas_object_show(t->obj.o2);
evas_object_show(t->obj.o3);
evas_object_show(t->obj.o4);
evas_object_show(t->obj.text);
D_RETURN;
}
@ -201,11 +220,11 @@ e_text_hide(E_Text * t)
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);
evas_object_hide(t->obj.o1);
evas_object_hide(t->obj.o2);
evas_object_hide(t->obj.o3);
evas_object_hide(t->obj.o4);
evas_object_hide(t->obj.text);
D_RETURN;
}
@ -222,7 +241,7 @@ e_text_set_color(E_Text * t, int r, int g, int b, int a)
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,
evas_object_color_set(t->obj.text, t->color.r, t->color.g, t->color.b,
t->color.a);
D_RETURN;
@ -237,11 +256,11 @@ e_text_move(E_Text * t, double x, double y)
D_RETURN;
t->x = x;
t->y = y;
evas_move(t->evas, t->obj.o1, t->x + 1, t->y);
evas_move(t->evas, t->obj.o2, t->x, t->y + 1);
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);
evas_object_move(t->obj.o1, t->x + 1, t->y);
evas_object_move(t->obj.o2, t->x, t->y + 1);
evas_object_move(t->obj.o3, t->x + 2, t->y + 1);
evas_object_move(t->obj.o4, t->x + 1, t->y + 2);
evas_object_move(t->obj.text, t->x + 1, t->y + 1);
D_RETURN;
}

View File

@ -25,23 +25,23 @@ struct _E_Text
color;
int layer;
Evas evas;
Evas * evas;
struct
{
Evas_Object text;
Evas_Object o1;
Evas_Object o2;
Evas_Object o3;
Evas_Object o4;
Evas_Object * text;
Evas_Object * o1;
Evas_Object * o2;
Evas_Object * o3;
Evas_Object * o4;
}
obj;
};
E_Text *e_text_new(Evas evas, char *text, char *class);
E_Text *e_text_new(Evas * evas, char *text, char *class);
void e_text_free(E_Text * t);
void e_text_set_text(E_Text * t, char *text);
void e_text_set_layer(E_Text * t, int l);
void e_text_set_clip(E_Text * t, Evas_Object clip);
void e_text_set_clip(E_Text * t, Evas_Object * clip);
void e_text_unset_clip(E_Text * t);
void e_text_raise(E_Text * t);
void e_text_lower(E_Text * t);

View File

@ -1,5 +1,7 @@
#include "debug.h"
#include "util.h"
#include "Evas.h"
#include "Evas_Engine_Software_X11.h"
void
e_util_set_env(char *variable, char *content)
@ -102,3 +104,99 @@ e_util_de_url_and_verify(const char *fi)
D_RETURN_(wk);
}
Evas *
e_evas_new_all(Display *disp, Window parent_window,
int x, int y, int win_w, int win_h,
char *font_dir)
{
Evas *e;
e = evas_new();
evas_output_method_set(e, evas_render_method_lookup("software_x11"));
evas_output_size_set(e, win_w, win_h);
evas_output_viewport_set(e, 0, 0, win_w, win_h);
{
Evas_Engine_Info_Software_X11 *einfo;
XSetWindowAttributes att;
Window window;
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(e);
/* the following is specific to the engine */
einfo->info.display = disp;
einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
einfo->info.colormap = DefaultColormap(disp, DefaultScreen(disp));
att.background_pixmap = None;
att.colormap = /*colormap*/ DefaultColormap(disp, DefaultScreen(disp));
att.border_pixel = 0;
att.event_mask = 0;
window = XCreateWindow(disp,
parent_window,
x, y, win_w, win_h, 0,
DefaultDepth(disp, DefaultScreen(disp)),
/*imlib_get_visual_depth(display, visual),*/
InputOutput,
einfo->info.visual,
CWColormap | CWBorderPixel | CWEventMask | CWBackPixmap,
&att);
einfo->info.drawable = window /*win*/;
einfo->info.depth = DefaultDepth(disp, DefaultScreen(disp));
einfo->info.rotation = 0;
einfo->info.debug = 0;
evas_engine_info_set(e, (Evas_Engine_Info *) einfo);
}
evas_object_image_cache_set(e, 0);
evas_object_font_cache_set(e, 0);
evas_object_font_path_append(e, font_dir);
return e;
}
Evas_List *
e_evas_get_mask(Evas *evas, Pixmap pmap, Pixmap mask)
{
int w, h;
Pixmap old_pmap, old_mask;
Evas_List *updates;
Evas_Engine_Info_Software_X11 *info;
info = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
old_pmap = info->info.drawable;
old_mask = info->info.mask;
info->info.drawable = pmap;
info->info.mask = mask;
evas_engine_info_set(evas, (Evas_Engine_Info *) info);
evas_output_size_get(evas, &w, &h);
evas_damage_rectangle_add(evas, 0, 0, w, h);
evas_render(evas);
evas_damage_rectangle_add(evas, 0, 0, w, h);
info->info.drawable = old_pmap;
info->info.mask = old_mask;
evas_engine_info_set(evas, (Evas_Engine_Info *) info);
return updates;
}
Window
e_evas_get_window(Evas *evas)
{
Window win;
Evas_Engine_Info_Software_X11 *einfo;
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
/* the following is specific to the engine */
win = einfo->info.drawable;
return win;
}

View File

@ -8,6 +8,13 @@ char *e_util_get_user_home(void);
void *e_util_memdup(void *data, int size);
int e_util_glob_matches(char *str, char *glob);
char *e_util_de_url_and_verify(const char *fi);
Window e_evas_get_window(Evas *evas);
Evas_List *e_evas_get_mask(Evas *evas, Pixmap pmap, Pixmap mask);
Evas *e_evas_new_all(Display *disp, Window win,
int x, int y, int win_w, int win_h,
char *font_dir);
#define RENDER_METHOD_ALPHA_SOFTWARE 0
#define e_strdup(__dest, __var) \
{ \
@ -26,5 +33,15 @@ if (__dest) strcpy(__dest, __var); \
#define SPANS_COMMON(x1, w1, x2, w2) \
(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
#define UN(_blah) _blah = 0
#define MIN(v1, v2) (v1 < v2 ? v1 : v2)
#define STRNCPY(d, s, l) \
do \
{ \
int __c; \
for (__c = 0; (__c < (l)) && ((d)[__c] = (s)[__c]); __c++); \
(d)[(l) - 1] = 0; \
} \
while (0)
#endif

View File

@ -15,6 +15,7 @@
#include "e_view_machine.h"
#include "e_file.h"
#include "globals.h"
#include <Ebg.h>
static Ecore_Event *current_ev = NULL;
@ -23,12 +24,12 @@ static int dnd_num_files = 0;
static E_dnd_enum dnd_pending_mode;
static E_View *v_dnd_source;
static void e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b,
int _x, int _y);
static void e_bg_down_cb(void *_data, Evas * _e, Evas_Object * _o,
void *event_info);
static void e_bg_up_cb(void *_data, Evas * _e, Evas_Object * _o,
void *event_info);
static void e_bg_move_cb(void *_data, Evas * _e, Evas_Object * _o,
void *event_info);
static void e_idle(void *data);
static void e_wheel(Ecore_Event * ev);
static void e_key_down(Ecore_Event * ev);
@ -68,7 +69,7 @@ static void
e_view_write_icon_xy_timeout(int val, void *data)
{
E_View *v;
Evas_List l;
Evas_List * l;
E_Icon *ic;
double t_in;
@ -117,120 +118,106 @@ e_view_selection_update(E_View * v)
if ((v->select.on) && (!v->select.obj.middle))
{
Evas_Gradient grad;
/* create select objects */
v->select.obj.middle = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.middle,
v->select.obj.middle = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.middle,
v->select.config.middle.r,
v->select.config.middle.g,
v->select.config.middle.b, v->select.config.middle.a);
evas_set_layer(v->evas, v->select.obj.middle, 300);
v->select.obj.edge_l = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.edge_l,
evas_object_layer_set(v->select.obj.middle, 300);
v->select.obj.edge_l = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.edge_l,
v->select.config.edge_l.r,
v->select.config.edge_l.g,
v->select.config.edge_l.b, v->select.config.edge_l.a);
evas_set_layer(v->evas, v->select.obj.edge_l, 300);
v->select.obj.edge_r = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.edge_r,
evas_object_layer_set(v->select.obj.edge_l, 300);
v->select.obj.edge_r = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.edge_r,
v->select.config.edge_r.r,
v->select.config.edge_r.g,
v->select.config.edge_r.b, v->select.config.edge_r.a);
evas_set_layer(v->evas, v->select.obj.edge_r, 300);
v->select.obj.edge_t = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.edge_t,
evas_object_layer_set(v->select.obj.edge_r, 300);
v->select.obj.edge_t = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.edge_t,
v->select.config.edge_t.r,
v->select.config.edge_t.g,
v->select.config.edge_t.b, v->select.config.edge_t.a);
evas_set_layer(v->evas, v->select.obj.edge_t, 300);
v->select.obj.edge_b = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.edge_b,
evas_object_layer_set(v->select.obj.edge_t, 300);
v->select.obj.edge_b = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.edge_b,
v->select.config.edge_b.r,
v->select.config.edge_b.g,
v->select.config.edge_b.b, v->select.config.edge_b.a);
evas_set_layer(v->evas, v->select.obj.edge_b, 300);
evas_object_layer_set(v->select.obj.edge_b, 300);
v->select.obj.grad_l = evas_add_gradient_box(v->evas);
evas_set_angle(v->evas, v->select.obj.grad_l, 270);
grad = evas_gradient_new();
evas_gradient_add_color(grad,
v->select.obj.grad_l = evas_object_gradient_add(v->evas);
evas_object_gradient_angle_set(v->select.obj.grad_l, 270);
evas_object_gradient_color_add(v->select.obj.grad_l,
v->select.config.grad_l.r,
v->select.config.grad_l.g,
v->select.config.grad_l.b,
v->select.config.grad_l.a, 8);
evas_gradient_add_color(grad,
evas_object_gradient_color_add(v->select.obj.grad_l,
v->select.config.grad_l.r,
v->select.config.grad_l.g,
v->select.config.grad_l.b, 0, 8);
evas_set_gradient(v->evas, v->select.obj.grad_l, grad);
evas_gradient_free(grad);
evas_set_layer(v->evas, v->select.obj.grad_l, 300);
v->select.obj.grad_r = evas_add_gradient_box(v->evas);
evas_set_angle(v->evas, v->select.obj.grad_r, 90);
grad = evas_gradient_new();
evas_gradient_add_color(grad,
evas_object_layer_set(v->select.obj.grad_l, 300);
v->select.obj.grad_r = evas_object_gradient_add(v->evas);
evas_object_gradient_angle_set(v->select.obj.grad_r, 90);
evas_object_gradient_color_add(v->select.obj.grad_r,
v->select.config.grad_r.r,
v->select.config.grad_r.g,
v->select.config.grad_r.b,
v->select.config.grad_r.a, 8);
evas_gradient_add_color(grad,
evas_object_gradient_color_add(v->select.obj.grad_r,
v->select.config.grad_r.r,
v->select.config.grad_r.g,
v->select.config.grad_r.b, 0, 8);
evas_set_gradient(v->evas, v->select.obj.grad_r, grad);
evas_gradient_free(grad);
evas_set_layer(v->evas, v->select.obj.grad_r, 300);
v->select.obj.grad_t = evas_add_gradient_box(v->evas);
evas_set_angle(v->evas, v->select.obj.grad_t, 0);
grad = evas_gradient_new();
evas_gradient_add_color(grad,
evas_object_layer_set(v->select.obj.grad_r, 300);
v->select.obj.grad_t = evas_object_gradient_add(v->evas);
evas_object_gradient_angle_set(v->select.obj.grad_t, 0);
evas_object_gradient_color_add(v->select.obj.grad_t,
v->select.config.grad_t.r,
v->select.config.grad_t.g,
v->select.config.grad_t.b,
v->select.config.grad_t.a, 8);
evas_gradient_add_color(grad,
evas_object_gradient_color_add(v->select.obj.grad_t,
v->select.config.grad_t.r,
v->select.config.grad_t.g,
v->select.config.grad_t.b, 0, 8);
evas_set_gradient(v->evas, v->select.obj.grad_t, grad);
evas_gradient_free(grad);
evas_set_layer(v->evas, v->select.obj.grad_t, 300);
v->select.obj.grad_b = evas_add_gradient_box(v->evas);
evas_set_angle(v->evas, v->select.obj.grad_b, 180);
grad = evas_gradient_new();
evas_gradient_add_color(grad,
evas_object_layer_set(v->select.obj.grad_t, 300);
v->select.obj.grad_b = evas_object_gradient_add(v->evas);
evas_object_gradient_angle_set(v->select.obj.grad_b, 180);
evas_object_gradient_color_add(v->select.obj.grad_b,
v->select.config.grad_b.r,
v->select.config.grad_b.g,
v->select.config.grad_b.b,
v->select.config.grad_b.a, 8);
evas_gradient_add_color(grad,
evas_object_gradient_color_add(v->select.obj.grad_b,
v->select.config.grad_b.r,
v->select.config.grad_b.g,
v->select.config.grad_b.b, 0, 8);
evas_set_gradient(v->evas, v->select.obj.grad_b, grad);
evas_gradient_free(grad);
evas_set_layer(v->evas, v->select.obj.grad_b, 300);
v->select.obj.clip = evas_add_rectangle(v->evas);
evas_set_color(v->evas, v->select.obj.clip, 255, 255, 255, 255);
evas_set_clip(v->evas, v->select.obj.grad_l, v->select.obj.clip);
evas_set_clip(v->evas, v->select.obj.grad_r, v->select.obj.clip);
evas_set_clip(v->evas, v->select.obj.grad_t, v->select.obj.clip);
evas_set_clip(v->evas, v->select.obj.grad_b, v->select.obj.clip);
evas_object_layer_set(v->select.obj.grad_b, 300);
v->select.obj.clip = evas_object_rectangle_add(v->evas);
evas_object_color_set(v->select.obj.clip, 255, 255, 255, 255);
evas_object_clip_set(v->select.obj.grad_l, v->select.obj.clip);
evas_object_clip_set(v->select.obj.grad_r, v->select.obj.clip);
evas_object_clip_set(v->select.obj.grad_t, v->select.obj.clip);
evas_object_clip_set(v->select.obj.grad_b, v->select.obj.clip);
}
if ((!v->select.on) && (v->select.obj.middle))
{
/* destroy select objects */
evas_del_object(v->evas, v->select.obj.middle);
evas_del_object(v->evas, v->select.obj.edge_l);
evas_del_object(v->evas, v->select.obj.edge_r);
evas_del_object(v->evas, v->select.obj.edge_t);
evas_del_object(v->evas, v->select.obj.edge_b);
evas_del_object(v->evas, v->select.obj.grad_l);
evas_del_object(v->evas, v->select.obj.grad_r);
evas_del_object(v->evas, v->select.obj.grad_t);
evas_del_object(v->evas, v->select.obj.grad_b);
evas_del_object(v->evas, v->select.obj.clip);
evas_object_del(v->select.obj.middle);
evas_object_del(v->select.obj.edge_l);
evas_object_del(v->select.obj.edge_r);
evas_object_del(v->select.obj.edge_t);
evas_object_del(v->select.obj.edge_b);
evas_object_del(v->select.obj.grad_l);
evas_object_del(v->select.obj.grad_r);
evas_object_del(v->select.obj.grad_t);
evas_object_del(v->select.obj.grad_b);
evas_object_del(v->select.obj.clip);
v->select.obj.middle = NULL;
v->changed = 1;
D_RETURN;
@ -239,52 +226,52 @@ e_view_selection_update(E_View * v)
D_RETURN;
/* move & resize select objects */
{
evas_move(v->evas, v->select.obj.edge_l, v->select.x, v->select.y + 1);
evas_resize(v->evas, v->select.obj.edge_l, 1, v->select.h - 1);
evas_move(v->evas, v->select.obj.edge_r, v->select.x + v->select.w - 1,
evas_object_move(v->select.obj.edge_l, v->select.x, v->select.y + 1);
evas_object_resize(v->select.obj.edge_l, 1, v->select.h - 1);
evas_object_move(v->select.obj.edge_r, v->select.x + v->select.w - 1,
v->select.y);
evas_resize(v->evas, v->select.obj.edge_r, 1, v->select.h - 1);
evas_move(v->evas, v->select.obj.edge_t, v->select.x, v->select.y);
evas_resize(v->evas, v->select.obj.edge_t, v->select.w - 1, 1);
evas_move(v->evas, v->select.obj.edge_b, v->select.x + 1,
evas_object_resize(v->select.obj.edge_r, 1, v->select.h - 1);
evas_object_move(v->select.obj.edge_t, v->select.x, v->select.y);
evas_object_resize(v->select.obj.edge_t, v->select.w - 1, 1);
evas_object_move(v->select.obj.edge_b, v->select.x + 1,
v->select.y + v->select.h - 1);
evas_resize(v->evas, v->select.obj.edge_b, v->select.w - 1, 1);
evas_move(v->evas, v->select.obj.middle, v->select.x + 1,
evas_object_resize(v->select.obj.edge_b, v->select.w - 1, 1);
evas_object_move(v->select.obj.middle, v->select.x + 1,
v->select.y + 1);
evas_resize(v->evas, v->select.obj.middle, v->select.w - 1 - 1,
evas_object_resize(v->select.obj.middle, v->select.w - 1 - 1,
v->select.h - 1 - 1);
evas_move(v->evas, v->select.obj.grad_l, v->select.x + 1,
evas_object_move(v->select.obj.grad_l, v->select.x + 1,
v->select.y + 1);
evas_resize(v->evas, v->select.obj.grad_l, v->select.config.grad_size.l,
evas_object_resize(v->select.obj.grad_l, v->select.config.grad_size.l,
v->select.h - 1 - 1);
evas_move(v->evas, v->select.obj.grad_r,
evas_object_move(v->select.obj.grad_r,
v->select.x + v->select.w - 1 - v->select.config.grad_size.r,
v->select.y + 1);
evas_resize(v->evas, v->select.obj.grad_r, v->select.config.grad_size.r,
evas_object_resize(v->select.obj.grad_r, v->select.config.grad_size.r,
v->select.h - 1 - 1);
evas_move(v->evas, v->select.obj.grad_t, v->select.x + 1,
evas_object_move(v->select.obj.grad_t, v->select.x + 1,
v->select.y + 1);
evas_resize(v->evas, v->select.obj.grad_t, v->select.w - 1 - 1,
evas_object_resize(v->select.obj.grad_t, v->select.w - 1 - 1,
v->select.config.grad_size.t);
evas_move(v->evas, v->select.obj.grad_b, v->select.x + 1,
evas_object_move(v->select.obj.grad_b, v->select.x + 1,
v->select.y + v->select.h - 1 - v->select.config.grad_size.b);
evas_resize(v->evas, v->select.obj.grad_b, v->select.w - 1 - 1,
evas_object_resize(v->select.obj.grad_b, v->select.w - 1 - 1,
v->select.config.grad_size.b);
evas_move(v->evas, v->select.obj.clip, v->select.x + 1, v->select.y + 1);
evas_resize(v->evas, v->select.obj.clip, v->select.w - 1 - 1,
evas_object_move(v->select.obj.clip, v->select.x + 1, v->select.y + 1);
evas_object_resize(v->select.obj.clip, v->select.w - 1 - 1,
v->select.h - 1 - 1);
}
evas_show(v->evas, v->select.obj.middle);
evas_show(v->evas, v->select.obj.edge_l);
evas_show(v->evas, v->select.obj.edge_r);
evas_show(v->evas, v->select.obj.edge_t);
evas_show(v->evas, v->select.obj.edge_b);
evas_show(v->evas, v->select.obj.grad_l);
evas_show(v->evas, v->select.obj.grad_r);
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);
evas_object_show(v->select.obj.middle);
evas_object_show(v->select.obj.edge_l);
evas_object_show(v->select.obj.edge_r);
evas_object_show(v->select.obj.edge_t);
evas_object_show(v->select.obj.edge_b);
evas_object_show(v->select.obj.grad_l);
evas_object_show(v->select.obj.grad_r);
evas_object_show(v->select.obj.grad_t);
evas_object_show(v->select.obj.grad_b);
evas_object_show(v->select.obj.clip);
v->changed = 1;
D_RETURN;
}
@ -318,10 +305,11 @@ e_view_scrollbar_h_change_cb(void *_data, E_Scrollbar * sb, double val)
}
static void
e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_bg_down_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
Ecore_Event_Mouse_Down *ev;
E_View *v;
Evas_Event_Mouse_Down *ev_info = event_info;
D_ENTER;
@ -336,35 +324,35 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_view_deselect_all(v);
}
if (_b == 1)
if (ev_info->button == 1)
{
v->select.down.x = _x;
v->select.down.y = _y;
v->select.down.x = ev_info->output.x;
v->select.down.y = ev_info->output.y;
v->select.on = 1;
if (_x < v->select.down.x)
if (ev_info->output.x < v->select.down.x)
{
v->select.x = _x;
v->select.x = ev_info->output.x;
v->select.w = v->select.down.x - v->select.x + 1;
}
else
{
v->select.x = v->select.down.x;
v->select.w = _x - v->select.down.x + 1;
v->select.w = ev_info->output.x - v->select.down.x + 1;
}
if (_y < v->select.down.y)
if (ev_info->output.y < v->select.down.y)
{
v->select.y = _y;
v->select.y = ev_info->output.y;
v->select.h = v->select.down.y - v->select.y + 1;
}
else
{
v->select.y = v->select.down.y;
v->select.h = _y - v->select.down.y + 1;
v->select.h = ev_info->output.y - v->select.down.y + 1;
}
e_view_selection_update(v);
}
if (_b == 2 && ev->double_click)
if (ev_info->button == 2 && ev->double_click)
ecore_event_loop_quit();
D_RETURN;
@ -373,11 +361,12 @@ e_bg_down_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
static void
e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_bg_up_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
Ecore_Event_Mouse_Up *ev;
E_View *v;
int dx, dy;
Evas_Event_Mouse_Up *ev_info = event_info;
D_ENTER;
@ -390,20 +379,20 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
if (v->select.on)
{
dx = v->select.down.x - _x;
dy = v->select.down.y - _y;
dx = v->select.down.x - ev_info->output.x;
dy = v->select.down.y - ev_info->output.y;
if (dx < 0)
dx = -dx;
if (dy < 0)
dy = -dy;
if (_b == 1)
if (ev_info->button == 1)
v->select.on = 0;
e_view_selection_update(v);
}
if ((_b == 1) && ((dx > 3) || (dy > 3)))
if ((ev_info->button == 1) && ((dx > 3) || (dy > 3)))
{
Evas_List l;
Evas_List * l;
for (l = v->icons; l; l = l->next)
{
@ -423,7 +412,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
else if (v->select.last_count == 0)
{
if (_b == 1)
if (ev_info->button == 1)
{
if (!(ev->mods & (multi_select_mod | range_select_mod)))
{
@ -450,7 +439,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
}
}
else if (_b == 2)
else if (ev_info->button == 2)
{
#if 1
static E_Build_Menu *buildmenu = NULL;
@ -479,7 +468,7 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
#endif
}
else if (_b == 3)
else if (ev_info->button == 3)
{
static E_Build_Menu *buildmenu = NULL;
@ -498,10 +487,10 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
}
}
if (_b == 1)
if (ev_info->button == 1)
{
v->select.x = _x;
v->select.y = _y;
v->select.x = ev_info->output.x;
v->select.y = ev_info->output.y;
}
D_RETURN;
@ -510,10 +499,11 @@ e_bg_up_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
}
static void
e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
e_bg_move_cb(void *_data, Evas * _e, Evas_Object * _o, void *event_info)
{
Ecore_Event_Mouse_Down *ev;
E_View *v;
Evas_Event_Mouse_Move *ev_info = event_info;
D_ENTER;
@ -523,25 +513,25 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
v = _data;
if (v->select.on)
{
if (_x < v->select.down.x)
if (ev_info->cur.output.x < v->select.down.x)
{
v->select.x = _x;
v->select.x = ev_info->cur.output.x;
v->select.w = v->select.down.x - v->select.x + 1;
}
else
{
v->select.x = v->select.down.x;
v->select.w = _x - v->select.down.x + 1;
v->select.w = ev_info->cur.output.x - v->select.down.x + 1;
}
if (_y < v->select.down.y)
if (ev_info->cur.output.y < v->select.down.y)
{
v->select.y = _y;
v->select.y = ev_info->cur.output.y;
v->select.h = v->select.down.y - v->select.y + 1;
}
else
{
v->select.y = v->select.down.y;
v->select.h = _y - v->select.down.y + 1;
v->select.h = ev_info->cur.output.y - v->select.down.y + 1;
}
e_view_selection_update(v);
@ -550,13 +540,12 @@ e_bg_move_cb(void *_data, Evas _e, Evas_Object _o, int _b, int _x, int _y)
D_RETURN;
UN(_e);
UN(_o);
UN(_b);
}
void
e_view_deselect_all(E_View * v)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -574,7 +563,7 @@ e_view_deselect_all(E_View * v)
void
e_view_deselect_all_except(E_Icon * not_ic)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -594,7 +583,7 @@ void
e_view_icons_get_extents(E_View * v, int *min_x, int *min_y, int *max_x,
int *max_y)
{
Evas_List l;
Evas_List * l;
int x1, x2, y1, y2;
D_ENTER;
@ -660,7 +649,7 @@ e_view_icons_get_extents(E_View * v, int *min_x, int *min_y, int *max_x,
void
e_view_icons_apply_xy(E_View * v)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -824,7 +813,7 @@ e_view_get_position_percentage(E_View * v, double *vx, double *vy)
static void
e_idle(void *data)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -943,20 +932,22 @@ e_configure(Ecore_Event * ev)
ecore_window_resize(v->win.main, v->size.w, v->size.h);
if (v->options.back_pixmap)
{
Evas_Engine_Info_Software_X11 *info;
v->pmap =
ecore_pixmap_new(v->win.main, v->size.w, v->size.h,
0);
evas_set_output(v->evas, ecore_display_get(), v->pmap,
evas_get_visual(v->evas),
evas_get_colormap(v->evas));
info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(v->evas);
info->info.drawable = v->pmap;
evas_engine_info_set(v->evas, (Evas_Engine_Info *)info);
ecore_window_set_background_pixmap(v->win.main, v->pmap);
ecore_window_clear(v->win.main);
}
if (v->bg)
e_bg_resize(v->bg, v->size.w, v->size.h);
D("evas_set_output_viewpor(%p)\n", v->evas);
evas_set_output_viewport(v->evas, 0, 0, v->size.w, v->size.h);
evas_set_output_size(v->evas, v->size.w, v->size.h);
evas_output_viewport_set(v->evas, 0, 0, v->size.w, v->size.h);
evas_output_size_set(v->evas, v->size.w, v->size.h);
e_view_scroll_to(v, v->scroll.x, v->scroll.y);
e_view_arrange(v);
e_view_layout_update(v->layout);
@ -1238,12 +1229,10 @@ e_mouse_down(Ecore_Event * ev)
{
int focus_mode;
E_CFG_INT(cfg_focus_mode, "settings", "/focus/mode", 0);
E_CONFIG_INT_GET(cfg_focus_mode, focus_mode);
focus_mode = config_data->window->focus_mode;
if (focus_mode == 2)
ecore_focus_to_window(v->win.base);
evas_event_button_down(v->evas, e->x, e->y, e->button);
evas_event_feed_mouse_down(v->evas, e->button);
current_ev = NULL;
D_RETURN;
}
@ -1267,7 +1256,7 @@ e_mouse_up(Ecore_Event * ev)
{
if ((v = e_view_machine_get_view_by_main_window(e->win)))
{
evas_event_button_up(v->evas, e->x, e->y, e->button);
evas_event_feed_mouse_up(v->evas, e->button);
current_ev = NULL;
D_RETURN;
}
@ -1291,7 +1280,7 @@ e_mouse_move(Ecore_Event * ev)
{
if ((v = e_view_machine_get_view_by_main_window(e->win)))
{
evas_event_move(v->evas, e->x, e->y);
evas_event_feed_mouse_move(v->evas, e->x, e->y);
current_ev = NULL;
D_RETURN;
}
@ -1317,7 +1306,7 @@ e_mouse_in(Ecore_Event * ev)
{
if (v->is_desktop)
{
evas_event_enter(v->evas);
evas_event_feed_mouse_in(v->evas);
}
current_ev = NULL;
D_RETURN;
@ -1342,7 +1331,7 @@ e_mouse_out(Ecore_Event * ev)
{
if ((v = e_view_machine_get_view_by_main_window(e->win)))
{
evas_event_leave(v->evas);
evas_event_feed_mouse_out(v->evas);
current_ev = NULL;
D_RETURN;
}
@ -1367,7 +1356,7 @@ e_window_expose(Ecore_Event * ev)
if ((v = e_view_machine_get_view_by_main_window(e->win)))
{
if (!(v->pmap))
evas_update_rect(v->evas, e->x, e->y, e->w, e->h);
evas_damage_rectangle_add(v->evas, e->x, e->y, e->w, e->h);
v->changed = 1;
D_RETURN;
}
@ -1412,7 +1401,7 @@ e_view_restart_alphabetical_qsort_cb(const void *data1, const void *data2)
void
e_view_resort_alphabetical(E_View * v)
{
Evas_List icons = NULL, l;
Evas_List *icons = NULL, *l;
E_Icon **array;
int i, count;
@ -1442,7 +1431,7 @@ e_view_resort_alphabetical(E_View * v)
void
e_view_arrange(E_View * v)
{
Evas_List l;
Evas_List * l;
int x, y;
int x1, x2, y1, y2;
double sv, sr, sm;
@ -1586,11 +1575,6 @@ e_view_cleanup(E_View * v)
* not via a timeout, because we will destroy the object after this.*/
e_view_geometry_record(v);
if (v->iconbar)
{
/*e_iconbar_save_out_final(v->iconbar); */
e_object_unref(E_OBJECT(v->iconbar));
}
if (v->bg)
e_bg_free(v->bg);
if (v->scrollbar.h)
@ -1637,7 +1621,8 @@ e_view_file_event_handler(E_Observer *obs, E_Observee *o, E_Event_Type event, vo
else if (event & E_EVENT_BG_CHANGED)
{
snprintf(buf, PATH_MAX, "background_reload:%s", v->name);
ecore_add_event_timer(buf, 0.5, e_view_bg_reload_timeout, 0, v);
e_view_bg_reload(v);
//ecore_add_event_timer(buf, 0.5, e_view_bg_reload_timeout, 0, v);
}
else if (event & E_EVENT_ICB_CHANGED)
{
@ -1678,14 +1663,14 @@ e_view_new(void)
#ifdef SOFT_DESK
/* ONLY alpha software can be "backing stored" */
v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE;
v->options.back_pixmap = 1;
#else
#ifdef X_DESK
v->options.render_method = RENDER_METHOD_BASIC_HARDWARE;
/*v->options.render_method = RENDER_METHOD_ALPHA_SOFTWARE;*/
v->options.back_pixmap = 0;
#else
v->options.render_method = RENDER_METHOD_3D_HARDWARE;
#ifdef X_DESK
/*v->options.render_method = RENDER_METHOD_BASIC_HARDWARE;*/
v->options.back_pixmap = 0;
#else
/*v->options.render_method = RENDER_METHOD_3D_HARDWARE;*/
v->options.back_pixmap = 0;
#endif
#endif
@ -1817,9 +1802,6 @@ e_view_set_dir(E_View * v, char *path)
void
e_view_realize(E_View * v)
{
int max_colors = 216;
int font_cache = 1024 * 1024;
int image_cache = 8192 * 1024;
char *font_dir;
D_ENTER;
@ -1830,14 +1812,14 @@ e_view_realize(E_View * v)
v->size.w, v->size.h);
ecore_window_set_delete_inform(v->win.base);
font_dir = e_config_get("fonts");
v->evas = evas_new_all(ecore_display_get(),
v->evas = e_evas_new_all(ecore_display_get(),
v->win.base,
0, 0, v->size.w, v->size.h,
v->options.render_method,
max_colors, font_cache, image_cache, font_dir);
v->win.main = evas_get_window(v->evas);
font_dir);
v->win.main = e_evas_get_window(v->evas);
e_cursors_display_in_window(v->win.main, "View");
evas_event_move(v->evas, -999999, -999999);
evas_event_feed_mouse_move(v->evas, -999999, -999999);
ecore_window_set_events(v->win.base,
XEV_VISIBILITY | XEV_CONFIGURE |
XEV_PROPERTY | XEV_FOCUS);
@ -1846,10 +1828,14 @@ e_view_realize(E_View * v)
XEV_BUTTON | XEV_IN_OUT | XEV_KEY);
if (v->options.back_pixmap)
{
Evas_Engine_Info_Software_X11 *info;
v->pmap = ecore_pixmap_new(v->win.main, v->size.w, v->size.h, 0);
evas_set_output(v->evas, ecore_display_get(), v->pmap,
evas_get_visual(v->evas), evas_get_colormap(v->evas));
info = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(v->evas);
info->info.drawable = v->pmap;
evas_engine_info_set(v->evas, (Evas_Engine_Info *)info);
ecore_window_set_background_pixmap(v->win.main, v->pmap);
ecore_window_clear(v->win.main);
}
v->scrollbar.v = e_scrollbar_new(v);
e_scrollbar_set_change_func(v->scrollbar.v, e_view_scrollbar_v_change_cb, v);
@ -1880,7 +1866,7 @@ e_view_realize(E_View * v)
void
e_view_populate(E_View * v)
{
Evas_List l;
Evas_List * l;
/* populate with icons for all files in the dir we are monitoring.
* This has to be called _after_ view_realize because
@ -1900,7 +1886,7 @@ e_view_populate(E_View * v)
void
e_view_update(E_View * v)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -1938,24 +1924,19 @@ e_view_update(E_View * v)
}
if (v->options.back_pixmap)
{
Imlib_Updates up;
Evas_List *up, *fp;
Evas_Rectangle *u;
up = evas_render_updates(v->evas);
fp = up = evas_render_updates(v->evas);
/* special code to handle if we are double buffering to a pixmap */
/* and clear sections of the window if they got updated */
if (up)
while (up)
{
Imlib_Updates u;
for (u = up; u; u = imlib_updates_get_next(u))
{
int x, y, w, h;
imlib_updates_get_coordinates(u, &x, &y, &w, &h);
ecore_window_clear_area(v->win.main, x, y, w, h);
}
imlib_updates_free(up);
u = up->data;
ecore_window_clear_area(v->win.main, u->x, u->y, u->w, u->h);
up = evas_list_next(up);
}
evas_render_updates_free(fp);
}
else
evas_render(v->evas);
@ -1980,7 +1961,7 @@ e_view_file_add(E_View * v, E_File * f)
ic->changed = 1;
/* this basically allocates the obj.icon struct. Its image will be
* set later in icon_update_state */
ic->obj.icon = evas_add_image_from_file(ic->view->evas, NULL);
ic->obj.icon = evas_object_image_add(ic->view->evas);
ic->obj.text = e_text_new(ic->view->evas, f->file, "filename");
v->icons = evas_list_append(v->icons, ic);
v->extents.valid = 0;
@ -2116,9 +2097,9 @@ e_view_bg_reload(E_View * v)
v->bg = NULL;
if (v->evas)
{
size = evas_get_image_cache(v->evas);
evas_set_image_cache(v->evas, 0);
evas_set_image_cache(v->evas, size);
size = evas_object_image_cache_get(v->evas);
evas_object_image_cache_flush(v->evas);
evas_object_image_cache_set(v->evas, size);
}
e_db_flush();
}
@ -2147,9 +2128,9 @@ e_view_bg_reload(E_View * v)
e_bg_set_layer(v->bg, 100);
e_bg_resize(v->bg, v->size.w, v->size.h);
e_bg_callback_add(v->bg, CALLBACK_MOUSE_UP, e_bg_up_cb, v);
e_bg_callback_add(v->bg, CALLBACK_MOUSE_DOWN, e_bg_down_cb, v);
e_bg_callback_add(v->bg, CALLBACK_MOUSE_MOVE, e_bg_move_cb, v);
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_UP, e_bg_up_cb, v);
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_DOWN, e_bg_down_cb, v);
e_bg_callback_add(v->bg, EVAS_CALLBACK_MOUSE_MOVE, e_bg_move_cb, v);
e_bg_show(v->bg);
}
@ -2217,32 +2198,13 @@ e_dnd_data_request(Ecore_Event * ev)
* } Ecore_Event_Dnd_Data_Request;
*/
E_View *v;
Evas_List ll;
Evas_List * ll;
char *data = NULL;
D_ENTER;
/* Me, my null, and an extra for the end '/r/n'... */
e_strdup(data, "");
/* Need hostname for URL (file://hostname/...) */
/* nooo nooo noo - never encode host names in url's -
* file:/path/blah is local only - secondly.. why encode
* url's with hosts? e17 only handles local files in the
* fs - so why use url styles at all? NB - in my testing
* in efm all the other apps didnt use the file:/host/blah
* url formatting... so i think we want to do what everyone
* else does here
*/
/* this is o evil it's not funny - gethostbyname? you know
* your window manager) could get hung here for minutes doing
* this lookup? bad bad bad.
*
* if(gethostname( hostname, PATH_MAX))
* {
* strcpy( hostname, "localhost");
* }
*/
e = ev->event;
if (!(v = e_view_machine_get_view_by_base_window(e->win)))
D_RETURN;
@ -2258,6 +2220,7 @@ e_dnd_data_request(Ecore_Event * ev)
ic = ll->data;
if (ic->state.selected)
{
int size;
char buf[PATH_MAX];
if (first)
@ -2271,9 +2234,10 @@ e_dnd_data_request(Ecore_Event * ev)
/* FIXME */
snprintf(buf, PATH_MAX, "\r\nfile:%s/%s", v->dir->dir,
ic->file->file);
REALLOC(data, char, strlen(data) + strlen(buf) + 1);
size = strlen(data) + strlen(buf) + 1;
REALLOC(data, char, size);
strcat(data, buf);
strncat(data, buf, size);
}
}
ecore_dnd_send_data(e->source_win, e->win,
@ -2291,6 +2255,7 @@ e_dnd_data_request(Ecore_Event * ev)
ic = ll->data;
if (ic->state.selected)
{
int size;
char buf[PATH_MAX];
if (first)
@ -2304,9 +2269,10 @@ e_dnd_data_request(Ecore_Event * ev)
/*FIXME */
snprintf(buf, PATH_MAX, "\n%s/%s", v->dir->dir,
ic->file->file);
REALLOC(data, char, strlen(data) + strlen(buf) + 1);
size = strlen(data) + strlen(buf) + 1;
REALLOC(data, char, size);
strcat(data, buf);
strncat(data, buf, size);
}
}
ecore_dnd_send_data(e->source_win, e->win,

View File

@ -13,6 +13,8 @@
#include "view_layout.h"
#include "observer.h"
/*typedef int EVAS_RENDER_METHOD;*/
#ifndef E_VIEW_TYPEDEF
#define E_VIEW_TYPEDEF
typedef struct _E_View E_View;
@ -74,12 +76,12 @@ struct _E_View
struct
{
Evas_Render_Method render_method;
/* Evas_Render_Method render_method;*/
int back_pixmap;
}
options;
Evas evas;
Evas * evas;
struct
{
Window base;
@ -163,16 +165,16 @@ struct _E_View
config;
struct
{
Evas_Object clip;
Evas_Object edge_l;
Evas_Object edge_r;
Evas_Object edge_t;
Evas_Object edge_b;
Evas_Object middle;
Evas_Object grad_l;
Evas_Object grad_r;
Evas_Object grad_t;
Evas_Object grad_b;
Evas_Object * clip;
Evas_Object * edge_l;
Evas_Object * edge_r;
Evas_Object * edge_t;
Evas_Object * edge_b;
Evas_Object * middle;
Evas_Object * grad_l;
Evas_Object * grad_r;
Evas_Object * grad_t;
Evas_Object * grad_b;
}
obj;
}
@ -226,13 +228,13 @@ struct _E_View
E_Iconbar *iconbar;
Evas_List icons;
Evas_List * icons;
int have_resort_queued;
int changed;
Evas_List epplet_contexts;
Evas_List * epplet_contexts;
Ebits_Object epplet_layout;
E_View_Look *look;

View File

@ -1,12 +1,12 @@
#include "e.h"
#include "view_layout.h"
#include "desktops.h"
#include "util.h"
static void e_view_layout_cleanup(E_View_Layout *layout);
static int e_view_layout_add_element(E_View_Layout *layout, char *name);
E_View_Layout *
e_view_layout_new(E_View *v)
e_view_layout_new(E_Desktop *d)
{
E_View_Layout *layout;
@ -17,7 +17,7 @@ e_view_layout_new(E_View *v)
e_object_init(E_OBJECT(layout), (E_Cleanup_Func) e_view_layout_cleanup);
layout->view = v;
layout->desktop = d;
D_RETURN_(layout);
}
@ -25,7 +25,7 @@ e_view_layout_new(E_View *v)
static void
e_view_layout_cleanup(E_View_Layout *layout)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -54,22 +54,19 @@ void
e_view_layout_realize(E_View_Layout *layout)
{
Ebits_Object bits;
Evas_List l;
Evas_List * l;
if (!layout) D_RETURN;
D_ENTER;
if (layout->view->look->obj->layout)
bits = ebits_load(layout->view->look->obj->layout);
if (layout->desktop->look->obj->layout)
bits = ebits_load(layout->desktop->look->obj->layout);
else
{
/* Our look doesnt provide a layout, falls back */
char buf[PATH_MAX];
if(layout->view->is_desktop)
snprintf(buf, PATH_MAX, "%sdesktop.bits.db", e_config_get("layout"));
else
snprintf(buf, PATH_MAX, "%sview.bits.db", e_config_get("layout"));
snprintf(buf, PATH_MAX, "%sdesktop.bits.db", e_config_get("layout"));
bits = ebits_load(buf);
}
@ -78,12 +75,14 @@ e_view_layout_realize(E_View_Layout *layout)
D("layout bits loaded!\n")
layout->bits = bits;
layout->mod_time = ecore_get_time();
if (layout->view->evas)
if (layout->desktop->evas)
{
ebits_add_to_evas(layout->bits, layout->view->evas);
ebits_add_to_evas(layout->bits, layout->desktop->evas);
ebits_move(layout->bits, 0, 0);
ebits_resize(layout->bits, layout->view->size.w, layout->view->size.h);
D("add layout- w:%i, h:%i\n", layout->view->size.w, layout->view->size.h);
ebits_resize(layout->bits, layout->desktop->real.w,
layout->desktop->real.h);
D("add layout- w:%i, h:%i\n", layout->desktop->real.w,
layout->desktop->real.h);
for (l = ebits_get_bit_names(layout->bits); l; l = l->next)
{
char *name = l->data;
@ -103,7 +102,7 @@ static int
e_view_layout_add_element(E_View_Layout *layout, char *name)
{
E_View_Layout_Element *el;
Evas_List l;
Evas_List * l;
double x, y, w, h;
D_ENTER;
@ -141,7 +140,7 @@ e_view_layout_add_element(E_View_Layout *layout, char *name)
int
e_view_layout_delete_element(E_View_Layout *layout, char *name)
{
Evas_List l;
Evas_List * l;
D_ENTER;
@ -166,7 +165,7 @@ int
e_view_layout_get_element_geometry(E_View_Layout *layout, char *name,
double *x, double *y, double *w, double *h)
{
Evas_List l;
Evas_List * l;
D_ENTER;
if (layout && name)
{
@ -192,7 +191,7 @@ e_view_layout_get_element_geometry(E_View_Layout *layout, char *name,
void
e_view_layout_update(E_View_Layout *layout)
{
Evas_List l;
Evas_List * l;
double x, y, w, h;
D_ENTER;
@ -200,8 +199,9 @@ e_view_layout_update(E_View_Layout *layout)
D_RETURN;
/* move/resize bits */
ebits_move(layout->bits, 0, 0);
ebits_resize(layout->bits, layout->view->size.w, layout->view->size.h);
D("update layout- w:%i, h:%i\n", layout->view->size.w, layout->view->size.h);
ebits_resize(layout->bits, layout->desktop->real.w, layout->desktop->real.h);
D("update layout- w:%i, h:%i\n", layout->desktop->real.w,
layout->desktop->real.h);
/* update elements */
for (l = layout->elements; l; l = l->next)
@ -221,26 +221,27 @@ e_view_layout_update(E_View_Layout *layout)
if (e_view_layout_get_element_geometry(layout, "Icons",
&x, &y, &w, &h))
{
layout->view->spacing.window.l = x;
layout->view->spacing.window.r = layout->view->size.w - (x + w);
layout->view->spacing.window.t = y;
layout->view->spacing.window.b = layout->view->size.h - (y + h);
/* layout->desktop->spacing.window.l = x;
layout->desktop->spacing.window.r = layout->desktop->size.w - (x + w);
layout->desktop->spacing.window.t = y;
layout->desktop->spacing.window.b = layout->desktop->size.h - (y + h);
*/
}
if (e_view_layout_get_element_geometry(layout, "Scrollbar_H",
&x, &y, &w, &h))
{
e_scrollbar_move(layout->view->scrollbar.h, x, y);
e_scrollbar_resize(layout->view->scrollbar.h, w, h);
/* e_scrollbar_move(layout->desktop->scrollbar.h, x, y);
e_scrollbar_resize(layout->desktop->scrollbar.h, w, h); */
}
if (e_view_layout_get_element_geometry(layout, "Scrollbar_V",
&x, &y, &w, &h))
{
e_scrollbar_move(layout->view->scrollbar.v, x, y);
e_scrollbar_resize(layout->view->scrollbar.v, w, h);
/* e_scrollbar_move(layout->desktop->scrollbar.v, x, y);
e_scrollbar_resize(layout->desktop->scrollbar.v, w, h); */
}
if (layout->view->iconbar)
e_iconbar_fix(layout->view->iconbar);
if (layout->desktop->iconbar)
e_iconbar_fix(layout->desktop->iconbar);
D_RETURN;
}

View File

@ -2,7 +2,7 @@
#define E_VIEW_LAYOUT_H
#include "e.h"
#include "view.h"
#include "e_view_look.h"
#include "object.h"
#ifndef E_VIEW_LAYOUT_TYPEDEF
@ -16,16 +16,15 @@ typedef struct _E_View_Layout_Element E_View_Layout_Element;
typedef struct _E_View E_View;
#endif
struct _E_View_Layout
{
E_Object o;
E_View *view;
E_Desktop *desktop;
Ebits_Object bits;
Evas_List elements;
Evas_List * elements;
time_t mod_time;
};
@ -36,7 +35,7 @@ struct _E_View_Layout_Element
double x, y, w, h;
};
E_View_Layout *e_view_layout_new(E_View *v);
E_View_Layout *e_view_layout_new(E_Desktop *d);
void e_view_layout_realize(E_View_Layout *layout);
void e_view_layout_update(E_View_Layout *layout);

View File

@ -1,4 +1,6 @@
#include <X11/Xlib.h>
#include <Evas.h>
#include <Evas_Engine_Software_X11.h>
#include <Ebits.h>
#include <Ecore.h>
#include <Edb.h>
@ -48,6 +50,17 @@ __dest = malloc(strlen(__var) + 1); \
if (__dest) strcpy(__dest, __var); \
} }
#define RENDER_METHOD_ALPHA_SOFTWARE 0
Evas *
e_evas_new_all(Display *disp, Window parent_window,
int x, int y, int win_w, int win_h,
int render,
int max_colors, int fc, int ic,
char *font_dir);
Window
e_evas_get_window(Evas *evas);
/* */
/* */
/* */
@ -241,12 +254,12 @@ e_file_link(char *link)
return f;
}
Evas_List
Evas_List *
e_file_list_dir(char *dir)
{
DIR *dirp;
struct dirent *dp;
Evas_List list;
Evas_List * list;
dirp = opendir(dir);
if (!dirp) return NULL;
@ -256,7 +269,7 @@ e_file_list_dir(char *dir)
if ((strcmp(dp->d_name, ".")) &&
(strcmp(dp->d_name, "..")))
{
Evas_List l;
Evas_List * l;
char *f;
/* insertion sort */
@ -279,7 +292,7 @@ e_file_list_dir(char *dir)
}
void
e_file_list_dir_free(Evas_List list)
e_file_list_dir_free(Evas_List * list)
{
while (list)
{
@ -299,7 +312,7 @@ struct _text_zone
{
double x, y;
Evas_Object clip;
Evas_Object * clip;
Ebits_Object *bg;
struct {
@ -313,13 +326,13 @@ struct _text_zone
double dx, dy;
int go;
} move;
Evas_List lines;
Evas_List buttons;
Evas_List * lines;
Evas_List * buttons;
};
struct _text_zone_button
{
Evas_Object label;
Evas_Object * label;
Ebits_Object *bg;
double x, y, w, h;
@ -329,9 +342,9 @@ struct _text_zone_button
Window win_main;
Window win_evas;
Evas evas;
Evas *evas;
double scr_w, scr_h;
Evas_Object pointer;
Evas_Object * pointer;
/* our stuff */
void idle(void *data);
@ -364,7 +377,7 @@ window_expose(Ecore_Event * ev)
Ecore_Event_Window_Expose *e;
e = (Ecore_Event_Window_Expose *)ev->event;
evas_update_rect(evas, e->x, e->y, e->w, e->h);
evas_damage_rectangle_add(evas, e->x, e->y, e->w, e->h);
}
void
@ -373,10 +386,10 @@ mouse_move(Ecore_Event * ev)
Ecore_Event_Mouse_Move *e;
e = (Ecore_Event_Mouse_Move *)ev->event;
evas_move(evas, pointer,
evas_screen_x_to_world(evas, e->x),
evas_screen_y_to_world(evas, e->y));
evas_event_move(evas, e->x, e->y);
evas_object_move(pointer,
evas_coord_screen_x_to_world(evas, e->x),
evas_coord_screen_y_to_world(evas, e->y));
evas_event_feed_mouse_move(evas, e->x, e->y);
}
void
@ -385,7 +398,7 @@ mouse_down(Ecore_Event * ev)
Ecore_Event_Mouse_Down *e;
e = (Ecore_Event_Mouse_Down *)ev->event;
evas_event_button_down(evas, e->x, e->y, e->button);
evas_event_feed_mouse_down(evas, e->button);
}
void
@ -394,7 +407,7 @@ mouse_up(Ecore_Event * ev)
Ecore_Event_Mouse_Up *e;
e = (Ecore_Event_Mouse_Up *)ev->event;
evas_event_button_up(evas, e->x, e->y, e->button);
evas_event_feed_mouse_up(evas, e->button);
}
void
@ -438,7 +451,7 @@ setup(void)
ecore_window_get_geometry(0, NULL, NULL, &root_w, &root_h);
win_main = ecore_window_override_new(0, 0, 0, root_w, root_h);
evas = evas_new_all(ecore_display_get(),
evas = e_evas_new_all(ecore_display_get(),
win_main,
0, 0, root_w, root_w,
RENDER_METHOD_ALPHA_SOFTWARE,
@ -456,12 +469,15 @@ setup(void)
e_bg_resize(bg, root_w, root_h);
e_bg_show(bg);
pointer = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/pointer.png");
evas_set_pass_events(evas, pointer, 1);
evas_set_layer(evas, pointer, 1000000);
evas_show(evas, pointer);
pointer = evas_object_image_add(evas);
evas_object_image_file_set(pointer,
PACKAGE_DATA_DIR"/data/setup/pointer.png",
NULL);
evas_object_pass_events_set(pointer, 1);
evas_object_layer_set(pointer, 1000000);
evas_object_show(pointer);
win_evas = evas_get_window(evas);
win_evas = e_evas_get_window(evas);
ecore_window_set_events(win_evas, XEV_EXPOSE | XEV_BUTTON | XEV_MOUSE_MOVE | XEV_KEY);
ecore_set_blank_pointer(win_evas);
@ -470,15 +486,18 @@ setup(void)
ecore_keyboard_grab(win_evas);
{
Evas_Object o;
Evas_Object * o;
int w, h;
o = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/logo.png");
evas_get_image_size(evas, o, &w, &h);
evas_move(evas, o, (root_w - w) / 2, -32);
evas_set_layer(evas, o, 20);
evas_show(evas, o);
evas_set_pass_events(evas, o, 1);
o = evas_object_image_add(evas);
evas_object_image_file_set(o,
PACKAGE_DATA_DIR"/data/setup/logo.png",
NULL);
evas_object_image_size_get(o, &w, &h);
evas_object_move(o, (root_w - w) / 2, -32);
evas_object_layer_set(o, 20);
evas_object_show(o);
evas_object_pass_events_set(o, 1);
}
{
Text_Zone *txz;
@ -503,14 +522,18 @@ setup(void)
}
{
Evas_Object o;
Evas_Object * o;
o = evas_add_image_from_file(evas, PACKAGE_DATA_DIR"/data/setup/anim/e001.png");
evas_move(evas, o, root_w - 120, -15);
evas_set_layer(evas, o, 30);
evas_show(evas, o);
o = evas_object_image_add(evas);
evas_object_image_file_set(o,
PACKAGE_DATA_DIR"/data/setup/anim/e001.png",
NULL);
evas_object_move(o, root_w - 120, -15);
evas_object_layer_set(o, 30);
evas_object_show(o);
animate_logo(0, o);
evas_set_pass_events(evas, o, 1);
evas_object_pass_events_set(o, 1);
}
scr_w = root_w;
scr_h = root_h;
@ -523,13 +546,13 @@ _txz_cb_show(void *data)
txz = (Text_Zone *)data;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
evas_show(evas, l->data);
evas_object_show(l->data);
}
evas_show(evas, txz->clip);
evas_object_show(txz->clip);
}
}
@ -540,13 +563,13 @@ _txz_cb_hide(void *data)
txz = (Text_Zone *)data;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
evas_hide(evas, l->data);
evas_object_hide(l->data);
}
evas_hide(evas, txz->clip);
evas_object_hide(txz->clip);
}
}
@ -577,11 +600,11 @@ _txz_cb_raise(void *data)
txz = (Text_Zone *)data;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
evas_raise(evas, l->data);
evas_object_raise(l->data);
}
}
}
@ -593,11 +616,11 @@ _txz_cb_lower(void *data)
txz = (Text_Zone *)data;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
evas_lower(evas, l->data);
evas_object_lower(l->data);
}
}
}
@ -609,11 +632,11 @@ _txz_cb_set_layer(void *data, int lay)
txz = (Text_Zone *)data;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
evas_set_layer(evas, l->data, lay);
evas_object_layer_set(l->data, lay);
}
}
}
@ -627,13 +650,13 @@ _txz_cb_get_min_size(void *data, double *minw, double *minh)
*minw = 0;
*minh = 0;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
double w, h;
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
evas_object_geometry_get(l->data, NULL, NULL, &w, &h);
if (w > *minw) *minw = w;
*minh += h;
}
@ -651,13 +674,13 @@ _txz_cb_get_max_size(void *data, double *maxw, double *maxh)
*maxw = 0;
*maxh = 0;
{
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
{
double w, h;
evas_get_geometry(evas, l->data, NULL, NULL, &w, &h);
evas_object_geometry_get(l->data, NULL, NULL, &w, &h);
if (w > *maxw) *maxw = w;
*maxh += h;
}
@ -735,8 +758,8 @@ txz_new(double x, double y, char *text)
txz->x = 0;
txz->y = 0;
txz->clip = evas_add_rectangle(evas);
evas_set_color(evas, txz->clip, 255, 255, 255, 255);
txz->clip = evas_object_rectangle_add(evas);
evas_object_color_set(txz->clip, 255, 255, 255, 255);
txz->bg = ebits_load(PACKAGE_DATA_DIR"/data/setup/textzone.bits.db");
if (txz->bg)
{
@ -769,15 +792,15 @@ txz_new(double x, double y, char *text)
NULL,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_DOWN,
EVAS_CALLBACK_MOUSE_DOWN,
_txz_cb_title_down,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_UP,
EVAS_CALLBACK_MOUSE_UP,
_txz_cb_title_up,
txz);
ebits_set_classed_bit_callback(txz->bg, "Title_Bar",
CALLBACK_MOUSE_MOVE,
EVAS_CALLBACK_MOUSE_MOVE,
_txz_cb_title_move,
txz);
}
@ -791,13 +814,13 @@ txz_new(double x, double y, char *text)
void
txz_free(Text_Zone *txz)
{
Evas_List l;
Evas_List * l;
if (txz->bg)
ebits_free(txz->bg);
evas_del_object(evas, txz->clip);
evas_object_del(txz->clip);
for (l = txz->lines; l; l = l->next)
evas_del_object(evas, (Evas_Object)l->data);
evas_object_del((Evas_Object *)l->data);
if (txz->lines) evas_list_free(txz->lines);
FREE(txz);
}
@ -805,19 +828,19 @@ txz_free(Text_Zone *txz)
void
txz_show(Text_Zone *txz)
{
Evas_List l;
Evas_List * l;
if (txz->bg)
ebits_show(txz->bg);
for (l = txz->lines; l; l = l->next)
evas_show(evas, (Evas_Object)l->data);
evas_object_show((Evas_Object *)l->data);
for (l = txz->buttons; l; l = l->next)
{
Text_Zone_Button *tb;
tb = l->data;
if (tb->bg) ebits_show(tb->bg);
evas_show(evas, tb->label);
evas_object_show(tb->label);
}
txz_adjust_txt(txz);
}
@ -825,19 +848,19 @@ txz_show(Text_Zone *txz)
void
txz_hide(Text_Zone *txz)
{
Evas_List l;
Evas_List * l;
if (txz->bg)
ebits_hide(txz->bg);
for (l = txz->lines; l; l = l->next)
evas_hide(evas, (Evas_Object)l->data);
evas_object_hide((Evas_Object *)l->data);
for (l = txz->buttons; l; l = l->next)
{
Text_Zone_Button *tb;
tb = l->data;
if (tb->bg) ebits_hide(tb->bg);
evas_hide(evas, tb->label);
evas_object_hide(tb->label);
}
txz_adjust_txt(txz);
}
@ -845,7 +868,7 @@ txz_hide(Text_Zone *txz)
void
txz_move(Text_Zone *txz, double x, double y)
{
Evas_List l;
Evas_List * l;
txz->x = x;
txz->y = y;
@ -861,10 +884,10 @@ txz_text(Text_Zone *txz, char *text)
{
char *p, *tok;
double ypos;
Evas_List l;
Evas_List * l;
for (l = txz->lines; l; l = l->next)
evas_del_object(evas, (Evas_Object)l->data);
evas_object_del((Evas_Object *)l->data);
if (txz->lines) evas_list_free(txz->lines);
txz->lines = NULL;
@ -875,7 +898,7 @@ txz_text(Text_Zone *txz, char *text)
char line[4096], size[2], align[2], *str;
int sz;
double tw, th, hadv, vadv;
Evas_Object o;
Evas_Object * o;
strncpy(line, p, (tok - p));
line[tok - p] = 0;
@ -887,21 +910,23 @@ txz_text(Text_Zone *txz, char *text)
sz = atoi(size);
sz = 4 + (sz * 2);
o = evas_add_text(evas, "nationff", sz, str);
evas_set_layer(evas, o, 9);
evas_set_color(evas, o, 0, 0, 0, 255);
o = evas_object_text_add(evas);
evas_object_text_font_set(o, "nationff", sz);
evas_object_text_text_set(o, str);
evas_object_layer_set(o, 9);
evas_object_color_set(o, 0, 0, 0, 255);
txz->lines = evas_list_append(txz->lines, o);
tw = evas_get_text_width(evas, o);
th = evas_get_text_height(evas, o);
evas_text_get_advance(evas, o, &hadv, &vadv);
evas_object_geometry_get(o, NULL, NULL, &tw, &th);
hadv = evas_object_text_horiz_advance_get(o);
vadv = evas_object_text_vert_advance_get(o);
if (align[0] == 'l')
evas_move(evas, o, txz->x, ypos);
evas_object_move(o, txz->x, ypos);
else if (align[0] == 'r')
evas_move(evas, o, txz->x + 512 - tw, ypos);
evas_object_move(o, txz->x + 512 - tw, ypos);
else
evas_move(evas, o, txz->x + ((512 - tw) / 2), ypos);
evas_set_clip(evas, o, txz->clip);
evas_put_data(evas, o, "align", (void *)((int)align[0]));
evas_object_move(o, txz->x + ((512 - tw) / 2), ypos);
evas_object_clip_set(o, txz->clip);
evas_object_data_set(o, "align", (void *)((int)align[0]));
ypos += th;
p = tok + 1;
@ -927,10 +952,12 @@ txz_button(Text_Zone *txz, char *text, void (*func) (void *data), void *data)
ZERO(tb, Text_Zone_Button, 1);
txz->buttons = evas_list_append(txz->buttons, tb);
tb->label = evas_add_text(evas, "nationff", 12, text);
evas_set_pass_events(evas, tb->label, 1);
evas_set_color(evas, tb->label, 0, 0, 0, 255);
evas_set_layer(evas, tb->label, 12);
tb->label = evas_object_text_add(evas);
evas_object_text_font_set(tb->label,"nationff", 12);
evas_object_text_text_set(tb->label, text);
evas_object_pass_events_set(tb->label, 1);
evas_object_color_set(tb->label, 0, 0, 0, 255);
evas_object_layer_set(tb->label, 12);
tb->bg = ebits_load(PACKAGE_DATA_DIR"/data/setup/textzone_button.bits.db");
if (tb->bg)
ebits_add_to_evas(tb->bg, evas);
@ -940,28 +967,27 @@ txz_button(Text_Zone *txz, char *text, void (*func) (void *data), void *data)
void
txz_adjust_txt(Text_Zone *txz)
{
Evas_List l;
Evas_List * l;
double ypos;
double xpos;
ypos = txz->l.y + 4;
evas_move(evas, txz->clip, txz->l.x, txz->l.y);
evas_resize(evas, txz->clip, txz->l.w, txz->l.h);
evas_object_move(txz->clip, txz->l.x, txz->l.y);
evas_object_resize(txz->clip, txz->l.w, txz->l.h);
for (l = txz->lines; l; l = l->next)
{
Evas_Object o;
Evas_Object * o;
double tw, th;
double x;
char align;
o = l->data;
align = (char)((int)evas_get_data(evas, o, "align"));
align = (char)((int)evas_object_data_get(o, "align"));
x = txz->l.x + 4;
tw = evas_get_text_width(evas, o);
th = evas_get_text_height(evas, o);
evas_object_geometry_get(o, NULL, NULL, &tw, &th);
if (align == 'c') x = txz->l.x + 4 + ((txz->l.w - 8 - tw) / 2);
else if (align == 'r') x = txz->l.x + 4 + (txz->l.w - 8 - tw);
evas_move(evas, o, x, ypos);
evas_object_move(o, x, ypos);
ypos += th;
}
xpos = 0;
@ -971,8 +997,7 @@ txz_adjust_txt(Text_Zone *txz)
double tw, th;
tb = l->data;
tw = evas_get_text_width(evas, tb->label);
th = evas_get_text_height(evas, tb->label);
evas_object_geometry_get(tb->label, NULL, NULL, &tw, &th);
if (tb->bg)
{
int pl, pr, pt, pb;
@ -983,8 +1008,8 @@ txz_adjust_txt(Text_Zone *txz)
ebits_show(tb->bg);
ebits_resize(tb->bg, tw + pl + pr, txz->b.h);
ebits_move(tb->bg, txz->b.x + xpos, txz->b.y);
evas_move(evas, tb->label, txz->b.x + pl + xpos, txz->b.y + pt + ((txz->b.h - pt - pb - th) / 2));
evas_show(evas, tb->label);
evas_object_move(tb->label, txz->b.x + pl + xpos, txz->b.y + pt + ((txz->b.h - pt - pb - th) / 2));
evas_object_show(tb->label);
xpos += tw + pl + pr;
}
}
@ -993,13 +1018,13 @@ txz_adjust_txt(Text_Zone *txz)
void
animate_logo(int v, void *data)
{
Evas_Object o;
Evas_Object * o;
double t;
static double start_t;
char buf[4096];
int frame;
o = (Evas_Object)data;
o = (Evas_Object *)data;
if (v == 0) start_t = ecore_get_time();
t = ecore_get_time() - start_t;
frame = (int)(t * 25);
@ -1008,10 +1033,78 @@ animate_logo(int v, void *data)
if (frame < 10) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e00%i.png", frame);
else if (frame < 100) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e0%i.png", frame);
else if (frame < 1000) sprintf(buf, PACKAGE_DATA_DIR"/data/setup/anim/e%i.png", frame);
evas_set_image_file(evas, o, buf);
evas_object_image_file_set(o, buf, NULL);
ecore_add_event_timer("animate_logo", 0.01, animate_logo, 1, data);
}
Evas *
e_evas_new_all(Display *disp, Window parent_window,
int x, int y, int win_w, int win_h,
int render,
int max_colors, int fc, int ic,
char *font_dir)
{
Evas *e;
e = evas_new();
evas_output_method_set(e, evas_render_method_lookup("software_x11"));
evas_output_size_set(e, win_w, win_h);
evas_output_viewport_set(e, 0, 0, win_w, win_h);
{
Evas_Engine_Info_Software_X11 *einfo;
XSetWindowAttributes att;
Window window;
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(e);
/* the following is specific to the engine */
einfo->info.display = disp;
einfo->info.visual = DefaultVisual(disp, DefaultScreen(disp));
einfo->info.colormap = DefaultColormap(disp, DefaultScreen(disp));
att.background_pixmap = None;
att.colormap = /*colormap*/ DefaultColormap(disp, DefaultScreen(disp));
att.border_pixel = 0;
att.event_mask = 0;
window = XCreateWindow(disp,
parent_window,
x, y, win_w, win_h, 0,
DefaultDepth(disp, DefaultScreen(disp)),
/*imlib_get_visual_depth(display, visual),*/
InputOutput,
einfo->info.visual,
CWColormap | CWBorderPixel | CWEventMask | CWBackPixmap,
&att);
einfo->info.drawable = window /*win*/;
einfo->info.depth = DefaultDepth(disp, DefaultScreen(disp));
einfo->info.rotation = 0;
einfo->info.debug = 0;
evas_engine_info_set(e, (Evas_Engine_Info *) einfo);
}
evas_object_image_cache_set(e, 0);
evas_object_font_cache_set(e, 0);
evas_object_font_path_append(e, font_dir);
return e;
}
Window
e_evas_get_window(Evas *evas)
{
Window win;
Evas_Engine_Info_Software_X11 *einfo;
einfo = (Evas_Engine_Info_Software_X11 *) evas_engine_info_get(evas);
/* the following is specific to the engine */
win = einfo->info.drawable;
return win;
}
int
main(int argc, char **argv)
{