Compare commits
51 Commits
master
...
devs/sachi
Author | SHA1 | Date |
---|---|---|
Iván Briano | e31e5917ef | |
Mike Blumenkrantz | d620f743f5 | |
discomfitor | a9bfd0ef30 | |
Mike Blumenkrantz | 368b60a657 | |
discomfitor | c0d681462d | |
discomfitor | 4c34a71120 | |
discomfitor | 2c64b4bf95 | |
discomfitor | 93e613b9b2 | |
discomfitor | 157e3908e9 | |
discomfitor | 48e2f15ae7 | |
Mike Blumenkrantz | aaef7869b5 | |
Mike Blumenkrantz | 279a03d4b7 | |
discomfitor | 5595587c56 | |
discomfitor | 156e6890dd | |
Mike Blumenkrantz | 3f7b6c1286 | |
Mike Blumenkrantz | cb8bc59900 | |
Mike Blumenkrantz | d2ded6cbf9 | |
Mike Blumenkrantz | c6578fa569 | |
Mike Blumenkrantz | 6029ebb85f | |
Mike Blumenkrantz | 198e5ea72b | |
Mike Blumenkrantz | 37b11d932d | |
Mike Blumenkrantz | b2969cb880 | |
Mike Blumenkrantz | 099b250275 | |
Mike Blumenkrantz | 2ec808f9d8 | |
Mike Blumenkrantz | b3bd012cec | |
Mike Blumenkrantz | 8e5e2fc2ef | |
Mike Blumenkrantz | 87b16dad61 | |
Mike Blumenkrantz | f714dbf7e4 | |
Mike Blumenkrantz | 8c97314cd2 | |
Mike Blumenkrantz | fbfcb526ad | |
Mike Blumenkrantz | 9f2c63a6bf | |
Mike Blumenkrantz | e7108dd1df | |
Mike Blumenkrantz | 625d2706d4 | |
Mike Blumenkrantz | 7cb9f39c5b | |
Mike Blumenkrantz | 52d27d9ecd | |
Mike Blumenkrantz | af0464a8c6 | |
Mike Blumenkrantz | 8c218fd28e | |
Mike Blumenkrantz | 711bc1b2a5 | |
Mike Blumenkrantz | 6999e7a0df | |
Mike Blumenkrantz | bf0aee21f3 | |
Mike Blumenkrantz | 7d3ab68335 | |
Mike Blumenkrantz | 95522343df | |
Mike Blumenkrantz | 29d792094f | |
Mike Blumenkrantz | d32e08064a | |
Mike Blumenkrantz | af9486c4c2 | |
Mike Blumenkrantz | f90e76db81 | |
Mike Blumenkrantz | 62a847e86f | |
Mike Blumenkrantz | b49aac025e | |
Mike Blumenkrantz | b997165ce9 | |
Mike Blumenkrantz | 529d1eb68d | |
Mike Blumenkrantz | db8e211134 |
94
Makefile.am
94
Makefile.am
|
@ -1,6 +1,7 @@
|
|||
SUBDIRS = src data doc config
|
||||
|
||||
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
|
||||
AUTOMAKE_OPTIONS = subdir-objects
|
||||
|
||||
SUBDIRS = .
|
||||
|
||||
if HAVE_PO
|
||||
|
||||
|
@ -8,6 +9,11 @@ SUBDIRS += po
|
|||
|
||||
endif
|
||||
|
||||
CLEANFILES =
|
||||
DISTCLEANFILES =
|
||||
INSTALL_DATA_HOOKS =
|
||||
PHONIES =
|
||||
|
||||
MAINTAINERCLEANFILES = \
|
||||
ABOUT-NLS* \
|
||||
Makefile.in \
|
||||
|
@ -25,52 +31,45 @@ ltmain.sh \
|
|||
missing \
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.gz \
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION).tar.bz2 \
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc.tar.bz2 \
|
||||
m4/libtool.m4 \
|
||||
m4/lt~obsolete.m4 \
|
||||
m4/ltoptions.m4 \
|
||||
m4/ltsugar.m4 \
|
||||
m4/ltversion.m4 \
|
||||
m4/codeset.m4 \
|
||||
m4/gettext.m4 \
|
||||
m4/glibc21.m4 \
|
||||
m4/iconv.m4 \
|
||||
m4/intdiv0.m4 \
|
||||
m4/inttypes_h.m4 \
|
||||
m4/inttypes.m4 \
|
||||
m4/inttypes-pri.m4 \
|
||||
m4/isc-posix.m4 \
|
||||
m4/lcmessage.m4 \
|
||||
m4/lib-ld.m4 \
|
||||
m4/lib-link.m4 \
|
||||
m4/lib-prefix.m4 \
|
||||
m4/nls.m4 \
|
||||
m4/po.m4 \
|
||||
m4/progtest.m4 \
|
||||
m4/stdint_h.m4 \
|
||||
m4/uintmax_t.m4 \
|
||||
m4/ulonglong.m4
|
||||
$(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc.tar.bz2
|
||||
|
||||
EXTRA_DIST = \
|
||||
config.rpath \
|
||||
README \
|
||||
AUTHORS \
|
||||
COPYING \
|
||||
enlightenment.spec.in \
|
||||
enlightenment.spec \
|
||||
enlightenment.pc \
|
||||
pkgbuild/PKGBUILD \
|
||||
pkgbuild/enlightenment.install
|
||||
|
||||
EDJE_CC = $(EDJE_CC_$(V))
|
||||
EDJE_CC_ = $(EDJE_CC_$(AM_DEFAULT_VERBOSITY))
|
||||
EDJE_CC_0 = @echo " EDJE_CC " $@; @edje_cc@
|
||||
EDJE_CC_1 = @edje_cc@
|
||||
|
||||
EDJE_FLAGS_VERBOSE_ = $(EDJE_FLAGS_VERBOSE_$(AM_DEFAULT_VERBOSITY))
|
||||
EDJE_FLAGS_VERBOSE_0 =
|
||||
EDJE_FLAGS_VERBOSE_1 = -v
|
||||
EDJE_FLAGS = $(EDJE_FLAGS_VERBOSE_$(V)) \
|
||||
@EDJE_DEF@
|
||||
|
||||
include m4/Makefile.mk
|
||||
|
||||
if HAVE_PO
|
||||
|
||||
MAINTAINERCLEANFILES += \
|
||||
po/boldquot.sed \
|
||||
po/en@boldquot.header \
|
||||
po/en@quot.header \
|
||||
po/insert-header.sin \
|
||||
po/Makefile.in.in \
|
||||
po/Makevars.template \
|
||||
po/quot.sed \
|
||||
po/remove-potcdate.sin \
|
||||
po/Rules-quot
|
||||
include po/Makefile.mk
|
||||
|
||||
endif
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = --disable-systemd
|
||||
|
||||
EXTRA_DIST = config.rpath README AUTHORS COPYING \
|
||||
enlightenment.spec.in enlightenment.spec enlightenment.pc \
|
||||
pkgbuild/PKGBUILD pkgbuild/enlightenment.install
|
||||
include config/Makefile.mk
|
||||
|
||||
include data/Makefile.mk
|
||||
|
||||
include src/Makefile.mk
|
||||
|
||||
filesdir = $(datadir)/enlightenment/
|
||||
files_DATA = AUTHORS COPYING
|
||||
|
@ -78,8 +77,15 @@ files_DATA = AUTHORS COPYING
|
|||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = enlightenment.pc
|
||||
|
||||
.PHONY: doc
|
||||
include doc/Makefile.mk
|
||||
|
||||
doc:
|
||||
@echo "entering doc/"
|
||||
$(MAKE) -C doc doc
|
||||
.PHONY: $(PHONIES)
|
||||
|
||||
clean-local: doc-clean
|
||||
rm -rf config/*.cfg config/*~
|
||||
rm -rf config/standard/*.cfg config/standard/*~
|
||||
rm -rf config/mobile/*.cfg config/mobile/*~
|
||||
rm -rf config/default/*.cfg config/default/*~
|
||||
rm -f data/themes/*.edj
|
||||
|
||||
install-data-hook: $(INSTALL_DATA_HOOKS)
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
SUBDIRS = default standard mobile
|
||||
|
||||
EET_EET = @eet_eet@
|
||||
|
||||
EXTRA_DIST = profile.src
|
||||
|
||||
filesdir = $(datadir)/enlightenment/data/config
|
||||
|
||||
files_DATA = profile.cfg
|
||||
|
||||
SUFFIXES = .cfg
|
||||
|
||||
.src.cfg:
|
||||
$(EET_EET) -i \
|
||||
$(top_builddir)/config/$@ config \
|
||||
$< 0
|
||||
|
||||
clean-local:
|
||||
rm -rf *.cfg *~
|
|
@ -0,0 +1,25 @@
|
|||
EET_EET = @eet_eet@
|
||||
|
||||
EXTRA_DIST += config/profile.src
|
||||
|
||||
configfilesdir = $(datadir)/enlightenment/data/config
|
||||
|
||||
configfiles_DATA = config/profile.cfg
|
||||
|
||||
SUFFIXES = .cfg
|
||||
|
||||
.src.cfg:
|
||||
$(MKDIR_P) $(@D)
|
||||
$(EET_EET) -e \
|
||||
$(top_builddir)/$@ config \
|
||||
$< 1
|
||||
|
||||
include config/default/Makefile.mk
|
||||
include config/standard/Makefile.mk
|
||||
include config/mobile/Makefile.mk
|
||||
|
||||
config/profile.cfg: config/profile.src
|
||||
$(MKDIR_P) $(@D)
|
||||
$(EET_EET) -i \
|
||||
$(top_builddir)/$@ config \
|
||||
$< 1
|
|
@ -1,27 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
EET_EET = @eet_eet@
|
||||
|
||||
EXTRA_DIST = \
|
||||
profile.desktop \
|
||||
enlightenment-default.png \
|
||||
e.src \
|
||||
e_bindings.src
|
||||
|
||||
filesdir = $(datadir)/enlightenment/data/config/default
|
||||
files_DATA = \
|
||||
profile.desktop \
|
||||
enlightenment-default.png \
|
||||
e.cfg \
|
||||
e_bindings.cfg
|
||||
|
||||
SUFFIXES = .cfg
|
||||
|
||||
.src.cfg:
|
||||
$(EET_EET) -e \
|
||||
$(top_builddir)/config/default/$@ config \
|
||||
$< 1
|
||||
|
||||
clean-local:
|
||||
rm -rf *.cfg *~
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
EXTRA_DIST += \
|
||||
config/default/profile.desktop \
|
||||
config/default/enlightenment-default.png \
|
||||
config/default/e.src \
|
||||
config/default/e_bindings.src
|
||||
|
||||
configdefaultfilesdir = $(datadir)/enlightenment/data/config/default
|
||||
configdefaultfiles_DATA = \
|
||||
config/default/profile.desktop \
|
||||
config/default/enlightenment-default.png \
|
||||
config/default/e.cfg \
|
||||
config/default/e_bindings.cfg
|
|
@ -1,8 +1,7 @@
|
|||
group "E_Config" struct {
|
||||
value "config_version" int: 1000011;
|
||||
value "config_version" int: 1000014;
|
||||
value "config_type" uint: 0; // this profile seems to just be super minimalist
|
||||
value "show_splash" int: 0;
|
||||
value "init_default_theme" string: "default.edj";
|
||||
value "desktop_default_name" string: "%i-%i";
|
||||
value "desktop_default_window_profile" string: "";
|
||||
value "menus_scroll_speed" double: 1000.0;
|
||||
|
@ -31,12 +30,6 @@ group "E_Config" struct {
|
|||
value "priority" int: 0;
|
||||
}
|
||||
}
|
||||
group "themes" list {
|
||||
group "E_Config_Theme" struct {
|
||||
value "category" string: "theme";
|
||||
value "file" string: "default.edj";
|
||||
}
|
||||
}
|
||||
value "window_placement_policy" int: 0;
|
||||
value "window_grouping" int: 0;
|
||||
value "focus_policy" int: 0;
|
||||
|
|
|
@ -1,40 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
EET_EET = @eet_eet@
|
||||
|
||||
EXTRA_DIST = \
|
||||
profile.desktop \
|
||||
enlightenment-mobile.png \
|
||||
e.src \
|
||||
e_bindings.src \
|
||||
module.battery.src \
|
||||
module.illume-home.src \
|
||||
module.illume-keyboard.src \
|
||||
module.illume-indicator.src \
|
||||
module.illume-softkey.src \
|
||||
module.illume2.src \
|
||||
module.conf.src
|
||||
|
||||
filesdir = $(datadir)/enlightenment/data/config/mobile
|
||||
files_DATA = \
|
||||
profile.desktop \
|
||||
enlightenment-mobile.png \
|
||||
e.cfg \
|
||||
e_bindings.cfg \
|
||||
module.battery.cfg \
|
||||
module.illume-home.cfg \
|
||||
module.illume-keyboard.cfg \
|
||||
module.illume-indicator.cfg \
|
||||
module.illume-softkey.cfg \
|
||||
module.illume2.cfg \
|
||||
module.conf.cfg
|
||||
|
||||
SUFFIXES = .cfg
|
||||
|
||||
.src.cfg:
|
||||
$(EET_EET) -e \
|
||||
$(top_builddir)/config/mobile/$@ config \
|
||||
$< 1
|
||||
|
||||
clean-local:
|
||||
rm -rf *.cfg *~
|
|
@ -0,0 +1,26 @@
|
|||
EXTRA_DIST += \
|
||||
config/mobile/profile.desktop \
|
||||
config/mobile/enlightenment-mobile.png \
|
||||
config/mobile/e.src \
|
||||
config/mobile/e_bindings.src \
|
||||
config/mobile/module.battery.src \
|
||||
config/mobile/module.illume-home.src \
|
||||
config/mobile/module.illume-keyboard.src \
|
||||
config/mobile/module.illume-indicator.src \
|
||||
config/mobile/module.illume-softkey.src \
|
||||
config/mobile/module.illume2.src \
|
||||
config/mobile/module.conf.src
|
||||
|
||||
configmobilefilesdir = $(datadir)/enlightenment/data/config/mobile
|
||||
configmobilefiles_DATA = \
|
||||
config/mobile/profile.desktop \
|
||||
config/mobile/enlightenment-mobile.png \
|
||||
config/mobile/e.cfg \
|
||||
config/mobile/e_bindings.cfg \
|
||||
config/mobile/module.battery.cfg \
|
||||
config/mobile/module.illume-home.cfg \
|
||||
config/mobile/module.illume-keyboard.cfg \
|
||||
config/mobile/module.illume-indicator.cfg \
|
||||
config/mobile/module.illume-softkey.cfg \
|
||||
config/mobile/module.illume2.cfg \
|
||||
config/mobile/module.conf.cfg
|
|
@ -1,8 +1,7 @@
|
|||
group "E_Config" struct {
|
||||
value "config_version" int: 1000011;
|
||||
value "config_version" int: 1000014;
|
||||
value "config_type" uint: 1;
|
||||
value "show_splash" int: 1;
|
||||
value "init_default_theme" string: "default.edj";
|
||||
value "desktop_default_name" string: "%i-%i";
|
||||
value "desktop_default_window_profile" string: "mobile";
|
||||
value "menus_scroll_speed" double: 1000.0000000000000000000000000;
|
||||
|
@ -265,12 +264,6 @@ group "E_Config" struct {
|
|||
}
|
||||
}
|
||||
group "modules" list {
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "conf_comp";
|
||||
value "enabled" uchar: 1;
|
||||
value "delayed" uchar: 0;
|
||||
value "priority" int: -1000;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "illume2";
|
||||
value "enabled" uchar: 1;
|
||||
|
@ -337,6 +330,12 @@ group "E_Config" struct {
|
|||
value "delayed" uchar: 1;
|
||||
value "priority" int: 0;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "lokker";
|
||||
value "enabled" uchar: 1;
|
||||
value "delayed" uchar: 0;
|
||||
value "priority" int: 0;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "conf";
|
||||
value "enabled" uchar: 1;
|
||||
|
@ -392,12 +391,6 @@ group "E_Config" struct {
|
|||
value "priority" int: 0;
|
||||
}
|
||||
}
|
||||
group "themes" list {
|
||||
group "E_Config_Theme" struct {
|
||||
value "category" string: "theme";
|
||||
value "file" string: "default.edj";
|
||||
}
|
||||
}
|
||||
group "gadcons" list {
|
||||
group "E_Config_Gadcon" struct {
|
||||
group "clients" list {
|
||||
|
|
|
@ -1,43 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
EET_EET = @eet_eet@
|
||||
|
||||
EXTRA_DIST = \
|
||||
profile.desktop \
|
||||
enlightenment-standard.png \
|
||||
e.src \
|
||||
e_bindings.src \
|
||||
module.battery.src \
|
||||
module.cpufreq.src \
|
||||
module.fileman.src \
|
||||
module.ibar.src \
|
||||
module.ibox.src \
|
||||
module.pager.src \
|
||||
module.temperature.src \
|
||||
module.conf.src
|
||||
|
||||
filesdir = $(datadir)/enlightenment/data/config/standard
|
||||
files_DATA = \
|
||||
profile.desktop \
|
||||
enlightenment-standard.png \
|
||||
e.cfg \
|
||||
e_bindings.cfg \
|
||||
module.battery.cfg \
|
||||
module.cpufreq.cfg \
|
||||
module.fileman.cfg \
|
||||
module.ibar.cfg \
|
||||
module.ibox.cfg \
|
||||
module.pager.cfg \
|
||||
module.temperature.cfg \
|
||||
module.conf.cfg
|
||||
|
||||
SUFFIXES = .cfg
|
||||
|
||||
.src.cfg:
|
||||
$(EET_EET) -e \
|
||||
$(top_builddir)/config/standard/$@ config \
|
||||
$< 1
|
||||
|
||||
clean-local:
|
||||
rm -rf *.cfg *~
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
EXTRA_DIST += \
|
||||
config/standard/profile.desktop \
|
||||
config/standard/enlightenment-standard.png \
|
||||
config/standard/e.src \
|
||||
config/standard/e_bindings.src \
|
||||
config/standard/module.battery.src \
|
||||
config/standard/module.cpufreq.src \
|
||||
config/standard/module.fileman.src \
|
||||
config/standard/module.ibar.src \
|
||||
config/standard/module.ibox.src \
|
||||
config/standard/module.pager.src \
|
||||
config/standard/module.temperature.src \
|
||||
config/standard/module.conf.src
|
||||
|
||||
configstandardfilesdir = $(datadir)/enlightenment/data/config/standard
|
||||
configstandardfiles_DATA = \
|
||||
config/standard/profile.desktop \
|
||||
config/standard/enlightenment-standard.png \
|
||||
config/standard/e.cfg \
|
||||
config/standard/e_bindings.cfg \
|
||||
config/standard/module.battery.cfg \
|
||||
config/standard/module.cpufreq.cfg \
|
||||
config/standard/module.fileman.cfg \
|
||||
config/standard/module.ibar.cfg \
|
||||
config/standard/module.ibox.cfg \
|
||||
config/standard/module.pager.cfg \
|
||||
config/standard/module.temperature.cfg \
|
||||
config/standard/module.conf.cfg
|
|
@ -1,8 +1,7 @@
|
|||
group "E_Config" struct {
|
||||
value "config_version" int: 1000011;
|
||||
value "config_version" int: 1000014;
|
||||
value "config_type" uint: 3;
|
||||
value "show_splash" int: 1;
|
||||
value "init_default_theme" string: "default.edj";
|
||||
value "desktop_default_name" string: "%i-%i";
|
||||
value "desktop_default_window_profile" string: "standard";
|
||||
value "menus_scroll_speed" double: 1000.0;
|
||||
|
@ -154,6 +153,7 @@ group "E_Config" struct {
|
|||
value "icon_theme" string: "Tango";
|
||||
value "icon_theme_overrides" uchar: 0;
|
||||
value "desk_flip_animate_mode" int: 1;
|
||||
value "desk_flip_animate_type" string: "auto/pane";
|
||||
value "desk_flip_animate_interpolation" int: 0;
|
||||
value "desk_flip_animate_time" double: 0.2;
|
||||
value "wallpaper_import_last_dev" string: "~/";
|
||||
|
@ -603,10 +603,9 @@ group "E_Config" struct {
|
|||
}
|
||||
value "name" string: "shelf";
|
||||
value "id" int: 1;
|
||||
value "container" int: 0;
|
||||
value "manager" int: 0;
|
||||
value "zone" int: 0;
|
||||
value "layer" int: 200;
|
||||
value "popup" uchar: 1;
|
||||
value "layer" int: 250;
|
||||
value "orient" int: 6;
|
||||
value "fit_along" uchar: 1;
|
||||
value "fit_size" uchar: 0;
|
||||
|
@ -867,19 +866,7 @@ group "E_Config" struct {
|
|||
value "id" int: 115;
|
||||
}
|
||||
}
|
||||
group "themes" list {
|
||||
group "E_Config_Theme" struct {
|
||||
value "category" string: "theme";
|
||||
value "file" string: "default.edj";
|
||||
}
|
||||
}
|
||||
group "modules" list {
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "conf_comp";
|
||||
value "enabled" uchar: 1;
|
||||
value "delayed" uchar: 0;
|
||||
value "priority" int: -1000;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "tasks";
|
||||
value "enabled" uchar: 1;
|
||||
|
@ -1066,6 +1053,12 @@ group "E_Config" struct {
|
|||
value "delayed" uchar: 1;
|
||||
value "priority" int: 0;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "lokker";
|
||||
value "enabled" uchar: 1;
|
||||
value "delayed" uchar: 0;
|
||||
value "priority" int: 0;
|
||||
}
|
||||
group "E_Config_Module" struct {
|
||||
value "name" string: "notification";
|
||||
value "enabled" uchar: 1;
|
||||
|
|
236
configure.ac
236
configure.ac
|
@ -2,11 +2,11 @@
|
|||
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
|
||||
m4_define([v_maj], [0])
|
||||
m4_define([v_min], [18])
|
||||
m4_define([v_mic], [0])
|
||||
dnl m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
|
||||
m4_define([v_mic], [99])
|
||||
m4_define([v_rev], m4_esyscmd([(git rev-list --count HEAD 2>/dev/null || echo 0) | tr -d '\n']))dnl
|
||||
##-- When released, remove the dnl on the below line
|
||||
dnl m4_undefine([v_rev])
|
||||
m4_define([relname], [0.17.99])
|
||||
m4_define([relname], [0.18.99])
|
||||
##-- When doing snapshots - change soname. remove dnl on below line
|
||||
m4_define([relname], [ver-pre-01])
|
||||
dnl m4_define([v_rel], [-release relname])
|
||||
|
@ -24,7 +24,6 @@ AC_CONFIG_SRCDIR([configure.ac])
|
|||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CANONICAL_BUILD
|
||||
AC_CANONICAL_HOST
|
||||
AC_ISC_POSIX
|
||||
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
AH_TOP([
|
||||
|
@ -36,14 +35,13 @@ AH_BOTTOM([
|
|||
])
|
||||
|
||||
AM_INIT_AUTOMAKE([1.11 dist-bzip2 -Wno-portability])
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
|
||||
AM_SILENT_RULES([yes])
|
||||
|
||||
AC_GNU_SOURCE
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
AC_PROG_MKDIR_P
|
||||
AC_C_BIGENDIAN
|
||||
AC_PROG_CC_C99
|
||||
AM_PROG_CC_C_O
|
||||
AC_C_CONST
|
||||
AC_FUNC_ALLOCA
|
||||
AC_C___ATTRIBUTE__
|
||||
|
||||
|
@ -59,13 +57,13 @@ AC_DEFINE_UNQUOTED(VMIC, [v_mic], [Micro version])
|
|||
AC_DEFINE_UNQUOTED(VREV, [v_rev], [Revison])
|
||||
version_info="lt_cur:lt_rev:lt_age"
|
||||
release_info="v_rel"
|
||||
AC_SUBST(version_info)
|
||||
AC_SUBST(release_info)
|
||||
AC_SUBST([version_info])
|
||||
AC_SUBST([release_info])
|
||||
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
|
||||
##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##--##
|
||||
|
||||
release=relname
|
||||
AC_SUBST(release)
|
||||
AC_SUBST([release])
|
||||
|
||||
PKG_PROG_PKG_CONFIG
|
||||
|
||||
|
@ -93,7 +91,7 @@ extern char **environ;
|
|||
AC_DEFINE(HAVE_ENVIRON, 1, [Have environ var])
|
||||
])
|
||||
|
||||
efl_version="1.8.0"
|
||||
efl_version="1.8.99"
|
||||
AC_SUBST(efl_version)
|
||||
|
||||
AC_CHECK_HEADERS([sys/timerfd.h sys/ptrace.h arpa/inet.h netinet/in.h])
|
||||
|
@ -112,11 +110,11 @@ if test "x$res" = "xno"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(fnmatch_libs)
|
||||
AC_SUBST([fnmatch_libs])
|
||||
|
||||
have_pam=no
|
||||
AC_ARG_ENABLE(pam,
|
||||
AC_HELP_STRING([--enable-pam], [enable PAM support @<:@default=detect@:>@]),
|
||||
AS_HELP_STRING([--enable-pam], [enable PAM support @<:@default=detect@:>@]),
|
||||
[want_pam=$enableval],
|
||||
[want_pam=auto]
|
||||
)
|
||||
|
@ -131,11 +129,11 @@ if test "x$want_pam" != "xno" ; then
|
|||
fi
|
||||
|
||||
dnl AC_E_CHECK_PKG(VALGRIND, [valgrind >= 2.4.0], [], [:])
|
||||
AC_SUBST(VALGRIND_CFLAGS)
|
||||
AC_SUBST(VALGRIND_LIBS)
|
||||
AC_SUBST([VALGRIND_CFLAGS])
|
||||
AC_SUBST([VALGRIND_LIBS])
|
||||
|
||||
MODULE_ARCH="$host_os-$host_cpu-relname"
|
||||
AC_SUBST(MODULE_ARCH)
|
||||
AC_SUBST([MODULE_ARCH])
|
||||
AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
|
||||
|
||||
if test "x${bindir}" = 'xNONE'; then
|
||||
|
@ -147,7 +145,7 @@ if test "x${bindir}" = 'xNONE'; then
|
|||
else
|
||||
PACKAGE_BIN_DIR="${bindir}"
|
||||
fi
|
||||
AC_SUBST(PACKAGE_BIN_DIR)
|
||||
AC_SUBST([PACKAGE_BIN_DIR])
|
||||
|
||||
if test "x${libdir}" = 'xNONE'; then
|
||||
if test "x${prefix}" = "xNONE"; then
|
||||
|
@ -158,7 +156,7 @@ if test "x${libdir}" = 'xNONE'; then
|
|||
else
|
||||
PACKAGE_LIB_DIR="${libdir}"
|
||||
fi
|
||||
AC_SUBST(PACKAGE_LIB_DIR)
|
||||
AC_SUBST([PACKAGE_LIB_DIR])
|
||||
|
||||
if test "x${prefix}" = "xNONE"; then
|
||||
PACKAGE_DATA_DIR="${ac_default_prefix}/share/${PACKAGE}"
|
||||
|
@ -169,15 +167,15 @@ else
|
|||
LOCALE_DIR="${prefix}/share/locale"
|
||||
PACKAGE_SYSCONF_DIR="${sysconfdir}"
|
||||
fi
|
||||
AC_SUBST(PACKAGE_DATA_DIR)
|
||||
AC_SUBST(LOCALE_DIR)
|
||||
AC_SUBST(PACKAGE_SYSCONF_DIR)
|
||||
AC_SUBST([PACKAGE_DATA_DIR])
|
||||
AC_SUBST([LOCALE_DIR])
|
||||
AC_SUBST([PACKAGE_SYSCONF_DIR])
|
||||
|
||||
#######################################
|
||||
## Simple X11 build/link
|
||||
|
||||
AC_ARG_ENABLE(simple-x11,
|
||||
AC_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]),
|
||||
AS_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]),
|
||||
[ want_evas_simple_x11=$enableval ]
|
||||
)
|
||||
|
||||
|
@ -198,8 +196,8 @@ dnl ],[
|
|||
dnl AC_MSG_ERROR([Cannot find X headers and libraries.])
|
||||
dnl ]
|
||||
dnl )
|
||||
dnl AC_SUBST(x_cflags)
|
||||
dnl AC_SUBST(x_libs)
|
||||
dnl AC_SUBST([x_cflags])
|
||||
dnl AC_SUBST([x_libs])
|
||||
|
||||
cf_cflags=""
|
||||
cf_libs=""
|
||||
|
@ -213,8 +211,8 @@ AC_CHECK_HEADERS(CFBase.h,
|
|||
]
|
||||
)
|
||||
CPPFLAGS="${PCPPFLAGS}"
|
||||
AC_SUBST(cf_cflags)
|
||||
AC_SUBST(cf_libs)
|
||||
AC_SUBST([cf_cflags])
|
||||
AC_SUBST([cf_libs])
|
||||
|
||||
PKG_CHECK_MODULES([BLUEZ], [bluez],
|
||||
[have_bluetooth="yes"],
|
||||
|
@ -296,7 +294,7 @@ dnl fi
|
|||
#ALL_LINGUAS="bg de eo es fi fr ja pt ru zh_CN hu sl it cs da sk sv nb nl zh_TW"
|
||||
# a lot of .po's are broken
|
||||
ALL_LINGUAS="bg ca cs da de el eo es fi fr fr_CH he hu it ja ko nb nl pl pt_BR ru sk sl sv tr zh_CN zh_TW"
|
||||
AC_SUBST(ALL_LINGUAS)
|
||||
AC_SUBST([ALL_LINGUAS])
|
||||
|
||||
m4_ifdef([AM_GNU_GETTEXT_VERSION], [
|
||||
AM_GNU_GETTEXT_VERSION([0.17])
|
||||
|
@ -315,7 +313,7 @@ have_po="yes"
|
|||
have_po="no"
|
||||
])
|
||||
])
|
||||
AC_SUBST(LTLIBINTL)
|
||||
AC_SUBST([LTLIBINTL])
|
||||
if test "x$LIBINTL" = "x"; then
|
||||
LIBINTL="$INTLLIBS"
|
||||
fi
|
||||
|
@ -327,7 +325,7 @@ fi
|
|||
AM_CONDITIONAL([HAVE_PO], [test "x${have_po}" = "xyes"])
|
||||
|
||||
AC_CHECK_LIB(dl, dlopen, dlopen_libs=-ldl)
|
||||
AC_SUBST(dlopen_libs)
|
||||
AC_SUBST([dlopen_libs])
|
||||
|
||||
AC_MSG_CHECKING([whether to install sysactions.conf])
|
||||
AC_ARG_ENABLE([install-sysactions],
|
||||
|
@ -480,10 +478,7 @@ PKG_CHECK_MODULES(E_THUMB, [
|
|||
|
||||
PKG_CHECK_MODULES(E_GRABBER, [
|
||||
eina >= ${efl_version}
|
||||
ecore >= ${efl_version}
|
||||
eet >= ${efl_version}
|
||||
efreet >= ${efl_version}
|
||||
ecore-x >= ${efl_version}
|
||||
])
|
||||
|
||||
efm_requires="\
|
||||
|
@ -591,10 +586,10 @@ e_libs="$E_LIBS $LIBINTL $fnmatch_libs $execinfo_libs"
|
|||
e_cflags="-DUSE_E_CONFIG_H $E_CFLAGS"
|
||||
e_configflags="-DUSE_E_CONFIG_H"
|
||||
|
||||
AC_SUBST(e_libs)
|
||||
AC_SUBST(e_cflags)
|
||||
AC_SUBST(e_configflags)
|
||||
AC_SUBST(requirements_e)
|
||||
AC_SUBST([e_libs])
|
||||
AC_SUBST([e_cflags])
|
||||
AC_SUBST([e_configflags])
|
||||
AC_SUBST([requirements_e])
|
||||
|
||||
PKG_CHECK_EXISTS([xkeyboard-config],[
|
||||
xkb_base=`$PKG_CONFIG --variable=xkb_base xkeyboard-config 2>/dev/null`
|
||||
|
@ -610,7 +605,7 @@ AC_ARG_WITH(profile,
|
|||
AC_MSG_NOTICE([Enlightenment build profile set to $profile])
|
||||
EDJE_DEF="-DLOWRES_PDA=1 -DMEDIUMRES_PDA=2 -DHIRES_PDA=3 -DSLOW_PC=4 -DMEDIUM_PC=5 -DFAST_PC=6"
|
||||
EDJE_DEF=$EDJE_DEF" -DE18_PROFILE"=$profile
|
||||
AC_SUBST(EDJE_DEF)
|
||||
AC_SUBST([EDJE_DEF])
|
||||
|
||||
AC_ARG_WITH(edje-cc,
|
||||
[ --with-edje-cc=PATH specify a specific path to edje_cc],
|
||||
|
@ -621,7 +616,7 @@ AC_ARG_WITH(edje-cc,
|
|||
],[
|
||||
edje_cc=$(pkg-config --variable=prefix edje)/bin/edje_cc
|
||||
])
|
||||
AC_SUBST(edje_cc)
|
||||
AC_SUBST([edje_cc])
|
||||
|
||||
PKG_CHECK_MODULES(EET, [eet >= ${efl_version}])
|
||||
AC_ARG_WITH(eet-eet,
|
||||
|
@ -633,7 +628,7 @@ AC_ARG_WITH(eet-eet,
|
|||
],[
|
||||
eet_eet=$(pkg-config --variable=prefix eet)/bin/eet
|
||||
])
|
||||
AC_SUBST(eet_eet)
|
||||
AC_SUBST([eet_eet])
|
||||
|
||||
AC_DEFINE(E_INTERNAL, 1, "This define can be used to wrap internal E stuff, as config.h isn't exported")
|
||||
|
||||
|
@ -654,7 +649,7 @@ case "$host_os" in
|
|||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(BATTERY_LDFLAGS)
|
||||
AC_SUBST([BATTERY_LDFLAGS])
|
||||
AM_CONDITIONAL([HAVE_OPENBSD], [test "x${have_openbsd}" = "xyes"])
|
||||
|
||||
AM_CONDITIONAL(HAVE_TEMPERATURE, false)
|
||||
|
@ -671,7 +666,7 @@ define([CHECK_MODULE_MUSIC_CONTROL],
|
|||
|
||||
##have_exchange=no
|
||||
##AC_ARG_ENABLE(exchange,
|
||||
## AC_HELP_STRING([--disable-exchange], [disable Exchange support @<:@default=detect@:>@]),
|
||||
## AS_HELP_STRING([--disable-exchange], [disable Exchange support @<:@default=detect@:>@]),
|
||||
## [want_exchange=$enableval],
|
||||
## [want_exchange=auto]
|
||||
##)
|
||||
|
@ -690,7 +685,7 @@ AM_CONDITIONAL(HAVE_EXCHANGE, false)
|
|||
have_enotify=no
|
||||
AM_CONDITIONAL([HAVE_ENOTIFY], [false])
|
||||
AC_ARG_ENABLE([enotify],
|
||||
AC_HELP_STRING([--disable-enotify], [disable Enotify support @<:@default=detect@:>@]),
|
||||
AS_HELP_STRING([--disable-enotify], [disable Enotify support @<:@default=detect@:>@]),
|
||||
[e_cv_want_enotify=$enableval],
|
||||
AC_CACHE_VAL([e_cv_want_enotify], [e_cv_want_enotify=yes])
|
||||
)
|
||||
|
@ -718,6 +713,7 @@ define([CHECK_MODULE_NOTIFICATION],
|
|||
fi
|
||||
])
|
||||
|
||||
|
||||
AM_CONDITIONAL(HAVE_ALSA, false)
|
||||
define([CHECK_MODULE_MIXER],
|
||||
[
|
||||
|
@ -743,8 +739,8 @@ define([CHECK_MODULE_MIXER],
|
|||
fi
|
||||
])
|
||||
|
||||
AC_SUBST(SOUND_CFLAGS)
|
||||
AC_SUBST(SOUND_LIBS)
|
||||
AC_SUBST([SOUND_CFLAGS])
|
||||
AC_SUBST([SOUND_LIBS])
|
||||
|
||||
AM_CONDITIONAL(HAVE_ECONNMAN, false)
|
||||
AM_CONDITIONAL(HAVE_DUMMY, false)
|
||||
|
@ -753,8 +749,8 @@ define([CHECK_MODULE_CONNMAN],
|
|||
AC_E_CHECK_PKG(ECONNMAN, [ eldbus >= $efl_version ], [], [CONNMAN=false])
|
||||
dnl AC_E_CHECK_PKG(DUMMY, [ connman >= 1.0 ], [], [CONNMAN=false])
|
||||
])
|
||||
AC_SUBST(ECONNMAN_CFLAGS)
|
||||
AC_SUBST(ECONNMAN_LIBS)
|
||||
AC_SUBST([ECONNMAN_CFLAGS])
|
||||
AC_SUBST([ECONNMAN_LIBS])
|
||||
|
||||
AM_CONDITIONAL(HAVE_BLUEZ4, false)
|
||||
AM_CONDITIONAL(HAVE_DUMMY, false)
|
||||
|
@ -762,42 +758,50 @@ define([CHECK_MODULE_BLUEZ4],
|
|||
[
|
||||
AC_E_CHECK_PKG(BLUEZ4, [ eldbus ],)
|
||||
])
|
||||
AC_SUBST(EBLUEZ4_CFLAGS)
|
||||
AC_SUBST(EBLUEZ4_LIBS)
|
||||
AC_SUBST([EBLUEZ4_CFLAGS])
|
||||
AC_SUBST([EBLUEZ4_LIBS])
|
||||
|
||||
have_wayland_only=no
|
||||
AC_ARG_ENABLE([wayland-only],
|
||||
AS_HELP_STRING([--enable-wayland-only],[enable wayland-only version of enlightenment @<:@default=disabled@:>@]),
|
||||
[e_cv_want_wayland_only=$enableval],
|
||||
[e_cv_want_wayland_only=no])
|
||||
AC_MSG_CHECKING([whether wayland-only version is enabled])
|
||||
AC_MSG_RESULT([${e_cv_want_wayland_only}])
|
||||
|
||||
have_wayland_clients=no
|
||||
AC_ARG_ENABLE([wayland-clients],
|
||||
AS_HELP_STRING([--enable-wayland-clients],[enable wayland clients in composite module @<:@default=disabled@:>@]),
|
||||
[e_cv_want_wayland_clients=$enableval],
|
||||
[e_cv_want_wayland_clients=no])
|
||||
|
||||
AC_MSG_CHECKING([whether wayland client support is enabled])
|
||||
AC_MSG_RESULT([${e_cv_want_wayland_clients}])
|
||||
|
||||
if test "x$e_cv_want_wayland_clients" != "xno";then
|
||||
PKG_CHECK_MODULES([WAYLAND], [wayland-server >= 1.2.90 pixman-1 >= 0.3 xkbcommon >= 0.3.0],
|
||||
have_wayland_egl=no
|
||||
AC_ARG_ENABLE([wayland-egl],
|
||||
AS_HELP_STRING([--enable-wayland-egl],[enable wayland to render using EGL @<:@default=disabled@:>@]),
|
||||
[e_cv_want_wayland_egl=$enableval],
|
||||
[e_cv_want_wayland_egl=no])
|
||||
AC_MSG_CHECKING([whether wayland EGL support is enabled])
|
||||
AC_MSG_RESULT([${e_cv_want_wayland_egl}])
|
||||
|
||||
if test "x${e_cv_want_wayland_only}" != "xno" || test "x${e_cv_want_wayland_clients}" != "xno";then
|
||||
PKG_CHECK_MODULES([WAYLAND], [ecore-wayland wayland-server pixman-1 xkbcommon],
|
||||
[
|
||||
have_wayland_clients=yes
|
||||
AC_DEFINE_UNQUOTED([HAVE_WAYLAND_CLIENTS],[1],[enable wayland client support])
|
||||
have_wayland=yes
|
||||
AC_DEFINE_UNQUOTED([HAVE_WAYLAND],[1],[enable wayland support])
|
||||
],
|
||||
[have_wayland_clients=no])
|
||||
[have_wayland=no])
|
||||
else
|
||||
have_wayland_clients=no
|
||||
have_wayland=no
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([HAVE_WAYLAND_CLIENTS], [test "x${have_wayland_clients}" = "xyes"])
|
||||
|
||||
have_wayland_egl=no
|
||||
if test "x${have_wayland_clients}" = "xyes"; then
|
||||
AC_ARG_ENABLE([wayland-egl],
|
||||
AS_HELP_STRING([--enable-wayland-egl],[enable wayland clients to render using EGL @<:@default=disabled@:>@]),
|
||||
[e_cv_want_wayland_egl=$enableval],
|
||||
[e_cv_want_wayland_egl=no])
|
||||
|
||||
AC_MSG_CHECKING([whether wayland client EGL support is enabled])
|
||||
AC_MSG_RESULT([${e_cv_want_wayland_egl}])
|
||||
|
||||
if test "x$e_cv_want_wayland_egl" != "xno";then
|
||||
if test "x${have_wayland}" = "xyes"; then
|
||||
if test "x${e_cv_want_wayland_clients}" != "xno"; then
|
||||
have_wayland_clients=yes
|
||||
AC_DEFINE_UNQUOTED([HAVE_WAYLAND_CLIENTS],[1],[enable wayland clients in composite module])
|
||||
fi
|
||||
if test "x${e_cv_want_wayland_egl}" != "xno";then
|
||||
PKG_CHECK_MODULES([WAYLAND_EGL], [egl >= 7.10],
|
||||
[
|
||||
have_wayland_egl=yes
|
||||
|
@ -809,8 +813,24 @@ if test "x${have_wayland_clients}" = "xyes"; then
|
|||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL([HAVE_WAYLAND], [test "x${have_wayland}" = "xyes"])
|
||||
AM_CONDITIONAL([HAVE_WAYLAND_ONLY], [test "x${have_wayland_only}" = "xyes"])
|
||||
AM_CONDITIONAL([HAVE_WAYLAND_CLIENTS], [test "x${have_wayland_clients}" = "xyes"])
|
||||
AM_CONDITIONAL([HAVE_WAYLAND_EGL], [test "x${have_wayland_egl}" = "xyes"])
|
||||
|
||||
PKG_CHECK_MODULES([ECORE_X], [ecore-x >= ${efl_version}])
|
||||
if test -n "$ECORE_X_CFLAGS" ; then
|
||||
ecore_x=true
|
||||
else
|
||||
ecore_x=false
|
||||
fi
|
||||
|
||||
if test "x${ecore_x}" = "xtrue" && test -n "$WAYLAND_CFLAGS" ; then
|
||||
wl_x11=true
|
||||
else
|
||||
wl_x11=false
|
||||
fi
|
||||
|
||||
define([CHECK_MODULE_WL_DESKTOP_SHELL],
|
||||
[
|
||||
if test "x${have_wayland_clients}" = "xyes"; then
|
||||
|
@ -821,19 +841,20 @@ define([CHECK_MODULE_WL_DESKTOP_SHELL],
|
|||
])
|
||||
AM_CONDITIONAL([HAVE_WL_DESKTOP_SHELL], [test "x${WL_DESKTOP_SHELL}" = "xtrue"])
|
||||
|
||||
define([CHECK_MODULE_WL_SCREENSHOT],
|
||||
define([CHECK_MODULE_WL_FB],
|
||||
[
|
||||
if test "x${have_wayland_clients}" = "xyes"; then
|
||||
AC_E_CHECK_PKG(WL_SCREENSHOT, [ ecore >= $efl_version ecore-wayland >= $efl_version eina >= $efl_version ], [WL_SCREENSHOT=true], [WL_SCREENSHOT=false])
|
||||
AC_E_CHECK_PKG(WL_FB, [ ecore-fb >= $efl_version ecore >= $efl_version eina >= $efl_version ], [WL_FB=true], [WL_FB=false])
|
||||
else
|
||||
WL_SCREENSHOT=false
|
||||
WL_FB=false
|
||||
fi
|
||||
])
|
||||
AM_CONDITIONAL([HAVE_WL_SCREENSHOT], [test "x${WL_SCREENSHOT}" = "xtrue"])
|
||||
AM_CONDITIONAL([HAVE_WL_FB], [test "x${WL_FB}" = "xtrue"])
|
||||
|
||||
AC_E_OPTIONAL_MODULE([ibar], true)
|
||||
AC_E_OPTIONAL_MODULE([clock], true)
|
||||
AC_E_OPTIONAL_MODULE([pager], true)
|
||||
AC_E_OPTIONAL_MODULE([pager16], true)
|
||||
AC_E_OPTIONAL_MODULE([battery], true, [CHECK_MODULE_BATTERY])
|
||||
AC_E_OPTIONAL_MODULE([temperature], true, [CHECK_MODULE_TEMPERATURE])
|
||||
AC_E_OPTIONAL_MODULE([notification], true, [CHECK_MODULE_NOTIFICATION])
|
||||
|
@ -845,7 +866,6 @@ AC_E_OPTIONAL_MODULE([fileman], true)
|
|||
AC_E_OPTIONAL_MODULE([fileman_opinfo], true)
|
||||
AC_E_OPTIONAL_MODULE([wizard], true)
|
||||
AC_E_OPTIONAL_MODULE([conf], true)
|
||||
AC_E_OPTIONAL_MODULE([conf_comp], true)
|
||||
AC_E_OPTIONAL_MODULE([conf_wallpaper2], true)
|
||||
AC_E_OPTIONAL_MODULE([conf_theme], true, true)
|
||||
AC_E_OPTIONAL_MODULE([conf_intl], true)
|
||||
|
@ -865,24 +885,27 @@ AC_E_OPTIONAL_MODULE([gadman], true)
|
|||
AC_E_OPTIONAL_MODULE([mixer], true, [CHECK_MODULE_MIXER])
|
||||
AC_E_OPTIONAL_MODULE([connman], true, [CHECK_MODULE_CONNMAN])
|
||||
AC_E_OPTIONAL_MODULE([bluez4], true, [CHECK_MODULE_BLUEZ4])
|
||||
AC_E_OPTIONAL_MODULE([illume2], true)
|
||||
#AC_E_OPTIONAL_MODULE([illume2], true)
|
||||
AC_E_OPTIONAL_MODULE([syscon], true)
|
||||
AC_E_OPTIONAL_MODULE([everything], true)
|
||||
AC_E_OPTIONAL_MODULE([systray], true)
|
||||
AC_E_OPTIONAL_MODULE([appmenu], true)
|
||||
AC_E_OPTIONAL_MODULE([quickaccess], true)
|
||||
AC_E_OPTIONAL_MODULE([teamwork], true)
|
||||
AC_E_OPTIONAL_MODULE([shot], true)
|
||||
AC_E_OPTIONAL_MODULE([lokker], true)
|
||||
AC_E_OPTIONAL_MODULE([shot], true, $ecore_x)
|
||||
AC_E_OPTIONAL_MODULE([backlight], true)
|
||||
AC_E_OPTIONAL_MODULE([tasks], true)
|
||||
AC_E_OPTIONAL_MODULE([conf_randr], true)
|
||||
AC_E_OPTIONAL_MODULE([xkbswitch], true)
|
||||
AC_E_OPTIONAL_MODULE([conf_randr], true, $ecore_x)
|
||||
AC_E_OPTIONAL_MODULE([xkbswitch], true, $ecore_x)
|
||||
AC_E_OPTIONAL_MODULE([tiling], true)
|
||||
AC_E_OPTIONAL_MODULE([access], true)
|
||||
AC_E_OPTIONAL_MODULE([access], false, $ecore_x)
|
||||
AC_E_OPTIONAL_MODULE([music_control], true, [CHECK_MODULE_MUSIC_CONTROL])
|
||||
AC_E_OPTIONAL_MODULE([contact], true)
|
||||
AC_E_OPTIONAL_MODULE([contact], false)
|
||||
AC_E_OPTIONAL_MODULE([wl_desktop_shell], true, [CHECK_MODULE_WL_DESKTOP_SHELL])
|
||||
AC_E_OPTIONAL_MODULE([wl_screenshot], true, [CHECK_MODULE_WL_SCREENSHOT])
|
||||
AC_E_OPTIONAL_MODULE([wl_x11], $have_wayland, $wl_x11)
|
||||
AC_E_OPTIONAL_MODULE([wl_fb], $have_wayland, [CHECK_MODULE_WL_FB])
|
||||
#AC_E_OPTIONAL_MODULE([wl_screenshot], true, [CHECK_MODULE_WL_SCREENSHOT])
|
||||
|
||||
HALT="/sbin/shutdown -h now"
|
||||
REBOOT="/sbin/shutdown -r now"
|
||||
|
@ -917,10 +940,10 @@ case "$host_os" in
|
|||
fi
|
||||
;;
|
||||
esac
|
||||
AC_SUBST(HALT)
|
||||
AC_SUBST(REBOOT)
|
||||
AC_SUBST(SUSPEND)
|
||||
AC_SUBST(HIBERNATE)
|
||||
AC_SUBST([HALT])
|
||||
AC_SUBST([REBOOT])
|
||||
AC_SUBST([SUSPEND])
|
||||
AC_SUBST([HIBERNATE])
|
||||
|
||||
m4_ifdef([v_mic],
|
||||
[
|
||||
|
@ -939,14 +962,11 @@ AC_OUTPUT([
|
|||
Makefile
|
||||
enlightenment.spec
|
||||
enlightenment.pc
|
||||
src/Makefile
|
||||
src/bin/Makefile
|
||||
src/bin/e_fm_shared_types.h
|
||||
src/bin/e_fm/Makefile
|
||||
src/modules/Makefile
|
||||
src/modules/ibar/module.desktop
|
||||
src/modules/clock/module.desktop
|
||||
src/modules/pager/module.desktop
|
||||
src/modules/pager16/module.desktop
|
||||
src/modules/battery/module.desktop
|
||||
src/modules/temperature/module.desktop
|
||||
src/modules/notification/module.desktop
|
||||
|
@ -977,24 +997,14 @@ src/modules/gadman/module.desktop
|
|||
src/modules/mixer/module.desktop
|
||||
src/modules/connman/module.desktop
|
||||
src/modules/bluez4/module.desktop
|
||||
src/modules/illume2/doc/illume.dox
|
||||
src/modules/illume2/module.desktop
|
||||
src/modules/illume-home/module.desktop
|
||||
src/modules/illume-home-toggle/module.desktop
|
||||
src/modules/illume-softkey/module.desktop
|
||||
src/modules/illume-keyboard/module.desktop
|
||||
src/modules/illume-indicator/module.desktop
|
||||
src/modules/illume-kbd-toggle/module.desktop
|
||||
src/modules/illume-mode-toggle/module.desktop
|
||||
src/modules/illume-bluetooth/module.desktop
|
||||
src/modules/syscon/module.desktop
|
||||
src/modules/everything/module.desktop
|
||||
src/modules/everything/everything.pc
|
||||
src/modules/systray/module.desktop
|
||||
src/modules/appmenu/module.desktop
|
||||
src/modules/conf_comp/module.desktop
|
||||
src/modules/quickaccess/module.desktop
|
||||
src/modules/teamwork/module.desktop
|
||||
src/modules/lokker/module.desktop
|
||||
src/modules/shot/module.desktop
|
||||
src/modules/backlight/module.desktop
|
||||
src/modules/tasks/module.desktop
|
||||
|
@ -1005,31 +1015,25 @@ src/modules/music-control/module.desktop
|
|||
src/modules/contact/module.desktop
|
||||
src/modules/wl_desktop_shell/module.desktop
|
||||
src/modules/wl_screenshot/module.desktop
|
||||
data/Makefile
|
||||
data/images/Makefile
|
||||
data/flags/Makefile
|
||||
data/favorites/Makefile
|
||||
data/desktop/Makefile
|
||||
data/input_methods/Makefile
|
||||
data/xsession/Makefile
|
||||
data/xsession/enlightenment.desktop
|
||||
data/tools/Makefile
|
||||
data/etc/Makefile
|
||||
data/etc/sysactions.conf
|
||||
data/icons/Makefile
|
||||
data/backgrounds/Makefile
|
||||
data/units/Makefile
|
||||
data/units/e18.service
|
||||
doc/Makefile
|
||||
doc/Doxyfile
|
||||
doc/e.dox
|
||||
config/Makefile
|
||||
config/default/Makefile
|
||||
config/standard/Makefile
|
||||
config/mobile/Makefile
|
||||
$po_makefile_in
|
||||
])
|
||||
|
||||
#src/modules/illume2/doc/illume.dox
|
||||
#src/modules/illume2/module.desktop
|
||||
#src/modules/illume-home/module.desktop
|
||||
#src/modules/illume-home-toggle/module.desktop
|
||||
#src/modules/illume-softkey/module.desktop
|
||||
#src/modules/illume-keyboard/module.desktop
|
||||
#src/modules/illume-indicator/module.desktop
|
||||
#src/modules/illume-kbd-toggle/module.desktop
|
||||
#src/modules/illume-mode-toggle/module.desktop
|
||||
#src/modules/illume-bluetooth/module.desktop
|
||||
|
||||
# report
|
||||
txt_strip() {
|
||||
echo "[$]@" | sed -e 's/^[[ \t]]*\([[^ \t]]*\)[[ \t]]*$/\1/g'
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
SUBDIRS = \
|
||||
images \
|
||||
tools \
|
||||
xsession \
|
||||
input_methods \
|
||||
etc \
|
||||
icons \
|
||||
backgrounds \
|
||||
flags \
|
||||
favorites \
|
||||
desktop \
|
||||
units
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
include data/images/Makefile.mk
|
||||
include data/tools/Makefile.mk
|
||||
include data/xsession/Makefile.mk
|
||||
include data/input_methods/Makefile.mk
|
||||
include data/etc/Makefile.mk
|
||||
include data/icons/Makefile.mk
|
||||
include data/backgrounds/Makefile.mk
|
||||
include data/flags/Makefile.mk
|
||||
include data/favorites/Makefile.mk
|
||||
include data/desktop/Makefile.mk
|
||||
include data/units/Makefile.mk
|
|
@ -1,42 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/enlightenment/data/backgrounds
|
||||
files_DATA = \
|
||||
Brown_Rock_Hi.edj \
|
||||
Colorful_Roses.edj \
|
||||
Darkconcrete.edj \
|
||||
Dark_Gradient.edj \
|
||||
Grassy.edj \
|
||||
Japanesemaple.edj \
|
||||
Lakegrass.edj \
|
||||
Light_Gradient.edj \
|
||||
Mossstring.edj \
|
||||
Motleyrock.edj \
|
||||
Newgrowth.edj \
|
||||
Orange_Roses.edj \
|
||||
Pattern_Radial.edj \
|
||||
Pattern_Vertical.edj \
|
||||
Pattern_Vertical_Hi.edj \
|
||||
Pine_Silhouettes.edj \
|
||||
Purple_Flower_Bunch.edj \
|
||||
Skywall.edj \
|
||||
Stringflower.edj \
|
||||
Wetgrass.edj \
|
||||
Wetleaf.edj \
|
||||
Whiterock.edj \
|
||||
Hills.edj \
|
||||
Light.edj \
|
||||
Temple.edj \
|
||||
Train.edj \
|
||||
Curly_Leaves.edj \
|
||||
Flower_Petals.edj \
|
||||
Go_Away.edj \
|
||||
Green_Stem.edj \
|
||||
Leafy_Red.edj \
|
||||
Ramen.edj \
|
||||
Shady_Leaves.edj \
|
||||
Windy_Palm.edj \
|
||||
Lantern_Cluster.edj \
|
||||
Wall_Lanterns.edj
|
||||
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,41 @@
|
|||
backgroundfilesdir = $(datadir)/enlightenment/data/backgrounds
|
||||
backgroundfiles_DATA = \
|
||||
data/backgrounds/Brown_Rock_Hi.edj \
|
||||
data/backgrounds/Colorful_Roses.edj \
|
||||
data/backgrounds/Darkconcrete.edj \
|
||||
data/backgrounds/Dark_Gradient.edj \
|
||||
data/backgrounds/Grassy.edj \
|
||||
data/backgrounds/Japanesemaple.edj \
|
||||
data/backgrounds/Lakegrass.edj \
|
||||
data/backgrounds/Light_Gradient.edj \
|
||||
data/backgrounds/Mossstring.edj \
|
||||
data/backgrounds/Motleyrock.edj \
|
||||
data/backgrounds/Newgrowth.edj \
|
||||
data/backgrounds/Orange_Roses.edj \
|
||||
data/backgrounds/Pattern_Radial.edj \
|
||||
data/backgrounds/Pattern_Vertical.edj \
|
||||
data/backgrounds/Pattern_Vertical_Hi.edj \
|
||||
data/backgrounds/Pine_Silhouettes.edj \
|
||||
data/backgrounds/Purple_Flower_Bunch.edj \
|
||||
data/backgrounds/Skywall.edj \
|
||||
data/backgrounds/Stringflower.edj \
|
||||
data/backgrounds/Wetgrass.edj \
|
||||
data/backgrounds/Wetleaf.edj \
|
||||
data/backgrounds/Whiterock.edj \
|
||||
data/backgrounds/Hills.edj \
|
||||
data/backgrounds/Light.edj \
|
||||
data/backgrounds/Temple.edj \
|
||||
data/backgrounds/Train.edj \
|
||||
data/backgrounds/Curly_Leaves.edj \
|
||||
data/backgrounds/Flower_Petals.edj \
|
||||
data/backgrounds/Go_Away.edj \
|
||||
data/backgrounds/Green_Stem.edj \
|
||||
data/backgrounds/Leafy_Red.edj \
|
||||
data/backgrounds/Ramen.edj \
|
||||
data/backgrounds/Shady_Leaves.edj \
|
||||
data/backgrounds/Windy_Palm.edj \
|
||||
data/backgrounds/Lantern_Cluster.edj \
|
||||
data/backgrounds/Wall_Lanterns.edj
|
||||
|
||||
|
||||
EXTRA_DIST += $(backgroundfiles_DATA)
|
|
@ -1,6 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/applications
|
||||
files_DATA = \
|
||||
enlightenment_filemanager.desktop
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,5 @@
|
|||
desktopfilesdir = $(datadir)/applications
|
||||
desktopfiles_DATA = \
|
||||
data/desktop/enlightenment_filemanager.desktop
|
||||
|
||||
EXTRA_DIST += $(desktopfiles_DATA)
|
|
@ -1,16 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(sysconfdir)/enlightenment
|
||||
files_DATA =
|
||||
|
||||
if INSTALL_SYSACTIONS
|
||||
files_DATA += sysactions.conf
|
||||
endif
|
||||
|
||||
menusdir = $(sysconfdir)/xdg/menus
|
||||
menus_DATA =
|
||||
|
||||
if INSTALL_ENLIGHTENMENT_MENU
|
||||
menus_DATA += enlightenment.menu
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(files_DATA) $(menus_DATA)
|
|
@ -0,0 +1,15 @@
|
|||
etcfilesdir = $(sysconfdir)/enlightenment
|
||||
etcfiles_DATA =
|
||||
|
||||
if INSTALL_SYSACTIONS
|
||||
etcfiles_DATA += data/etc/sysactions.conf
|
||||
endif
|
||||
|
||||
etcmenusdir = $(sysconfdir)/xdg/menus
|
||||
etcmenus_DATA =
|
||||
|
||||
if INSTALL_ENLIGHTENMENT_MENU
|
||||
etcmenus_DATA += data/etc/enlightenment.menu
|
||||
endif
|
||||
|
||||
EXTRA_DIST += $(etcfiles_DATA) $(etcmenus_DATA)
|
|
@ -1,11 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
favsdir = $(datadir)/enlightenment/data/favorites
|
||||
favs_DATA = \
|
||||
.order \
|
||||
desktop.desktop \
|
||||
home.desktop \
|
||||
root.desktop \
|
||||
tmp.desktop
|
||||
|
||||
EXTRA_DIST = $(favs_DATA)
|
|
@ -0,0 +1,9 @@
|
|||
datafavsdir = $(datadir)/enlightenment/data/favorites
|
||||
datafavs_DATA = \
|
||||
data/favorites/.order \
|
||||
data/favorites/desktop.desktop \
|
||||
data/favorites/home.desktop \
|
||||
data/favorites/root.desktop \
|
||||
data/favorites/tmp.desktop
|
||||
|
||||
EXTRA_DIST += $(datafavs_DATA)
|
|
@ -1,104 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/enlightenment/data/flags
|
||||
files_DATA = \
|
||||
ad_flag.png \
|
||||
af_flag.png \
|
||||
al_flag.png \
|
||||
am_flag.png \
|
||||
ara_flag.png \
|
||||
ar_flag.png \
|
||||
at_flag.png \
|
||||
az_flag.png \
|
||||
ba_flag.png \
|
||||
bd_flag.png \
|
||||
be_flag.png \
|
||||
bg_flag.png \
|
||||
brai_flag.png \
|
||||
br_flag.png \
|
||||
bt_flag.png \
|
||||
bw_flag.png \
|
||||
by_flag.png \
|
||||
ca_flag.png \
|
||||
cat_flag.png \
|
||||
cd_flag.png \
|
||||
ch_flag.png \
|
||||
cm_flag.png \
|
||||
cn_flag.png \
|
||||
cz_flag.png \
|
||||
de_flag.png \
|
||||
dk_flag.png \
|
||||
ee_flag.png \
|
||||
epo_flag.png \
|
||||
es_flag.png \
|
||||
et_flag.png \
|
||||
fi_flag.png \
|
||||
fo_flag.png \
|
||||
fr_flag.png \
|
||||
gb_flag.png \
|
||||
ge_flag.png \
|
||||
gh_flag.png \
|
||||
gn_flag.png \
|
||||
gr_flag.png \
|
||||
hr_flag.png \
|
||||
hu_flag.png \
|
||||
ie_flag.png \
|
||||
il_flag.png \
|
||||
in_flag.png \
|
||||
iq_flag.png \
|
||||
ir_flag.png \
|
||||
is_flag.png \
|
||||
it_flag.png \
|
||||
jp_flag.png \
|
||||
ke_flag.png \
|
||||
kg_flag.png \
|
||||
kh_flag.png \
|
||||
kr_flag.png \
|
||||
ku_flag.png \
|
||||
kz_flag.png \
|
||||
la_flag.png \
|
||||
lang-system.png \
|
||||
latam_flag.png \
|
||||
lk_flag.png \
|
||||
lt_flag.png \
|
||||
lv_flag.png \
|
||||
ma_flag.png \
|
||||
mao_flag.png \
|
||||
md_flag.png \
|
||||
me_flag.png \
|
||||
mk_flag.png \
|
||||
ml_flag.png \
|
||||
mm_flag.png \
|
||||
mn_flag.png \
|
||||
mt_flag.png \
|
||||
mv_flag.png \
|
||||
my_flag.png \
|
||||
ng_flag.png \
|
||||
nl_flag.png \
|
||||
no_flag.png \
|
||||
np_flag.png \
|
||||
ph_flag.png \
|
||||
pk_flag.png \
|
||||
pl_flag.png \
|
||||
pt_flag.png \
|
||||
ro_flag.png \
|
||||
rs_flag.png \
|
||||
ru_flag.png \
|
||||
se_flag.png \
|
||||
si_flag.png \
|
||||
sk_flag.png \
|
||||
sn_flag.png \
|
||||
sy_flag.png \
|
||||
th_flag.png \
|
||||
tj_flag.png \
|
||||
tm_flag.png \
|
||||
tr_flag.png \
|
||||
tw_flag.png \
|
||||
tz_flag.png \
|
||||
ua_flag.png \
|
||||
unknown_flag.png \
|
||||
us_flag.png \
|
||||
uz_flag.png \
|
||||
vn_flag.png \
|
||||
za_flag.png
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,103 @@
|
|||
dataflagsfilesdir = $(datadir)/enlightenment/data/flags
|
||||
dataflagsfiles_DATA = \
|
||||
data/flags/ad_flag.png \
|
||||
data/flags/af_flag.png \
|
||||
data/flags/al_flag.png \
|
||||
data/flags/am_flag.png \
|
||||
data/flags/ara_flag.png \
|
||||
data/flags/ar_flag.png \
|
||||
data/flags/at_flag.png \
|
||||
data/flags/az_flag.png \
|
||||
data/flags/ba_flag.png \
|
||||
data/flags/bd_flag.png \
|
||||
data/flags/be_flag.png \
|
||||
data/flags/bg_flag.png \
|
||||
data/flags/brai_flag.png \
|
||||
data/flags/br_flag.png \
|
||||
data/flags/bt_flag.png \
|
||||
data/flags/bw_flag.png \
|
||||
data/flags/by_flag.png \
|
||||
data/flags/ca_flag.png \
|
||||
data/flags/cat_flag.png \
|
||||
data/flags/cd_flag.png \
|
||||
data/flags/ch_flag.png \
|
||||
data/flags/cm_flag.png \
|
||||
data/flags/cn_flag.png \
|
||||
data/flags/cz_flag.png \
|
||||
data/flags/de_flag.png \
|
||||
data/flags/dk_flag.png \
|
||||
data/flags/ee_flag.png \
|
||||
data/flags/epo_flag.png \
|
||||
data/flags/es_flag.png \
|
||||
data/flags/et_flag.png \
|
||||
data/flags/fi_flag.png \
|
||||
data/flags/fo_flag.png \
|
||||
data/flags/fr_flag.png \
|
||||
data/flags/gb_flag.png \
|
||||
data/flags/ge_flag.png \
|
||||
data/flags/gh_flag.png \
|
||||
data/flags/gn_flag.png \
|
||||
data/flags/gr_flag.png \
|
||||
data/flags/hr_flag.png \
|
||||
data/flags/hu_flag.png \
|
||||
data/flags/ie_flag.png \
|
||||
data/flags/il_flag.png \
|
||||
data/flags/in_flag.png \
|
||||
data/flags/iq_flag.png \
|
||||
data/flags/ir_flag.png \
|
||||
data/flags/is_flag.png \
|
||||
data/flags/it_flag.png \
|
||||
data/flags/jp_flag.png \
|
||||
data/flags/ke_flag.png \
|
||||
data/flags/kg_flag.png \
|
||||
data/flags/kh_flag.png \
|
||||
data/flags/kr_flag.png \
|
||||
data/flags/ku_flag.png \
|
||||
data/flags/kz_flag.png \
|
||||
data/flags/la_flag.png \
|
||||
data/flags/lang-system.png \
|
||||
data/flags/latam_flag.png \
|
||||
data/flags/lk_flag.png \
|
||||
data/flags/lt_flag.png \
|
||||
data/flags/lv_flag.png \
|
||||
data/flags/ma_flag.png \
|
||||
data/flags/mao_flag.png \
|
||||
data/flags/md_flag.png \
|
||||
data/flags/me_flag.png \
|
||||
data/flags/mk_flag.png \
|
||||
data/flags/ml_flag.png \
|
||||
data/flags/mm_flag.png \
|
||||
data/flags/mn_flag.png \
|
||||
data/flags/mt_flag.png \
|
||||
data/flags/mv_flag.png \
|
||||
data/flags/my_flag.png \
|
||||
data/flags/ng_flag.png \
|
||||
data/flags/nl_flag.png \
|
||||
data/flags/no_flag.png \
|
||||
data/flags/np_flag.png \
|
||||
data/flags/ph_flag.png \
|
||||
data/flags/pk_flag.png \
|
||||
data/flags/pl_flag.png \
|
||||
data/flags/pt_flag.png \
|
||||
data/flags/ro_flag.png \
|
||||
data/flags/rs_flag.png \
|
||||
data/flags/ru_flag.png \
|
||||
data/flags/se_flag.png \
|
||||
data/flags/si_flag.png \
|
||||
data/flags/sk_flag.png \
|
||||
data/flags/sn_flag.png \
|
||||
data/flags/sy_flag.png \
|
||||
data/flags/th_flag.png \
|
||||
data/flags/tj_flag.png \
|
||||
data/flags/tm_flag.png \
|
||||
data/flags/tr_flag.png \
|
||||
data/flags/tw_flag.png \
|
||||
data/flags/tz_flag.png \
|
||||
data/flags/ua_flag.png \
|
||||
data/flags/unknown_flag.png \
|
||||
data/flags/us_flag.png \
|
||||
data/flags/uz_flag.png \
|
||||
data/flags/vn_flag.png \
|
||||
data/flags/za_flag.png
|
||||
|
||||
EXTRA_DIST += $(dataflagsfiles_DATA)
|
|
@ -1,13 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/enlightenment/data/icons
|
||||
files_DATA = \
|
||||
xterm.png \
|
||||
web_browser.png \
|
||||
audio_player.png \
|
||||
mail_client.png \
|
||||
video_player.png \
|
||||
text_editor.png \
|
||||
image_viewer.png \
|
||||
audio_player2.png
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,12 @@
|
|||
iconsfilesdir = $(datadir)/enlightenment/data/icons
|
||||
iconsfiles_DATA = \
|
||||
data/icons/xterm.png \
|
||||
data/icons/web_browser.png \
|
||||
data/icons/audio_player.png \
|
||||
data/icons/mail_client.png \
|
||||
data/icons/video_player.png \
|
||||
data/icons/text_editor.png \
|
||||
data/icons/image_viewer.png \
|
||||
data/icons/audio_player2.png
|
||||
|
||||
EXTRA_DIST += $(iconsfiles_DATA)
|
|
@ -1,10 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/enlightenment/data/images
|
||||
files_DATA = \
|
||||
enlightenment.png \
|
||||
test.png \
|
||||
test.jpg \
|
||||
test.edj \
|
||||
test.svg
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,9 @@
|
|||
imagesfilesdir = $(datadir)/enlightenment/data/images
|
||||
imagesfiles_DATA = \
|
||||
data/images/enlightenment.png \
|
||||
data/images/test.png \
|
||||
data/images/test.jpg \
|
||||
data/images/test.edj \
|
||||
data/images/test.svg
|
||||
|
||||
EXTRA_DIST += $(imagesfiles_DATA)
|
|
@ -1,12 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/enlightenment/data/input_methods
|
||||
files_DATA = \
|
||||
scim.imc \
|
||||
uim.imc \
|
||||
iiimf.imc \
|
||||
ibus.imc \
|
||||
gcin.imc \
|
||||
hime.imc \
|
||||
fcitx.imc
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
|
@ -0,0 +1,11 @@
|
|||
imcfilesdir = $(datadir)/enlightenment/data/input_methods
|
||||
imcfiles_DATA = \
|
||||
data/input_methods/scim.imc \
|
||||
data/input_methods/uim.imc \
|
||||
data/input_methods/iiimf.imc \
|
||||
data/input_methods/ibus.imc \
|
||||
data/input_methods/gcin.imc \
|
||||
data/input_methods/hime.imc \
|
||||
data/input_methods/fcitx.imc
|
||||
|
||||
EXTRA_DIST += $(imcfiles_DATA)
|
|
@ -1,8 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
enlightenment_remotedir = $(bindir)
|
||||
|
||||
enlightenment_remote_SCRIPTS = enlightenment_remote
|
||||
|
||||
EXTRA_DIST = enlightenment_remote
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
enlightenment_remotedir = $(bindir)
|
||||
|
||||
enlightenment_remote_SCRIPTS = data/tools/enlightenment_remote
|
||||
|
||||
EXTRA_DIST += data/tools/enlightenment_remote
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
AUTOMAKE_OPTIONS = 1.4 foreign
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
|
||||
if HAVE_SYSTEMD_USER_SESSION
|
||||
unitsdir = $(USER_SESSION_DIR)
|
||||
units_DATA = e18.service
|
||||
endif
|
||||
|
||||
EXTRA_DIST = $(units_DATA)
|
|
@ -0,0 +1,6 @@
|
|||
if HAVE_SYSTEMD_USER_SESSION
|
||||
unitsdir = $(USER_SESSION_DIR)
|
||||
units_DATA = data/units/e18.service
|
||||
endif
|
||||
|
||||
EXTRA_DIST += $(units_DATA)
|
|
@ -1,4 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
filesdir = $(datadir)/xsessions
|
||||
files_DATA = enlightenment.desktop
|
||||
EXTRA_DIST = enlightenment.desktop.in
|
|
@ -0,0 +1,3 @@
|
|||
xsessionfilesdir = $(datadir)/xsessions
|
||||
xsessionfiles_DATA = data/xsession/enlightenment.desktop
|
||||
EXTRA_DIST += data/xsession/enlightenment.desktop.in
|
|
@ -1,15 +1,15 @@
|
|||
PROJECT_NAME = Enlightenment
|
||||
PROJECT_NUMBER =
|
||||
OUTPUT_DIRECTORY = .
|
||||
INPUT = @builddir@/e.dox @top_srcdir@/src
|
||||
IMAGE_PATH = @srcdir@/img
|
||||
OUTPUT_DIRECTORY = @builddir@/doc
|
||||
INPUT = @builddir@/doc/e.dox @top_srcdir@/src
|
||||
IMAGE_PATH = @srcdir@/doc/img
|
||||
OUTPUT_LANGUAGE = English
|
||||
GENERATE_HTML = YES
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER = @srcdir@/head.html
|
||||
HTML_FOOTER = @srcdir@/foot.html
|
||||
HTML_STYLESHEET = @srcdir@/e.css
|
||||
HTML_HEADER = @srcdir@/doc/head.html
|
||||
HTML_FOOTER = @srcdir@/doc/foot.html
|
||||
HTML_STYLESHEET = @srcdir@/doc/e.css
|
||||
ENUM_VALUES_PER_LINE = 1
|
||||
GENERATE_HTMLHELP = NO
|
||||
CHM_FILE =
|
||||
|
|
|
@ -1,42 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in e.dox
|
||||
|
||||
.PHONY: doc
|
||||
|
||||
PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc
|
||||
|
||||
if EFL_BUILD_DOC
|
||||
|
||||
doc-clean:
|
||||
rm -rf html/ latex/ man/ xml/ $(top_builddir)/$(PACKAGE_DOCNAME).tar*
|
||||
|
||||
doc: all doc-clean
|
||||
$(efl_doxygen)
|
||||
cp $(srcdir)/img/* html/
|
||||
rm -rf $(PACKAGE_DOCNAME).tar*
|
||||
$(MKDIR_P) $(PACKAGE_DOCNAME)/doc
|
||||
cp -R html/ latex/ man/ $(PACKAGE_DOCNAME)/doc
|
||||
tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/
|
||||
bzip2 -9 $(PACKAGE_DOCNAME).tar
|
||||
rm -rf $(PACKAGE_DOCNAME)/
|
||||
mv $(PACKAGE_DOCNAME).tar.bz2 $(top_builddir)
|
||||
@echo "Documentation Package: $(top_builddir)/$(PACKAGE_DOCNAME).tar.bz2"
|
||||
|
||||
clean-local: doc-clean
|
||||
|
||||
else
|
||||
|
||||
doc:
|
||||
@echo "Documentation not built. Run ./configure --help"
|
||||
|
||||
endif
|
||||
|
||||
filesdir = $(datadir)/enlightenment/doc
|
||||
files_DATA = \
|
||||
documentation.html \
|
||||
illume2.html \
|
||||
FDO.txt \
|
||||
cache.txt \
|
||||
enlightenment.png \
|
||||
illume2.png
|
||||
|
||||
EXTRA_DIST = $(files_DATA) Doxyfile.in $(wildcard img/*.*) e.css head.html foot.html e.dox.in
|
|
@ -0,0 +1,47 @@
|
|||
MAINTAINERCLEANFILES += doc/e.dox
|
||||
|
||||
PHONIES += doc doc-clean
|
||||
|
||||
PACKAGE_DOCNAME = $(PACKAGE_TARNAME)-$(PACKAGE_VERSION)-doc
|
||||
|
||||
if EFL_BUILD_DOC
|
||||
|
||||
doc-clean:
|
||||
rm -rf doc/html/ doc/latex/ doc/man/ doc/xml/ $(top_builddir)/$(PACKAGE_DOCNAME).tar*
|
||||
|
||||
doc: all doc-clean
|
||||
@echo "entering doc/"
|
||||
$(efl_doxygen) doc/Doxyfile
|
||||
cp $(top_srcdir)/doc/img/* doc/html/
|
||||
rm -rf $(PACKAGE_DOCNAME).tar*
|
||||
$(MKDIR_P) $(PACKAGE_DOCNAME)/doc
|
||||
cp -R doc/html/ doc/latex/ doc/man/ $(PACKAGE_DOCNAME)/doc
|
||||
tar cf $(PACKAGE_DOCNAME).tar $(PACKAGE_DOCNAME)/
|
||||
bzip2 -9 $(PACKAGE_DOCNAME).tar
|
||||
rm -rf $(PACKAGE_DOCNAME)/
|
||||
@echo "Documentation Package: $(top_builddir)/$(PACKAGE_DOCNAME).tar.bz2"
|
||||
|
||||
else
|
||||
|
||||
doc:
|
||||
@echo "Documentation not built. Run ./configure --help"
|
||||
|
||||
endif
|
||||
|
||||
docfilesdir = $(datadir)/enlightenment/doc
|
||||
docfiles_DATA = \
|
||||
doc/documentation.html \
|
||||
doc/illume2.html \
|
||||
doc/FDO.txt \
|
||||
doc/cache.txt \
|
||||
doc/enlightenment.png \
|
||||
doc/illume2.png
|
||||
|
||||
EXTRA_DIST += \
|
||||
$(docfiles_DATA) \
|
||||
doc/Doxyfile.in \
|
||||
$(wildcard doc/img/*.*) \
|
||||
doc/e.css \
|
||||
doc/head.html \
|
||||
doc/foot.html \
|
||||
doc/e.dox.in
|
|
@ -0,0 +1,3 @@
|
|||
export E_THEME_OVERRIDE=$(readlink -f data/themes/default.edj)
|
||||
export E_MODULE_SRC_PATH=$(readlink -f src/modules/)
|
||||
export E_START=/e
|
|
@ -0,0 +1,26 @@
|
|||
MAINTAINERCLEANFILES += \
|
||||
m4/libtool.m4 \
|
||||
m4/lt~obsolete.m4 \
|
||||
m4/ltoptions.m4 \
|
||||
m4/ltsugar.m4 \
|
||||
m4/ltversion.m4 \
|
||||
m4/codeset.m4 \
|
||||
m4/gettext.m4 \
|
||||
m4/glibc21.m4 \
|
||||
m4/iconv.m4 \
|
||||
m4/intdiv0.m4 \
|
||||
m4/inttypes_h.m4 \
|
||||
m4/inttypes.m4 \
|
||||
m4/inttypes-pri.m4 \
|
||||
m4/isc-posix.m4 \
|
||||
m4/lcmessage.m4 \
|
||||
m4/lib-ld.m4 \
|
||||
m4/lib-link.m4 \
|
||||
m4/lib-prefix.m4 \
|
||||
m4/nls.m4 \
|
||||
m4/po.m4 \
|
||||
m4/progtest.m4 \
|
||||
m4/stdint_h.m4 \
|
||||
m4/uintmax_t.m4 \
|
||||
m4/ulonglong.m4
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
MAINTAINERCLEANFILES += \
|
||||
po/boldquot.sed \
|
||||
po/en@boldquot.header \
|
||||
po/en@quot.header \
|
||||
po/insert-header.sin \
|
||||
po/Makefile.in.in \
|
||||
po/Makevars.template \
|
||||
po/quot.sed \
|
||||
po/remove-potcdate.sin \
|
||||
po/Rules-quot
|
|
@ -4,9 +4,9 @@ src/bin/e_alert.c
|
|||
src/bin/e_atoms.c
|
||||
src/bin/e_bg.c
|
||||
src/bin/e_bindings.c
|
||||
src/bin/e_border.c
|
||||
src/bin/e_box.c
|
||||
src/bin/e_canvas.c
|
||||
src/bin/e_client.c
|
||||
src/bin/e_color.c
|
||||
src/bin/e_color_class.c
|
||||
src/bin/e_color_dialog.c
|
||||
|
@ -15,7 +15,6 @@ src/bin/e_config.c
|
|||
src/bin/e_config_dialog.c
|
||||
src/bin/e_configure.c
|
||||
src/bin/e_confirm_dialog.c
|
||||
src/bin/e_container.c
|
||||
src/bin/e_datastore.c
|
||||
src/bin/e_desk.c
|
||||
src/bin/e_desklock.c
|
||||
|
@ -47,13 +46,15 @@ src/bin/e_imc_main.c
|
|||
src/bin/e_import_config_dialog.c
|
||||
src/bin/e_import_dialog.c
|
||||
src/bin/e_init.c
|
||||
src/bin/e_int_border_locks.c
|
||||
src/bin/e_int_border_menu.c
|
||||
src/bin/e_int_border_prop.c
|
||||
src/bin/e_int_border_remember.c
|
||||
src/bin/e_int_client_locks.c
|
||||
src/bin/e_int_client_menu.c
|
||||
src/bin/e_int_client_prop.c
|
||||
src/bin/e_int_client_remember.c
|
||||
src/bin/e_int_config_modules.c
|
||||
src/bin/e_int_gadcon_config.c
|
||||
src/bin/e_int_menus.c
|
||||
src/bin/e_int_config_comp.c
|
||||
src/bin/e_int_config_comp_match.c
|
||||
src/bin/e_int_shelf_config.c
|
||||
src/bin/e_int_toolbar_config.c
|
||||
src/bin/e_intl.c
|
||||
|
@ -76,7 +77,6 @@ src/bin/e_pan.c
|
|||
src/bin/e_path.c
|
||||
src/bin/e_place.c
|
||||
src/bin/e_pointer.c
|
||||
src/bin/e_popup.c
|
||||
src/bin/e_prefix.c
|
||||
src/bin/e_randr.c
|
||||
src/bin/e_remember.c
|
||||
|
@ -90,7 +90,6 @@ src/bin/e_slider.c
|
|||
src/bin/e_spectrum.c
|
||||
src/bin/e_start_main.c
|
||||
src/bin/e_startup.c
|
||||
src/bin/e_stolen.c
|
||||
src/bin/e_sys.c
|
||||
src/bin/e_sys_main.c
|
||||
src/bin/e_table.c
|
||||
|
@ -157,9 +156,6 @@ src/modules/conf_bindings/e_int_config_keybindings.c
|
|||
src/modules/conf_bindings/e_int_config_mousebindings.c
|
||||
src/modules/conf_bindings/e_int_config_signalbindings.c
|
||||
src/modules/conf_bindings/e_mod_main.c
|
||||
src/modules/conf_comp/e_mod_config.c
|
||||
src/modules/conf_comp/e_mod_config_match.c
|
||||
src/modules/conf_comp/e_mod_main.c
|
||||
src/modules/conf_dialogs/e_int_config_dialogs.c
|
||||
src/modules/conf_dialogs/e_int_config_profiles.c
|
||||
src/modules/conf_dialogs/e_mod_main.c
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
SUBDIRS = bin modules
|
|
@ -0,0 +1,2 @@
|
|||
include src/bin/Makefile.mk
|
||||
include src/modules/Makefile.mk
|
|
@ -1,457 +0,0 @@
|
|||
SUBDIRS = e_fm
|
||||
|
||||
MAINTAINERCLEANFILES = Makefile.in
|
||||
DISTCLEANFILES = e_fm_shared_types.h
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/src/bin \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/src/bin \
|
||||
@e_cflags@ \
|
||||
@cf_cflags@ \
|
||||
@VALGRIND_CFLAGS@ \
|
||||
@EDJE_DEF@ \
|
||||
@WAYLAND_CFLAGS@ \
|
||||
@WAYLAND_EGL_CFLAGS@ \
|
||||
-DE_BINDIR=\"$(bindir)\" \
|
||||
-DPACKAGE_BIN_DIR=\"@PACKAGE_BIN_DIR@\" \
|
||||
-DPACKAGE_LIB_DIR=\"@PACKAGE_LIB_DIR@\" \
|
||||
-DPACKAGE_DATA_DIR=\"@PACKAGE_DATA_DIR@\" \
|
||||
-DLOCALE_DIR=\"@LOCALE_DIR@\" \
|
||||
-DPACKAGE_SYSCONF_DIR=\"@PACKAGE_SYSCONF_DIR@\"
|
||||
|
||||
bin_PROGRAMS = \
|
||||
enlightenment \
|
||||
enlightenment_imc \
|
||||
enlightenment_start \
|
||||
enlightenment_filemanager \
|
||||
enlightenment_open
|
||||
|
||||
internal_bindir = $(libdir)/enlightenment/utils
|
||||
internal_bin_PROGRAMS = \
|
||||
enlightenment_fm_op \
|
||||
enlightenment_sys \
|
||||
enlightenment_thumb \
|
||||
enlightenment_alert \
|
||||
enlightenment_static_grabber
|
||||
|
||||
if HAVE_EEZE
|
||||
internal_bin_PROGRAMS += enlightenment_backlight
|
||||
endif
|
||||
|
||||
ENLIGHTENMENTHEADERS = \
|
||||
e_about.h \
|
||||
e_acpi.h \
|
||||
e_actions.h \
|
||||
e_alert.h \
|
||||
e_atoms.h \
|
||||
e_backlight.h \
|
||||
e_bg.h \
|
||||
e_bindings.h \
|
||||
e_border.h \
|
||||
e_box.h \
|
||||
e_canvas.h \
|
||||
e_color_class.h \
|
||||
e_color_dialog.h \
|
||||
e_color.h \
|
||||
e_comp.h \
|
||||
e_comp_cfdata.h \
|
||||
e_comp_render_update.h \
|
||||
e_config_data.h \
|
||||
e_config_dialog.h \
|
||||
e_config.h \
|
||||
e_configure.h \
|
||||
e_confirm_dialog.h \
|
||||
e_container.h \
|
||||
e_datastore.h \
|
||||
e_dbusmenu.h \
|
||||
e_desk.h \
|
||||
e_deskenv.h \
|
||||
e_desklock.h \
|
||||
e_deskmirror.h \
|
||||
e_dialog.h \
|
||||
e_dnd.h \
|
||||
e_dpms.h \
|
||||
e_desktop_editor.h \
|
||||
e_entry.h \
|
||||
e_entry_dialog.h \
|
||||
e_env.h \
|
||||
e_error.h \
|
||||
e_exec.h \
|
||||
e_exehist.h \
|
||||
e_filereg.h \
|
||||
e_flowlayout.h \
|
||||
e_fm_custom.h \
|
||||
e_fm_device.h \
|
||||
e_fm.h \
|
||||
e_fm_mime.h \
|
||||
e_fm_op.h \
|
||||
e_fm_op_registry.h \
|
||||
e_fm_prop.h \
|
||||
e_fm_shared_codec.h \
|
||||
e_fm_shared_device.h \
|
||||
e_fm_shared_types.h \
|
||||
e_focus.h \
|
||||
e_font.h \
|
||||
e_gadcon.h \
|
||||
e_gadcon_popup.h \
|
||||
e_grabinput.h \
|
||||
e_grab_dialog.h \
|
||||
e.h \
|
||||
e_hints.h \
|
||||
e_icon.h \
|
||||
e_ilist.h \
|
||||
e_import_config_dialog.h \
|
||||
e_import_dialog.h \
|
||||
e_includes.h \
|
||||
e_init.h \
|
||||
e_int_border_locks.h \
|
||||
e_int_border_menu.h \
|
||||
e_int_border_prop.h \
|
||||
e_int_border_remember.h \
|
||||
e_int_config_modules.h \
|
||||
e_int_gadcon_config.h \
|
||||
e_intl_data.h \
|
||||
e_intl.h \
|
||||
e_int_menus.h \
|
||||
e_int_shelf_config.h \
|
||||
e_int_toolbar_config.h \
|
||||
e_ipc_codec.h \
|
||||
e_ipc.h \
|
||||
e_layout.h \
|
||||
e_livethumb.h \
|
||||
e_log.h \
|
||||
e_manager.h \
|
||||
e_maximize.h \
|
||||
e_menu.h \
|
||||
e_mmx.h \
|
||||
e_module.h \
|
||||
e_mouse.h \
|
||||
e_moveresize.h \
|
||||
e_msgbus.h \
|
||||
e_notification.h \
|
||||
e_msg.h \
|
||||
e_obj_dialog.h \
|
||||
e_object.h \
|
||||
e_order.h \
|
||||
e_pan.h \
|
||||
e_path.h \
|
||||
e_place.h \
|
||||
e_pointer.h \
|
||||
e_popup.h \
|
||||
e_powersave.h \
|
||||
e_prefix.h \
|
||||
e_randr.h \
|
||||
e_remember.h \
|
||||
e_resist.h \
|
||||
e_scale.h \
|
||||
e_screensaver.h \
|
||||
e_scrollframe.h \
|
||||
e_sha1.h \
|
||||
e_shelf.h \
|
||||
e_signals.h \
|
||||
e_slidecore.h \
|
||||
e_slider.h \
|
||||
e_slidesel.h \
|
||||
e_spectrum.h \
|
||||
e_startup.h \
|
||||
e_stolen.h \
|
||||
e_sys.h \
|
||||
e_table.h \
|
||||
e_test.h \
|
||||
e_theme_about.h \
|
||||
e_theme.h \
|
||||
e_thumb.h \
|
||||
e_toolbar.h \
|
||||
e_update.h \
|
||||
e_user.h \
|
||||
e_utils.h \
|
||||
e_widget_aspect.h \
|
||||
e_widget_button.h \
|
||||
e_widget_check.h \
|
||||
e_widget_color_well.h \
|
||||
e_widget_config_list.h \
|
||||
e_widget_csel.h \
|
||||
e_widget_cslider.h \
|
||||
e_widget_bgpreview.h \
|
||||
e_widget_entry.h \
|
||||
e_widget_filepreview.h \
|
||||
e_widget_flist.h \
|
||||
e_widget_font_preview.h \
|
||||
e_widget_framelist.h \
|
||||
e_widget_frametable.h \
|
||||
e_widget_fsel.h \
|
||||
e_widget.h \
|
||||
e_widget_ilist.h \
|
||||
e_widget_image.h \
|
||||
e_widget_label.h \
|
||||
e_widget_list.h \
|
||||
e_widget_preview.h \
|
||||
e_widget_radio.h \
|
||||
e_widget_scrollframe.h \
|
||||
e_widget_slider.h \
|
||||
e_widget_spectrum.h \
|
||||
e_widget_table.h \
|
||||
e_widget_textblock.h \
|
||||
e_widget_toolbar.h \
|
||||
e_widget_toolbook.h \
|
||||
e_win.h \
|
||||
e_xinerama.h \
|
||||
e_xkb.h \
|
||||
e_xsettings.h \
|
||||
e_zoomap.h \
|
||||
e_zone.h
|
||||
|
||||
if HAVE_WAYLAND_CLIENTS
|
||||
ENLIGHTENMENTHEADERS += \
|
||||
e_comp_wl.h \
|
||||
e_surface.h
|
||||
endif
|
||||
|
||||
|
||||
enlightenment_src = \
|
||||
e_about.c \
|
||||
e_acpi.c \
|
||||
e_alert.c \
|
||||
e_actions.c \
|
||||
e_atoms.c \
|
||||
e_backlight.c \
|
||||
e_bg.c \
|
||||
e_bindings.c \
|
||||
e_border.c \
|
||||
e_box.c \
|
||||
e_canvas.c \
|
||||
e_color.c \
|
||||
e_color_class.c \
|
||||
e_color_dialog.c \
|
||||
e_comp.c \
|
||||
e_comp_cfdata.c \
|
||||
e_comp_render_update.c \
|
||||
e_config.c \
|
||||
e_config_data.c \
|
||||
e_config_dialog.c \
|
||||
e_configure.c \
|
||||
e_confirm_dialog.c \
|
||||
e_container.c \
|
||||
e_datastore.c \
|
||||
e_dbusmenu.c \
|
||||
e_desk.c \
|
||||
e_deskenv.c \
|
||||
e_desklock.c \
|
||||
e_deskmirror.c \
|
||||
e_dialog.c \
|
||||
e_dnd.c \
|
||||
e_dpms.c \
|
||||
e_desktop_editor.c \
|
||||
e_entry.c \
|
||||
e_entry_dialog.c \
|
||||
e_env.c \
|
||||
e_error.c \
|
||||
e_exec.c \
|
||||
e_exehist.c \
|
||||
e_filereg.c \
|
||||
e_flowlayout.c \
|
||||
e_fm.c \
|
||||
e_fm_custom.c \
|
||||
e_fm_device.c \
|
||||
e_fm_mime.c \
|
||||
e_fm_op_registry.c \
|
||||
e_fm_prop.c \
|
||||
e_fm_shared_codec.c \
|
||||
e_fm_shared_device.c \
|
||||
e_focus.c \
|
||||
e_font.c \
|
||||
e_gadcon.c \
|
||||
e_gadcon_popup.c \
|
||||
e_grabinput.c \
|
||||
e_grab_dialog.c \
|
||||
e_hints.c \
|
||||
e_icon.c \
|
||||
e_ilist.c \
|
||||
e_import_config_dialog.c \
|
||||
e_import_dialog.c \
|
||||
e_init.c \
|
||||
e_int_border_locks.c \
|
||||
e_int_border_menu.c \
|
||||
e_int_border_prop.c \
|
||||
e_int_border_remember.c \
|
||||
e_int_config_modules.c \
|
||||
e_int_gadcon_config.c \
|
||||
e_intl.c \
|
||||
e_intl_data.c \
|
||||
e_int_menus.c \
|
||||
e_int_shelf_config.c \
|
||||
e_int_toolbar_config.c \
|
||||
e_ipc.c \
|
||||
e_ipc_codec.c \
|
||||
e_layout.c \
|
||||
e_livethumb.c \
|
||||
e_log.c \
|
||||
e_manager.c \
|
||||
e_maximize.c \
|
||||
e_menu.c \
|
||||
e_module.c \
|
||||
e_mouse.c \
|
||||
e_moveresize.c \
|
||||
e_msgbus.c \
|
||||
e_notification.c \
|
||||
e_msg.c \
|
||||
e_obj_dialog.c \
|
||||
e_object.c \
|
||||
e_order.c \
|
||||
e_pan.c \
|
||||
e_path.c \
|
||||
e_place.c \
|
||||
e_pointer.c \
|
||||
e_popup.c \
|
||||
e_powersave.c \
|
||||
e_prefix.c \
|
||||
e_randr.c \
|
||||
e_remember.c \
|
||||
e_resist.c \
|
||||
e_scale.c \
|
||||
e_screensaver.c \
|
||||
e_scrollframe.c \
|
||||
e_sha1.c \
|
||||
e_shelf.c \
|
||||
e_signals.c \
|
||||
e_slidecore.c \
|
||||
e_slider.c \
|
||||
e_slidesel.c \
|
||||
e_spectrum.c \
|
||||
e_startup.c \
|
||||
e_stolen.c \
|
||||
e_sys.c \
|
||||
e_table.c \
|
||||
e_test.c \
|
||||
e_theme_about.c \
|
||||
e_theme.c \
|
||||
e_thumb.c \
|
||||
e_toolbar.c \
|
||||
e_update.c \
|
||||
e_user.c \
|
||||
e_utils.c \
|
||||
e_widget_aspect.c \
|
||||
e_widget_button.c \
|
||||
e_widget.c \
|
||||
e_widget_check.c \
|
||||
e_widget_color_well.c \
|
||||
e_widget_config_list.c \
|
||||
e_widget_csel.c \
|
||||
e_widget_cslider.c \
|
||||
e_widget_bgpreview.c \
|
||||
e_widget_entry.c \
|
||||
e_widget_filepreview.c \
|
||||
e_widget_flist.c \
|
||||
e_widget_font_preview.c \
|
||||
e_widget_framelist.c \
|
||||
e_widget_frametable.c \
|
||||
e_widget_fsel.c \
|
||||
e_widget_ilist.c \
|
||||
e_widget_image.c \
|
||||
e_widget_label.c \
|
||||
e_widget_list.c \
|
||||
e_widget_preview.c \
|
||||
e_widget_radio.c \
|
||||
e_widget_scrollframe.c \
|
||||
e_widget_slider.c \
|
||||
e_widget_spectrum.c \
|
||||
e_widget_table.c \
|
||||
e_widget_textblock.c \
|
||||
e_widget_toolbar.c \
|
||||
e_widget_toolbook.c \
|
||||
e_win.c \
|
||||
e_xinerama.c \
|
||||
e_xkb.c \
|
||||
e_xsettings.c \
|
||||
e_zoomap.c \
|
||||
e_zone.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
if HAVE_WAYLAND_CLIENTS
|
||||
enlightenment_src += \
|
||||
e_comp_wl.c \
|
||||
e_surface.c
|
||||
endif
|
||||
|
||||
enlightenment_CFLAGS = $(AM_CPPFLAGS) @WAYLAND_CFLAGS@ @WAYLAND_EGL_CFLAGS@
|
||||
enlightenment_CPPFLAGS = $(AM_CPPFLAGS) -DE_LOGGING=1
|
||||
enlightenment_SOURCES = \
|
||||
e_main.c \
|
||||
$(enlightenment_src)
|
||||
|
||||
enlightenment_LDFLAGS = -export-dynamic
|
||||
enlightenment_LDADD = @e_libs@ @dlopen_libs@ @cf_libs@ @VALGRIND_LIBS@ @WAYLAND_LIBS@ @WAYLAND_EGL_LIBS@ -lm
|
||||
|
||||
enlightenment_imc_SOURCES = \
|
||||
e.h \
|
||||
e_config_data.c \
|
||||
e_imc_main.c \
|
||||
e_intl_data.c
|
||||
|
||||
enlightenment_imc_LDADD = @E_IMC_LIBS@
|
||||
|
||||
enlightenment_start_SOURCES = \
|
||||
e_start_main.c
|
||||
enlightenment_start_CFLAGS = $(AM_CPPFLAGS) @E_START_CFLAGS@
|
||||
enlightenment_start_LDADD = @dlopen_libs@ @E_START_LIBS@
|
||||
|
||||
enlightenment_thumb_SOURCES = \
|
||||
e_sha1.c \
|
||||
e_thumb_main.c \
|
||||
e_user.c
|
||||
|
||||
enlightenment_thumb_LDADD = @E_THUMB_LIBS@
|
||||
|
||||
enlightenment_fm_op_SOURCES = \
|
||||
e_fm_op.c
|
||||
|
||||
enlightenment_fm_op_LDADD = @E_FM_OP_LIBS@ -lm
|
||||
|
||||
enlightenment_sys_SOURCES = \
|
||||
e_sys_main.c e_sys_l2ping.c
|
||||
|
||||
enlightenment_sys_LDADD = @SUID_LDFLAGS@ @E_SYS_LIBS@ @BLUEZ_LIBS@
|
||||
enlightenment_sys_CFLAGS = @SUID_CFLAGS@ @E_SYS_CFLAGS@ @BLUEZ_CFLAGS@
|
||||
|
||||
if HAVE_EEZE
|
||||
enlightenment_backlight_SOURCES = \
|
||||
e_backlight_main.c
|
||||
|
||||
enlightenment_backlight_CFLAGS = @SUID_CFLAGS@ @EEZE_CFLAGS@
|
||||
enlightenment_backlight_LDADD = @SUID_LDFLAGS@ @EEZE_LIBS@
|
||||
endif
|
||||
|
||||
enlightenment_alert_SOURCES = \
|
||||
e_alert_main.c
|
||||
|
||||
enlightenment_alert_LDADD = @E_ALERT_LIBS@
|
||||
enlightenment_alert_CFLAGS = @E_ALERT_CFLAGS@
|
||||
|
||||
enlightenment_filemanager_SOURCES = e_fm_cmdline.c
|
||||
enlightenment_filemanager_LDADD = @E_FM_CMDLINE_LIBS@
|
||||
enlightenment_filemanager_CFLAGS = @E_FM_CMDLINE_CFLAGS@
|
||||
|
||||
enlightenment_open_SOURCES = e_open.c
|
||||
enlightenment_open_LDADD = @E_OPEN_LIBS@
|
||||
enlightenment_open_CFLAGS = @E_OPEN_CFLAGS@
|
||||
|
||||
enlightenment_static_grabber_SOURCES = e_static_grab.c
|
||||
enlightenment_static_grabber_LDADD = @E_GRABBER_LIBS@
|
||||
enlightenment_static_grabber_CFLAGS = @E_GRABBER_CFLAGS@
|
||||
|
||||
# HACK! why install-data-hook? install-exec-hook is run after bin_PROGRAMS
|
||||
# and before internal_bin_PROGRAMS are installed. install-data-hook is
|
||||
# run after both
|
||||
setuid_root_mode = a=rx,u+xs
|
||||
if HAVE_EEZE
|
||||
install-data-hook:
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_sys$(EXEEXT) || true
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_backlight$(EXEEXT) || true
|
||||
else
|
||||
install-data-hook:
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_sys$(EXEEXT) || true
|
||||
endif
|
||||
installed_headersdir = $(prefix)/include/enlightenment
|
||||
installed_headers_DATA = $(ENLIGHTENMENTHEADERS)
|
|
@ -0,0 +1,476 @@
|
|||
DISTCLEANFILES += src/bin/e_fm_shared_types.h
|
||||
|
||||
E_CPPFLAGS = \
|
||||
-I$(top_builddir) \
|
||||
-I$(top_builddir)/src/bin \
|
||||
-I$(top_srcdir) \
|
||||
-I$(top_srcdir)/src/bin \
|
||||
@e_cflags@ \
|
||||
@cf_cflags@ \
|
||||
@VALGRIND_CFLAGS@ \
|
||||
@EDJE_DEF@ \
|
||||
@WAYLAND_CFLAGS@ \
|
||||
@WAYLAND_EGL_CFLAGS@ \
|
||||
-DE_BINDIR=\"$(bindir)\" \
|
||||
-DPACKAGE_BIN_DIR=\"@PACKAGE_BIN_DIR@\" \
|
||||
-DPACKAGE_LIB_DIR=\"@PACKAGE_LIB_DIR@\" \
|
||||
-DPACKAGE_DATA_DIR=\"@PACKAGE_DATA_DIR@\" \
|
||||
-DLOCALE_DIR=\"@LOCALE_DIR@\" \
|
||||
-DPACKAGE_SYSCONF_DIR=\"@PACKAGE_SYSCONF_DIR@\"
|
||||
|
||||
bin_PROGRAMS = \
|
||||
src/bin/enlightenment \
|
||||
src/bin/enlightenment_imc \
|
||||
src/bin/enlightenment_start \
|
||||
src/bin/enlightenment_filemanager \
|
||||
src/bin/enlightenment_open
|
||||
|
||||
internal_bindir = $(libdir)/enlightenment/utils
|
||||
internal_bin_PROGRAMS = \
|
||||
src/bin/enlightenment_fm_op \
|
||||
src/bin/enlightenment_sys \
|
||||
src/bin/enlightenment_thumb \
|
||||
src/bin/enlightenment_alert \
|
||||
src/bin/enlightenment_static_grabber
|
||||
|
||||
if HAVE_EEZE
|
||||
internal_bin_PROGRAMS += src/bin/enlightenment_backlight
|
||||
endif
|
||||
|
||||
ENLIGHTENMENTHEADERS = \
|
||||
src/bin/e_about.h \
|
||||
src/bin/e_acpi.h \
|
||||
src/bin/e_actions.h \
|
||||
src/bin/e_alert.h \
|
||||
src/bin/e_atoms.h \
|
||||
src/bin/e_auth.h \
|
||||
src/bin/e_backlight.h \
|
||||
src/bin/e_bg.h \
|
||||
src/bin/e_bindings.h \
|
||||
src/bin/e_box.h \
|
||||
src/bin/e_canvas.h \
|
||||
src/bin/e_client.h \
|
||||
src/bin/e_client.x \
|
||||
src/bin/e_color_class.h \
|
||||
src/bin/e_color_dialog.h \
|
||||
src/bin/e_color.h \
|
||||
src/bin/e_comp.h \
|
||||
src/bin/e_comp_canvas.h \
|
||||
src/bin/e_comp_cfdata.h \
|
||||
src/bin/e_comp_object.h \
|
||||
src/bin/e_comp_x.h \
|
||||
src/bin/e_config_data.h \
|
||||
src/bin/e_config_dialog.h \
|
||||
src/bin/e_config.h \
|
||||
src/bin/e_configure.h \
|
||||
src/bin/e_confirm_dialog.h \
|
||||
src/bin/e_datastore.h \
|
||||
src/bin/e_dbusmenu.h \
|
||||
src/bin/e_desk.h \
|
||||
src/bin/e_deskenv.h \
|
||||
src/bin/e_desklock.h \
|
||||
src/bin/e_deskmirror.h \
|
||||
src/bin/e_dialog.h \
|
||||
src/bin/e_dnd.h \
|
||||
src/bin/e_dpms.h \
|
||||
src/bin/e_desktop_editor.h \
|
||||
src/bin/e_entry.h \
|
||||
src/bin/e_entry_dialog.h \
|
||||
src/bin/e_env.h \
|
||||
src/bin/e_error.h \
|
||||
src/bin/e_exec.h \
|
||||
src/bin/e_exehist.h \
|
||||
src/bin/e_filereg.h \
|
||||
src/bin/e_flowlayout.h \
|
||||
src/bin/e_fm_custom.h \
|
||||
src/bin/e_fm_device.h \
|
||||
src/bin/e_fm.h \
|
||||
src/bin/e_fm_mime.h \
|
||||
src/bin/e_fm_op.h \
|
||||
src/bin/e_fm_op_registry.h \
|
||||
src/bin/e_fm_prop.h \
|
||||
src/bin/e_fm_shared_codec.h \
|
||||
src/bin/e_fm_shared_device.h \
|
||||
src/bin/e_fm_shared_types.h \
|
||||
src/bin/e_focus.h \
|
||||
src/bin/e_font.h \
|
||||
src/bin/e_gadcon.h \
|
||||
src/bin/e_gadcon_popup.h \
|
||||
src/bin/e_grabinput.h \
|
||||
src/bin/e_grab_dialog.h \
|
||||
src/bin/e.h \
|
||||
src/bin/e_hints.h \
|
||||
src/bin/e_icon.h \
|
||||
src/bin/e_ilist.h \
|
||||
src/bin/e_import_config_dialog.h \
|
||||
src/bin/e_import_dialog.h \
|
||||
src/bin/e_includes.h \
|
||||
src/bin/e_init.h \
|
||||
src/bin/e_int_client_locks.h \
|
||||
src/bin/e_int_client_menu.h \
|
||||
src/bin/e_int_client_prop.h \
|
||||
src/bin/e_int_client_remember.h \
|
||||
src/bin/e_int_config_modules.h \
|
||||
src/bin/e_int_gadcon_config.h \
|
||||
src/bin/e_intl_data.h \
|
||||
src/bin/e_intl.h \
|
||||
src/bin/e_int_menus.h \
|
||||
src/bin/e_int_shelf_config.h \
|
||||
src/bin/e_int_toolbar_config.h \
|
||||
src/bin/e_ipc_codec.h \
|
||||
src/bin/e_ipc.h \
|
||||
src/bin/e_layout.h \
|
||||
src/bin/e_livethumb.h \
|
||||
src/bin/e_log.h \
|
||||
src/bin/e_manager.h \
|
||||
src/bin/e_maximize.h \
|
||||
src/bin/e_menu.h \
|
||||
src/bin/e_mmx.h \
|
||||
src/bin/e_module.h \
|
||||
src/bin/e_mouse.h \
|
||||
src/bin/e_moveresize.h \
|
||||
src/bin/e_msgbus.h \
|
||||
src/bin/e_notification.h \
|
||||
src/bin/e_msg.h \
|
||||
src/bin/e_obj_dialog.h \
|
||||
src/bin/e_object.h \
|
||||
src/bin/e_order.h \
|
||||
src/bin/e_pan.h \
|
||||
src/bin/e_path.h \
|
||||
src/bin/e_pixmap.h \
|
||||
src/bin/e_place.h \
|
||||
src/bin/e_pointer.h \
|
||||
src/bin/e_powersave.h \
|
||||
src/bin/e_prefix.h \
|
||||
src/bin/e_randr.h \
|
||||
src/bin/e_remember.h \
|
||||
src/bin/e_resist.h \
|
||||
src/bin/e_scale.h \
|
||||
src/bin/e_screensaver.h \
|
||||
src/bin/e_scrollframe.h \
|
||||
src/bin/e_sha1.h \
|
||||
src/bin/e_shelf.h \
|
||||
src/bin/e_signals.h \
|
||||
src/bin/e_slidecore.h \
|
||||
src/bin/e_slider.h \
|
||||
src/bin/e_slidesel.h \
|
||||
src/bin/e_spectrum.h \
|
||||
src/bin/e_startup.h \
|
||||
src/bin/e_sys.h \
|
||||
src/bin/e_table.h \
|
||||
src/bin/e_test.h \
|
||||
src/bin/e_theme_about.h \
|
||||
src/bin/e_theme.h \
|
||||
src/bin/e_thumb.h \
|
||||
src/bin/e_toolbar.h \
|
||||
src/bin/e_update.h \
|
||||
src/bin/e_user.h \
|
||||
src/bin/e_utils.h \
|
||||
src/bin/e_widget_aspect.h \
|
||||
src/bin/e_widget_button.h \
|
||||
src/bin/e_widget_check.h \
|
||||
src/bin/e_widget_color_well.h \
|
||||
src/bin/e_widget_config_list.h \
|
||||
src/bin/e_widget_csel.h \
|
||||
src/bin/e_widget_cslider.h \
|
||||
src/bin/e_widget_bgpreview.h \
|
||||
src/bin/e_widget_entry.h \
|
||||
src/bin/e_widget_filepreview.h \
|
||||
src/bin/e_widget_flist.h \
|
||||
src/bin/e_widget_font_preview.h \
|
||||
src/bin/e_widget_framelist.h \
|
||||
src/bin/e_widget_frametable.h \
|
||||
src/bin/e_widget_fsel.h \
|
||||
src/bin/e_widget.h \
|
||||
src/bin/e_widget_ilist.h \
|
||||
src/bin/e_widget_image.h \
|
||||
src/bin/e_widget_label.h \
|
||||
src/bin/e_widget_list.h \
|
||||
src/bin/e_widget_preview.h \
|
||||
src/bin/e_widget_radio.h \
|
||||
src/bin/e_widget_scrollframe.h \
|
||||
src/bin/e_widget_slider.h \
|
||||
src/bin/e_widget_spectrum.h \
|
||||
src/bin/e_widget_table.h \
|
||||
src/bin/e_widget_textblock.h \
|
||||
src/bin/e_widget_toolbar.h \
|
||||
src/bin/e_widget_toolbook.h \
|
||||
src/bin/e_win.h \
|
||||
src/bin/e_xinerama.h \
|
||||
src/bin/e_xkb.h \
|
||||
src/bin/e_xsettings.h \
|
||||
src/bin/e_zoomap.h \
|
||||
src/bin/e_zone.h
|
||||
|
||||
if HAVE_WAYLAND_CLIENTS
|
||||
ENLIGHTENMENTHEADERS += \
|
||||
src/bin/e_comp_wl.h
|
||||
endif
|
||||
|
||||
|
||||
enlightenment_src = \
|
||||
src/bin/e_about.c \
|
||||
src/bin/e_acpi.c \
|
||||
src/bin/e_actions.c \
|
||||
src/bin/e_atoms.c \
|
||||
src/bin/e_auth.c \
|
||||
src/bin/e_backlight.c \
|
||||
src/bin/e_bg.c \
|
||||
src/bin/e_bindings.c \
|
||||
src/bin/e_box.c \
|
||||
src/bin/e_canvas.c \
|
||||
src/bin/e_client.c \
|
||||
src/bin/e_color.c \
|
||||
src/bin/e_color_class.c \
|
||||
src/bin/e_color_dialog.c \
|
||||
src/bin/e_comp.c \
|
||||
src/bin/e_comp_canvas.c \
|
||||
src/bin/e_comp_cfdata.c \
|
||||
src/bin/e_comp_object.c \
|
||||
src/bin/e_config.c \
|
||||
src/bin/e_config_data.c \
|
||||
src/bin/e_config_dialog.c \
|
||||
src/bin/e_configure.c \
|
||||
src/bin/e_confirm_dialog.c \
|
||||
src/bin/e_datastore.c \
|
||||
src/bin/e_dbusmenu.c \
|
||||
src/bin/e_desk.c \
|
||||
src/bin/e_deskenv.c \
|
||||
src/bin/e_desklock.c \
|
||||
src/bin/e_deskmirror.c \
|
||||
src/bin/e_dialog.c \
|
||||
src/bin/e_dnd.c \
|
||||
src/bin/e_dpms.c \
|
||||
src/bin/e_desktop_editor.c \
|
||||
src/bin/e_entry.c \
|
||||
src/bin/e_entry_dialog.c \
|
||||
src/bin/e_env.c \
|
||||
src/bin/e_error.c \
|
||||
src/bin/e_exec.c \
|
||||
src/bin/e_exehist.c \
|
||||
src/bin/e_filereg.c \
|
||||
src/bin/e_flowlayout.c \
|
||||
src/bin/e_fm.c \
|
||||
src/bin/e_fm_custom.c \
|
||||
src/bin/e_fm_device.c \
|
||||
src/bin/e_fm_mime.c \
|
||||
src/bin/e_fm_op_registry.c \
|
||||
src/bin/e_fm_prop.c \
|
||||
src/bin/e_fm_shared_codec.c \
|
||||
src/bin/e_fm_shared_device.c \
|
||||
src/bin/e_focus.c \
|
||||
src/bin/e_font.c \
|
||||
src/bin/e_gadcon.c \
|
||||
src/bin/e_gadcon_popup.c \
|
||||
src/bin/e_grabinput.c \
|
||||
src/bin/e_grab_dialog.c \
|
||||
src/bin/e_hints.c \
|
||||
src/bin/e_icon.c \
|
||||
src/bin/e_ilist.c \
|
||||
src/bin/e_import_config_dialog.c \
|
||||
src/bin/e_import_dialog.c \
|
||||
src/bin/e_init.c \
|
||||
src/bin/e_int_client_locks.c \
|
||||
src/bin/e_int_client_menu.c \
|
||||
src/bin/e_int_client_prop.c \
|
||||
src/bin/e_int_client_remember.c \
|
||||
src/bin/e_int_config_modules.c \
|
||||
src/bin/e_int_config_comp.c \
|
||||
src/bin/e_int_config_comp_match.c \
|
||||
src/bin/e_int_gadcon_config.c \
|
||||
src/bin/e_intl.c \
|
||||
src/bin/e_intl_data.c \
|
||||
src/bin/e_int_menus.c \
|
||||
src/bin/e_int_shelf_config.c \
|
||||
src/bin/e_int_toolbar_config.c \
|
||||
src/bin/e_ipc.c \
|
||||
src/bin/e_ipc_codec.c \
|
||||
src/bin/e_layout.c \
|
||||
src/bin/e_livethumb.c \
|
||||
src/bin/e_log.c \
|
||||
src/bin/e_manager.c \
|
||||
src/bin/e_maximize.c \
|
||||
src/bin/e_menu.c \
|
||||
src/bin/e_module.c \
|
||||
src/bin/e_mouse.c \
|
||||
src/bin/e_moveresize.c \
|
||||
src/bin/e_msgbus.c \
|
||||
src/bin/e_notification.c \
|
||||
src/bin/e_msg.c \
|
||||
src/bin/e_obj_dialog.c \
|
||||
src/bin/e_object.c \
|
||||
src/bin/e_order.c \
|
||||
src/bin/e_pan.c \
|
||||
src/bin/e_path.c \
|
||||
src/bin/e_pixmap.c \
|
||||
src/bin/e_place.c \
|
||||
src/bin/e_pointer.c \
|
||||
src/bin/e_powersave.c \
|
||||
src/bin/e_prefix.c \
|
||||
src/bin/e_remember.c \
|
||||
src/bin/e_resist.c \
|
||||
src/bin/e_scale.c \
|
||||
src/bin/e_screensaver.c \
|
||||
src/bin/e_scrollframe.c \
|
||||
src/bin/e_sha1.c \
|
||||
src/bin/e_shelf.c \
|
||||
src/bin/e_signals.c \
|
||||
src/bin/e_slidecore.c \
|
||||
src/bin/e_slider.c \
|
||||
src/bin/e_slidesel.c \
|
||||
src/bin/e_spectrum.c \
|
||||
src/bin/e_startup.c \
|
||||
src/bin/e_sys.c \
|
||||
src/bin/e_table.c \
|
||||
src/bin/e_test.c \
|
||||
src/bin/e_theme_about.c \
|
||||
src/bin/e_theme.c \
|
||||
src/bin/e_thumb.c \
|
||||
src/bin/e_toolbar.c \
|
||||
src/bin/e_update.c \
|
||||
src/bin/e_user.c \
|
||||
src/bin/e_utils.c \
|
||||
src/bin/e_widget_aspect.c \
|
||||
src/bin/e_widget_button.c \
|
||||
src/bin/e_widget.c \
|
||||
src/bin/e_widget_check.c \
|
||||
src/bin/e_widget_color_well.c \
|
||||
src/bin/e_widget_config_list.c \
|
||||
src/bin/e_widget_csel.c \
|
||||
src/bin/e_widget_cslider.c \
|
||||
src/bin/e_widget_bgpreview.c \
|
||||
src/bin/e_widget_entry.c \
|
||||
src/bin/e_widget_filepreview.c \
|
||||
src/bin/e_widget_flist.c \
|
||||
src/bin/e_widget_font_preview.c \
|
||||
src/bin/e_widget_framelist.c \
|
||||
src/bin/e_widget_frametable.c \
|
||||
src/bin/e_widget_fsel.c \
|
||||
src/bin/e_widget_ilist.c \
|
||||
src/bin/e_widget_image.c \
|
||||
src/bin/e_widget_label.c \
|
||||
src/bin/e_widget_list.c \
|
||||
src/bin/e_widget_preview.c \
|
||||
src/bin/e_widget_radio.c \
|
||||
src/bin/e_widget_scrollframe.c \
|
||||
src/bin/e_widget_slider.c \
|
||||
src/bin/e_widget_spectrum.c \
|
||||
src/bin/e_widget_table.c \
|
||||
src/bin/e_widget_textblock.c \
|
||||
src/bin/e_widget_toolbar.c \
|
||||
src/bin/e_widget_toolbook.c \
|
||||
src/bin/e_win.c \
|
||||
src/bin/e_xinerama.c \
|
||||
src/bin/e_zoomap.c \
|
||||
src/bin/e_zone.c \
|
||||
$(ENLIGHTENMENTHEADERS)
|
||||
|
||||
if ! HAVE_WAYLAND_ONLY
|
||||
enlightenment_src += \
|
||||
src/bin/e_alert.c \
|
||||
src/bin/e_comp_x.c \
|
||||
src/bin/e_randr.c \
|
||||
src/bin/e_xkb.c \
|
||||
src/bin/e_xsettings.c
|
||||
endif
|
||||
|
||||
if HAVE_WAYLAND_CLIENTS
|
||||
enlightenment_src += \
|
||||
src/bin/e_comp_wl.c
|
||||
endif
|
||||
|
||||
src_bin_enlightenment_CPPFLAGS = $(E_CPPFLAGS) -DE_LOGGING=1 @WAYLAND_CFLAGS@ @WAYLAND_EGL_CFLAGS@ @ECORE_X_CFLAGS@ -DNEED_X=1
|
||||
src_bin_enlightenment_SOURCES = \
|
||||
src/bin/e_main.c \
|
||||
$(enlightenment_src)
|
||||
|
||||
src_bin_enlightenment_LDFLAGS = -export-dynamic
|
||||
src_bin_enlightenment_LDADD = @e_libs@ @dlopen_libs@ @cf_libs@ @VALGRIND_LIBS@ @WAYLAND_LIBS@ @WAYLAND_EGL_LIBS@ -lm @ECORE_X_LIBS@
|
||||
|
||||
src_bin_enlightenment_imc_SOURCES = \
|
||||
src/bin/e.h \
|
||||
src/bin/e_config_data.c \
|
||||
src/bin/e_imc_main.c \
|
||||
src/bin/e_intl_data.c
|
||||
|
||||
src_bin_enlightenment_imc_LDADD = @E_IMC_LIBS@
|
||||
src_bin_enlightenment_imc_CPPFLAGS = $(E_CPPFLAGS)
|
||||
|
||||
src_bin_enlightenment_start_SOURCES = \
|
||||
src/bin/e_start_main.c
|
||||
src_bin_enlightenment_start_CPPFLAGS = $(E_CPPFLAGS) @E_START_CFLAGS@
|
||||
src_bin_enlightenment_start_LDADD = @dlopen_libs@ @E_START_LIBS@
|
||||
|
||||
src_bin_enlightenment_thumb_SOURCES = \
|
||||
src/bin/e_sha1.c \
|
||||
src/bin/e_thumb_main.c \
|
||||
src/bin/e_user.c
|
||||
|
||||
src_bin_enlightenment_thumb_LDADD = @E_THUMB_LIBS@
|
||||
src_bin_enlightenment_thumb_CPPFLAGS = $(E_CPPFLAGS)
|
||||
|
||||
src_bin_enlightenment_fm_op_SOURCES = \
|
||||
src/bin/e_fm_op.c
|
||||
|
||||
src_bin_enlightenment_fm_op_LDADD = @E_FM_OP_LIBS@ -lm
|
||||
src_bin_enlightenment_fm_op_CPPFLAGS = $(E_CPPFLAGS)
|
||||
|
||||
src_bin_enlightenment_sys_SOURCES = \
|
||||
src/bin/e_sys_main.c \
|
||||
src/bin/e_sys_l2ping.c
|
||||
|
||||
src_bin_enlightenment_sys_LDADD = @SUID_LDFLAGS@ @E_SYS_LIBS@ @BLUEZ_LIBS@
|
||||
src_bin_enlightenment_sys_CPPFLAGS = @SUID_CFLAGS@ @E_SYS_CFLAGS@ @BLUEZ_CFLAGS@ -DPACKAGE_SYSCONF_DIR=\"@PACKAGE_SYSCONF_DIR@\"
|
||||
|
||||
if HAVE_EEZE
|
||||
src_bin_enlightenment_backlight_SOURCES = \
|
||||
src/bin/e_backlight_main.c
|
||||
|
||||
src_bin_enlightenment_backlight_CPPFLAGS = @SUID_CFLAGS@ @EEZE_CFLAGS@
|
||||
src_bin_enlightenment_backlight_LDADD = @SUID_LDFLAGS@ @EEZE_LIBS@
|
||||
endif
|
||||
|
||||
src_bin_enlightenment_alert_SOURCES = \
|
||||
src/bin/e_alert_main.c
|
||||
|
||||
src_bin_enlightenment_alert_LDADD = @E_ALERT_LIBS@
|
||||
src_bin_enlightenment_alert_CPPFLAGS = @E_ALERT_CFLAGS@
|
||||
|
||||
src_bin_enlightenment_filemanager_SOURCES = \
|
||||
src/bin/e_fm_cmdline.c
|
||||
src_bin_enlightenment_filemanager_LDADD = @E_FM_CMDLINE_LIBS@
|
||||
src_bin_enlightenment_filemanager_CPPFLAGS = @E_FM_CMDLINE_CFLAGS@
|
||||
|
||||
src_bin_enlightenment_open_SOURCES = \
|
||||
src/bin/e_open.c
|
||||
src_bin_enlightenment_open_LDADD = @E_OPEN_LIBS@
|
||||
src_bin_enlightenment_open_CPPFLAGS = @E_OPEN_CFLAGS@
|
||||
|
||||
src_bin_enlightenment_static_grabber_SOURCES = \
|
||||
src/bin/e_static_grab.c
|
||||
src_bin_enlightenment_static_grabber_LDADD = @E_GRABBER_LIBS@
|
||||
src_bin_enlightenment_static_grabber_CPPFLAGS = @E_GRABBER_CFLAGS@
|
||||
|
||||
include src/bin/e_fm/Makefile.mk
|
||||
|
||||
# HACK! why install-data-hook? install-exec-hook is run after bin_PROGRAMS
|
||||
# and before internal_bin_PROGRAMS are installed. install-data-hook is
|
||||
# run after both
|
||||
setuid_root_mode = a=rx,u+xs
|
||||
if HAVE_EEZE
|
||||
enlightenment-sys-install-data-hook:
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_sys$(EXEEXT) || true
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_backlight$(EXEEXT) || true
|
||||
else
|
||||
enlightenment-sys-install-data-hook:
|
||||
@chmod $(setuid_root_mode) $(DESTDIR)$(libdir)/enlightenment/utils/enlightenment_sys$(EXEEXT) || true
|
||||
endif
|
||||
installed_headersdir = $(prefix)/include/enlightenment
|
||||
installed_headers_DATA = $(ENLIGHTENMENTHEADERS)
|
||||
INSTALL_DATA_HOOKS += enlightenment-sys-install-data-hook
|
||||
|
||||
PHONIES += e enlightenment install-e install-enlightenment
|
||||
e: $(bin_PROGRAMS)
|
||||
enlightenment: e
|
||||
install-e: install-binPROGRAMS
|
||||
install-enlightenment: install-e
|
|
@ -105,7 +105,6 @@ void *alloca (size_t);
|
|||
# include <Evas_Engine_Buffer.h>
|
||||
# include <Ecore.h>
|
||||
# include <Ecore_Getopt.h>
|
||||
# include <Ecore_X.h>
|
||||
# include <Ecore_Evas.h>
|
||||
# include <Ecore_Input.h>
|
||||
# include <Ecore_Input_Evas.h>
|
||||
|
@ -308,7 +307,8 @@ extern EAPI Eina_Bool e_nopause;
|
|||
extern EAPI Eina_Bool e_precache_end;
|
||||
extern EAPI Eina_Bool x_fatal;
|
||||
|
||||
EAPI void e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window win);
|
||||
extern EINTERN const char *e_first_frame;
|
||||
extern EINTERN double e_first_frame_start_time;
|
||||
|
||||
//#define SMARTERR(args...) abort()
|
||||
#define SMARTERRNR() return
|
||||
|
|
|
@ -7,14 +7,14 @@
|
|||
/* externally accessible functions */
|
||||
|
||||
EAPI E_About *
|
||||
e_about_new(E_Container *con)
|
||||
e_about_new(E_Comp *c)
|
||||
{
|
||||
E_Obj_Dialog *od;
|
||||
char buf[16384];
|
||||
FILE *f;
|
||||
Eina_Strbuf *tbuf;
|
||||
|
||||
od = e_obj_dialog_new(con, _("About Enlightenment"), "E", "_about");
|
||||
od = e_obj_dialog_new(c, _("About Enlightenment"), "E", "_about");
|
||||
if (!od) return NULL;
|
||||
e_obj_dialog_obj_theme_set(od, "base/theme/about", "e/widgets/about/main");
|
||||
e_obj_dialog_obj_part_text_set(od, "e.text.label", _("Close"));
|
||||
|
|
|
@ -6,7 +6,7 @@ typedef struct _E_Obj_Dialog E_About;
|
|||
#ifndef E_ABOUT_H
|
||||
#define E_ABOUT_H
|
||||
|
||||
EAPI E_About *e_about_new (E_Container *con);
|
||||
EAPI E_About *e_about_new (E_Comp *c);
|
||||
EAPI void e_about_show (E_About *about);
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -88,7 +88,7 @@ main(int argc, char **argv)
|
|||
|
||||
fprintf(stderr, "exit_gdb: %i\n", exit_gdb);
|
||||
|
||||
tmp = getenv("E18_TAINTED");
|
||||
tmp = getenv("E19_TAINTED");
|
||||
if (tmp && !strcmp(tmp, "NO"))
|
||||
tainted = EINA_FALSE;
|
||||
|
||||
|
@ -554,7 +554,7 @@ _e_alert_draw_text(void)
|
|||
"on. We were not able to generate a backtrace, check \n"
|
||||
"if your 'sysactions.conf' has an 'gdb' action line.\n"
|
||||
"\n"
|
||||
"Please compile latest Git E18 and EFL with\n"
|
||||
"Please compile latest Git E19 and EFL with\n"
|
||||
"-g and -ggdb3 in your CFLAGS.\n");
|
||||
}
|
||||
else if (backtrace_str)
|
||||
|
@ -562,9 +562,9 @@ _e_alert_draw_text(void)
|
|||
snprintf(msg, sizeof(msg),
|
||||
"This is not meant to happen and is likely a sign of \n"
|
||||
"a bug in Enlightenment or the libraries it relies \n"
|
||||
"on. You will find an backtrace of E18 (%d) in :\n"
|
||||
"on. You will find an backtrace of E19 (%d) in :\n"
|
||||
"'%s'\n"
|
||||
"Before reporting issue, compile latest E18 and EFL\n"
|
||||
"Before reporting issue, compile latest E19 and EFL\n"
|
||||
"from Git with '-g -ggdb3' in your CFLAGS.\n"
|
||||
"You can then report this crash on :\n"
|
||||
"https://phab.enlightenment.org/maniphest/.\n",
|
||||
|
@ -580,7 +580,7 @@ _e_alert_draw_text(void)
|
|||
"recover to try and get your desktop back the way \n"
|
||||
"it was.\n"
|
||||
"\n"
|
||||
"Please compile latest Git E18 and EFL with\n"
|
||||
"Please compile latest Git E19 and EFL with\n"
|
||||
"-g and -ggdb3 in your CFLAGS.\n", pid);
|
||||
}
|
||||
}
|
||||
|
@ -592,7 +592,7 @@ _e_alert_draw_text(void)
|
|||
"modules; before reporting this issue, please\n"
|
||||
"unload them and try to see if the bug is still\n"
|
||||
"there. Also update to latest Git and be sure to\n"
|
||||
"compile E18 and EFL with -g and -ggdb3 in your CFLAGS");
|
||||
"compile E19 and EFL with -g and -ggdb3 in your CFLAGS");
|
||||
}
|
||||
|
||||
strcpy(warn, "");
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
|
||||
/* Atoms */
|
||||
EAPI Ecore_X_Atom E_ATOM_MANAGED = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_CONTAINER = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_ZONE = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_DESK = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_MAPPED = 0;
|
||||
|
@ -20,7 +19,6 @@ e_atoms_init(void)
|
|||
{
|
||||
const char *atom_names[] = {
|
||||
"__E_WINDOW_MANAGED",
|
||||
"__E_WINDOW_CONTAINER",
|
||||
"__E_WINDOW_ZONE",
|
||||
"__E_WINDOW_DESK",
|
||||
"__E_WINDOW_MAPPED",
|
||||
|
@ -32,21 +30,20 @@ e_atoms_init(void)
|
|||
"__E_ATOM_DESKTOP_FILE",
|
||||
"E_ZONE_GEOMETRY"
|
||||
};
|
||||
Ecore_X_Atom atoms[12];
|
||||
Ecore_X_Atom atoms[11];
|
||||
|
||||
ecore_x_atoms_get(atom_names, 12, atoms);
|
||||
ecore_x_atoms_get(atom_names, 11, atoms);
|
||||
E_ATOM_MANAGED = atoms[0];
|
||||
E_ATOM_CONTAINER = atoms[1];
|
||||
E_ATOM_ZONE = atoms[2];
|
||||
E_ATOM_DESK = atoms[3];
|
||||
E_ATOM_MAPPED = atoms[4];
|
||||
E_ATOM_SHADE_DIRECTION = atoms[5];
|
||||
E_ATOM_HIDDEN = atoms[6];
|
||||
E_ATOM_BORDER_SIZE = atoms[7];
|
||||
E_ATOM_WINDOW_STATE = atoms[8];
|
||||
E_ATOM_WINDOW_STATE_CENTERED = atoms[9];
|
||||
E_ATOM_DESKTOP_FILE = atoms[10];
|
||||
E_ATOM_ZONE_GEOMETRY = atoms[11];
|
||||
E_ATOM_ZONE = atoms[1];
|
||||
E_ATOM_DESK = atoms[2];
|
||||
E_ATOM_MAPPED = atoms[3];
|
||||
E_ATOM_SHADE_DIRECTION = atoms[4];
|
||||
E_ATOM_HIDDEN = atoms[5];
|
||||
E_ATOM_BORDER_SIZE = atoms[6];
|
||||
E_ATOM_WINDOW_STATE = atoms[7];
|
||||
E_ATOM_WINDOW_STATE_CENTERED = atoms[8];
|
||||
E_ATOM_DESKTOP_FILE = atoms[9];
|
||||
E_ATOM_ZONE_GEOMETRY = atoms[10];
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
extern EAPI Ecore_X_Atom E_ATOM_MANAGED;
|
||||
|
||||
/* basic window properties */
|
||||
extern EAPI Ecore_X_Atom E_ATOM_CONTAINER;
|
||||
extern EAPI Ecore_X_Atom E_ATOM_ZONE;
|
||||
extern EAPI Ecore_X_Atom E_ATOM_DESK;
|
||||
extern EAPI Ecore_X_Atom E_ATOM_MAPPED;
|
||||
|
|
|
@ -0,0 +1,191 @@
|
|||
#include "e.h"
|
||||
|
||||
#ifdef HAVE_PAM
|
||||
# include <security/pam_appl.h>
|
||||
# include <pwd.h>
|
||||
|
||||
|
||||
typedef struct E_Auth
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct pam_conv conv;
|
||||
pam_handle_t *handle;
|
||||
} pam;
|
||||
|
||||
char user[4096];
|
||||
char passwd[4096];
|
||||
} E_Auth;
|
||||
|
||||
static pid_t _e_auth_child_pid = -1;
|
||||
|
||||
static char *
|
||||
_auth_auth_get_current_user(void)
|
||||
{
|
||||
char *user;
|
||||
struct passwd *pwent = NULL;
|
||||
|
||||
pwent = getpwuid(getuid());
|
||||
user = strdup(pwent->pw_name);
|
||||
return user;
|
||||
}
|
||||
|
||||
static int
|
||||
_auth_auth_pam_conv(int num_msg, const struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
|
||||
{
|
||||
int replies = 0;
|
||||
E_Auth *da = (E_Auth *)appdata_ptr;
|
||||
struct pam_response *reply = NULL;
|
||||
|
||||
reply = (struct pam_response *)malloc(sizeof(struct pam_response) * num_msg);
|
||||
|
||||
if (!reply) return PAM_CONV_ERR;
|
||||
|
||||
for (replies = 0; replies < num_msg; replies++)
|
||||
{
|
||||
switch (msg[replies]->msg_style)
|
||||
{
|
||||
case PAM_PROMPT_ECHO_ON:
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = strdup(da->user);
|
||||
break;
|
||||
|
||||
case PAM_PROMPT_ECHO_OFF:
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = strdup(da->passwd);
|
||||
break;
|
||||
|
||||
case PAM_ERROR_MSG:
|
||||
case PAM_TEXT_INFO:
|
||||
reply[replies].resp_retcode = PAM_SUCCESS;
|
||||
reply[replies].resp = NULL;
|
||||
break;
|
||||
|
||||
default:
|
||||
free(reply);
|
||||
return PAM_CONV_ERR;
|
||||
}
|
||||
}
|
||||
*resp = reply;
|
||||
return PAM_SUCCESS;
|
||||
}
|
||||
|
||||
static int
|
||||
_auth_pam_init(E_Auth *da)
|
||||
{
|
||||
int pamerr;
|
||||
const char *pam_prof;
|
||||
char *current_host;
|
||||
char *current_user;
|
||||
|
||||
if (!da) return -1;
|
||||
|
||||
da->pam.conv.conv = _auth_auth_pam_conv;
|
||||
da->pam.conv.appdata_ptr = da;
|
||||
da->pam.handle = NULL;
|
||||
|
||||
/* try other pam profiles - and system-auth (login for fbsd users) is a fallback */
|
||||
pam_prof = "login";
|
||||
if (ecore_file_exists("/etc/pam.d/enlightenment"))
|
||||
pam_prof = "enlightenment";
|
||||
else if (ecore_file_exists("/etc/pam.d/xscreensaver"))
|
||||
pam_prof = "xscreensaver";
|
||||
else if (ecore_file_exists("/etc/pam.d/kscreensaver"))
|
||||
pam_prof = "kscreensaver";
|
||||
else if (ecore_file_exists("/etc/pam.d/system-auth"))
|
||||
pam_prof = "system-auth";
|
||||
else if (ecore_file_exists("/etc/pam.d/system"))
|
||||
pam_prof = "system";
|
||||
else if (ecore_file_exists("/etc/pam.d/xdm"))
|
||||
pam_prof = "xdm";
|
||||
else if (ecore_file_exists("/etc/pam.d/gdm"))
|
||||
pam_prof = "gdm";
|
||||
else if (ecore_file_exists("/etc/pam.d/kdm"))
|
||||
pam_prof = "kdm";
|
||||
|
||||
if ((pamerr = pam_start(pam_prof, da->user, &(da->pam.conv),
|
||||
&(da->pam.handle))) != PAM_SUCCESS)
|
||||
return pamerr;
|
||||
|
||||
current_user = _auth_auth_get_current_user();
|
||||
|
||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_USER, current_user)) != PAM_SUCCESS)
|
||||
{
|
||||
free(current_user);
|
||||
return pamerr;
|
||||
}
|
||||
|
||||
current_host = e_auth_hostname_get();
|
||||
if ((pamerr = pam_set_item(da->pam.handle, PAM_RHOST, current_host)) != PAM_SUCCESS)
|
||||
{
|
||||
free(current_user);
|
||||
free(current_host);
|
||||
return pamerr;
|
||||
}
|
||||
|
||||
free(current_user);
|
||||
free(current_host);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
EAPI int
|
||||
e_auth_begin(char *passwd)
|
||||
{
|
||||
#ifdef HAVE_PAM
|
||||
/* child */
|
||||
int pamerr;
|
||||
E_Auth da;
|
||||
char *current_user, *p;
|
||||
struct sigaction action;
|
||||
|
||||
_e_auth_child_pid = fork();
|
||||
if (_e_auth_child_pid > 0) return _e_auth_child_pid;
|
||||
if (_e_auth_child_pid < 0) return -1;
|
||||
|
||||
action.sa_handler = SIG_DFL;
|
||||
action.sa_flags = SA_ONSTACK | SA_NODEFER | SA_RESETHAND | SA_SIGINFO;
|
||||
sigemptyset(&action.sa_mask);
|
||||
sigaction(SIGSEGV, &action, NULL);
|
||||
sigaction(SIGILL, &action, NULL);
|
||||
sigaction(SIGFPE, &action, NULL);
|
||||
sigaction(SIGBUS, &action, NULL);
|
||||
sigaction(SIGABRT, &action, NULL);
|
||||
|
||||
current_user = _auth_auth_get_current_user();
|
||||
eina_strlcpy(da.user, current_user, sizeof(da.user));
|
||||
eina_strlcpy(da.passwd, passwd, sizeof(da.passwd));
|
||||
/* security - null out passwd string once we are done with it */
|
||||
for (p = passwd; *p; p++)
|
||||
*p = 0;
|
||||
da.pam.handle = NULL;
|
||||
da.pam.conv.conv = NULL;
|
||||
da.pam.conv.appdata_ptr = NULL;
|
||||
|
||||
pamerr = _auth_pam_init(&da);
|
||||
if (pamerr != PAM_SUCCESS)
|
||||
{
|
||||
free(current_user);
|
||||
exit(1);
|
||||
}
|
||||
pamerr = pam_authenticate(da.pam.handle, 0);
|
||||
pam_end(da.pam.handle, pamerr);
|
||||
/* security - null out passwd string once we are done with it */
|
||||
memset(da.passwd, 0, sizeof(da.passwd));
|
||||
if (pamerr == PAM_SUCCESS)
|
||||
{
|
||||
free(current_user);
|
||||
exit(0);
|
||||
}
|
||||
free(current_user);
|
||||
exit(-1);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
EAPI char *
|
||||
e_auth_hostname_get(void)
|
||||
{
|
||||
return strdup("localhost");
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
#ifndef E_AUTH_H
|
||||
#define E_AUTH_H
|
||||
|
||||
EAPI int e_auth_begin(char *passwd);
|
||||
EAPI char *e_auth_hostname_get(void);
|
||||
|
||||
#endif
|
|
@ -62,22 +62,22 @@ e_backlight_init(void)
|
|||
(E_EVENT_CONFIG_MODE_CHANGED, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_fullscreen = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_FULLSCREEN, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_FULLSCREEN, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_unfullscreen = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_UNFULLSCREEN, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_UNFULLSCREEN, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_remove = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_REMOVE, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_REMOVE, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_iconify = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_ICONIFY, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_ICONIFY, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_uniconify = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_UNICONIFY, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_UNICONIFY, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_border_desk_set = ecore_event_handler_add
|
||||
(E_EVENT_BORDER_DESK_SET, _e_backlight_handler, NULL);
|
||||
(E_EVENT_CLIENT_DESK_SET, _e_backlight_handler, NULL);
|
||||
|
||||
_e_backlight_handler_desk_show = ecore_event_handler_add
|
||||
(E_EVENT_DESK_SHOW, _e_backlight_handler, NULL);
|
||||
|
@ -179,23 +179,15 @@ e_backlight_exists(void)
|
|||
EAPI void
|
||||
e_backlight_update(void)
|
||||
{
|
||||
Eina_List *m, *c, *z;
|
||||
E_Manager *man;
|
||||
E_Container *con;
|
||||
const Eina_List *l, *ll;
|
||||
E_Comp *c;
|
||||
E_Zone *zone;
|
||||
|
||||
if (bl_avail == EINA_FALSE) return;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), m, man)
|
||||
{
|
||||
EINA_LIST_FOREACH(man->containers, c, con)
|
||||
{
|
||||
EINA_LIST_FOREACH(con->zones, z, zone)
|
||||
{
|
||||
_e_backlight_update(zone);
|
||||
}
|
||||
}
|
||||
}
|
||||
EINA_LIST_FOREACH(e_comp_list(), l, c)
|
||||
EINA_LIST_FOREACH(c->zones, ll, zone)
|
||||
_e_backlight_update(zone);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -292,43 +284,48 @@ static void
|
|||
_e_backlight_update(E_Zone *zone)
|
||||
{
|
||||
double x_bl = -1.0;
|
||||
#ifndef WAYLAND_ONLY
|
||||
Ecore_X_Window root;
|
||||
Ecore_X_Randr_Output *out;
|
||||
int i, num = 0;
|
||||
|
||||
root = zone->container->manager->root;
|
||||
root = zone->comp->man->root;
|
||||
// try randr
|
||||
out = ecore_x_randr_window_outputs_get(root, &num);
|
||||
if ((out) && (num > 0) && (ecore_x_randr_output_backlight_available()))
|
||||
if (root && ecore_x_randr_output_backlight_available())
|
||||
{
|
||||
char *name;
|
||||
const char *s;
|
||||
Eina_Bool gotten = EINA_FALSE;
|
||||
|
||||
EINA_LIST_FREE(bl_devs, s)
|
||||
eina_stringshare_del(s);
|
||||
for (i = 0; i < num; i++)
|
||||
out = ecore_x_randr_window_outputs_get(root, &num);
|
||||
if ((out) && (num > 0))
|
||||
{
|
||||
name = ecore_x_randr_output_name_get(root, out[i], NULL);
|
||||
bl_devs = eina_list_append(bl_devs, eina_stringshare_add(name));
|
||||
if ((name) && (e_config->backlight.sysdev) &&
|
||||
(!strcmp(name, e_config->backlight.sysdev)))
|
||||
char *name;
|
||||
const char *s;
|
||||
Eina_Bool gotten = EINA_FALSE;
|
||||
|
||||
EINA_LIST_FREE(bl_devs, s)
|
||||
eina_stringshare_del(s);
|
||||
for (i = 0; i < num; i++)
|
||||
{
|
||||
x_bl = ecore_x_randr_output_backlight_level_get(root, out[i]);
|
||||
gotten = EINA_TRUE;
|
||||
name = ecore_x_randr_output_name_get(root, out[i], NULL);
|
||||
bl_devs = eina_list_append(bl_devs, eina_stringshare_add(name));
|
||||
if ((name) && (e_config->backlight.sysdev) &&
|
||||
(!strcmp(name, e_config->backlight.sysdev)))
|
||||
{
|
||||
x_bl = ecore_x_randr_output_backlight_level_get(root, out[i]);
|
||||
gotten = EINA_TRUE;
|
||||
}
|
||||
free(name);
|
||||
}
|
||||
free(name);
|
||||
if (!gotten)
|
||||
x_bl = ecore_x_randr_output_backlight_level_get(root, out[0]);
|
||||
}
|
||||
if (!gotten)
|
||||
x_bl = ecore_x_randr_output_backlight_level_get(root, out[0]);
|
||||
free(out);
|
||||
}
|
||||
free(out);
|
||||
if (x_bl >= 0.0)
|
||||
{
|
||||
bl_val = x_bl;
|
||||
sysmode = MODE_RANDR;
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_EEZE
|
||||
_bl_sys_find();
|
||||
if (bl_sysval)
|
||||
|
@ -343,6 +340,9 @@ _e_backlight_update(E_Zone *zone)
|
|||
static void
|
||||
_e_backlight_set(E_Zone *zone, double val)
|
||||
{
|
||||
#ifdef WAYLAND_ONLY
|
||||
if (0)
|
||||
#else
|
||||
if (sysmode == MODE_RANDR)
|
||||
{
|
||||
Ecore_X_Window root;
|
||||
|
@ -350,7 +350,7 @@ _e_backlight_set(E_Zone *zone, double val)
|
|||
int num = 0, i;
|
||||
char *name;
|
||||
|
||||
root = zone->container->manager->root;
|
||||
root = zone->comp->man->root;
|
||||
out = ecore_x_randr_window_outputs_get(root, &num);
|
||||
if ((out) && (num > 0))
|
||||
{
|
||||
|
@ -377,6 +377,7 @@ _e_backlight_set(E_Zone *zone, double val)
|
|||
}
|
||||
free(out);
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_EEZE
|
||||
else if (sysmode == MODE_SYS)
|
||||
{
|
||||
|
|
|
@ -76,7 +76,7 @@ e_bg_shutdown(void)
|
|||
* The most specific match will be returned
|
||||
*/
|
||||
EAPI const E_Config_Desktop_Background *
|
||||
e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y)
|
||||
e_bg_config_get(int manager_num, int zone_num, int desk_x, int desk_y)
|
||||
{
|
||||
Eina_List *l, *entries;
|
||||
E_Config_Desktop_Background *bg = NULL, *cfbg = NULL;
|
||||
|
@ -85,7 +85,7 @@ e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y)
|
|||
int current_spec = 0; /* how specific the setting is - we want the least general one that applies */
|
||||
|
||||
/* look for desk specific background. */
|
||||
if (container_num >= 0 || zone_num >= 0 || desk_x >= 0 || desk_y >= 0)
|
||||
if (manager_num >= 0 || zone_num >= 0 || desk_x >= 0 || desk_y >= 0)
|
||||
{
|
||||
EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg)
|
||||
{
|
||||
|
@ -93,8 +93,8 @@ e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y)
|
|||
|
||||
if (!cfbg) continue;
|
||||
spec = 0;
|
||||
if (cfbg->container == container_num) spec++;
|
||||
else if (cfbg->container >= 0)
|
||||
if (cfbg->manager == manager_num) spec++;
|
||||
else if (cfbg->manager >= 0)
|
||||
continue;
|
||||
if (cfbg->zone == zone_num) spec++;
|
||||
else if (cfbg->zone >= 0)
|
||||
|
@ -144,13 +144,13 @@ e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y)
|
|||
}
|
||||
|
||||
EAPI Eina_Stringshare *
|
||||
e_bg_file_get(int container_num, int zone_num, int desk_x, int desk_y)
|
||||
e_bg_file_get(int manager_num, int zone_num, int desk_x, int desk_y)
|
||||
{
|
||||
const E_Config_Desktop_Background *cfbg;
|
||||
const char *bgfile = NULL;
|
||||
int ok = 0;
|
||||
|
||||
cfbg = e_bg_config_get(container_num, zone_num, desk_x, desk_y);
|
||||
cfbg = e_bg_config_get(manager_num, zone_num, desk_x, desk_y);
|
||||
|
||||
/* fall back to default */
|
||||
if (cfbg)
|
||||
|
@ -208,9 +208,9 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition)
|
|||
|
||||
desk = e_desk_current_get(zone);
|
||||
if (desk)
|
||||
bgfile = e_bg_file_get(zone->container->num, zone->num, desk->x, desk->y);
|
||||
bgfile = e_bg_file_get(zone->comp->num, zone->num, desk->x, desk->y);
|
||||
else
|
||||
bgfile = e_bg_file_get(zone->container->num, zone->num, -1, -1);
|
||||
bgfile = e_bg_file_get(zone->comp->num, zone->num, -1, -1);
|
||||
|
||||
if (zone->bg_object)
|
||||
{
|
||||
|
@ -233,39 +233,43 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition)
|
|||
zone->bg_object = NULL;
|
||||
E_FREE_FUNC(zone->transition_object, evas_object_del);
|
||||
}
|
||||
o = edje_object_add(zone->container->bg_evas);
|
||||
o = edje_object_add(zone->comp->evas);
|
||||
evas_object_repeat_events_set(o, 1);
|
||||
zone->transition_object = o;
|
||||
evas_object_name_set(zone->transition_object, "zone->transition_object");
|
||||
/* FIXME: segv if zone is deleted while up??? */
|
||||
evas_object_data_set(o, "e_zone", zone);
|
||||
snprintf(buf, sizeof(buf), "e/transitions/%s", trans);
|
||||
e_theme_edje_object_set(o, "base/theme/transitions", buf);
|
||||
edje_object_signal_callback_add(o, "e,state,done", "*", _e_bg_signal, zone);
|
||||
evas_object_layer_set(o, E_COMP_CANVAS_LAYER_BG);
|
||||
evas_object_move(o, zone->x, zone->y);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_layer_set(o, E_LAYER_BG);
|
||||
evas_object_clip_set(o, zone->bg_clip_object);
|
||||
evas_object_show(o);
|
||||
}
|
||||
if (eina_str_has_extension(bgfile, ".edj"))
|
||||
{
|
||||
o = edje_object_add(zone->container->bg_evas);
|
||||
o = edje_object_add(zone->comp->evas);
|
||||
edje_object_file_set(o, bgfile, "e/desktop/background");
|
||||
if (edje_object_data_get(o, "noanimation"))
|
||||
edje_object_animation_set(o, EINA_FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
o = e_icon_add(zone->container->bg_evas);
|
||||
o = e_icon_add(zone->comp->evas);
|
||||
e_icon_file_key_set(o, bgfile, NULL);
|
||||
e_icon_fill_inside_set(o, 0);
|
||||
}
|
||||
evas_object_data_set(o, "e_zone", zone);
|
||||
evas_object_repeat_events_set(o, 1);
|
||||
zone->bg_object = o;
|
||||
evas_object_name_set(zone->bg_object, "zone->bg_object");
|
||||
if (transition == E_BG_TRANSITION_NONE)
|
||||
{
|
||||
evas_object_move(o, zone->x, zone->y);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_layer_set(o, E_COMP_CANVAS_LAYER_BG);
|
||||
evas_object_layer_set(o, E_LAYER_BG);
|
||||
}
|
||||
evas_object_clip_set(o, zone->bg_clip_object);
|
||||
evas_object_show(o);
|
||||
|
@ -285,9 +289,9 @@ e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition)
|
|||
if (zone->bg_object) evas_object_name_set(zone->bg_object, "zone->bg_object");
|
||||
if (zone->prev_bg_object) evas_object_name_set(zone->prev_bg_object, "zone->prev_bg_object");
|
||||
if (zone->transition_object) evas_object_name_set(zone->transition_object, "zone->transition_object");
|
||||
if (zone->comp_zone) e_comp_zone_update(zone->comp_zone);
|
||||
evas_object_move(zone->transition_object, zone->x, zone->y);
|
||||
evas_object_resize(zone->transition_object, zone->w, zone->h);
|
||||
e_comp_canvas_zone_update(zone);
|
||||
end:
|
||||
eina_stringshare_del(bgfile);
|
||||
}
|
||||
|
@ -322,7 +326,7 @@ e_bg_default_set(const char *file)
|
|||
e_config->desktop_default_background = NULL;
|
||||
|
||||
ev = E_NEW(E_Event_Bg_Update, 1);
|
||||
ev->container = -1;
|
||||
ev->manager = -1;
|
||||
ev->zone = -1;
|
||||
ev->desk_x = -1;
|
||||
ev->desk_y = -1;
|
||||
|
@ -330,7 +334,7 @@ e_bg_default_set(const char *file)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file)
|
||||
e_bg_add(int manager, int zone, int desk_x, int desk_y, const char *file)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Config_Desktop_Background *cfbg;
|
||||
|
@ -341,7 +345,7 @@ e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file)
|
|||
EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg)
|
||||
{
|
||||
if ((cfbg) &&
|
||||
(cfbg->container == container) &&
|
||||
(cfbg->manager == manager) &&
|
||||
(cfbg->zone == zone) &&
|
||||
(cfbg->desk_x == desk_x) &&
|
||||
(cfbg->desk_y == desk_y) &&
|
||||
|
@ -352,9 +356,9 @@ e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file)
|
|||
}
|
||||
}
|
||||
|
||||
e_bg_del(container, zone, desk_x, desk_y);
|
||||
e_bg_del(manager, zone, desk_x, desk_y);
|
||||
cfbg = E_NEW(E_Config_Desktop_Background, 1);
|
||||
cfbg->container = container;
|
||||
cfbg->manager = manager;
|
||||
cfbg->zone = zone;
|
||||
cfbg->desk_x = desk_x;
|
||||
cfbg->desk_y = desk_y;
|
||||
|
@ -364,7 +368,7 @@ e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file)
|
|||
e_filereg_register(cfbg->file);
|
||||
|
||||
ev = E_NEW(E_Event_Bg_Update, 1);
|
||||
ev->container = container;
|
||||
ev->manager = manager;
|
||||
ev->zone = zone;
|
||||
ev->desk_x = desk_x;
|
||||
ev->desk_y = desk_y;
|
||||
|
@ -372,7 +376,7 @@ e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_bg_del(int container, int zone, int desk_x, int desk_y)
|
||||
e_bg_del(int manager, int zone, int desk_x, int desk_y)
|
||||
{
|
||||
Eina_List *l;
|
||||
E_Config_Desktop_Background *cfbg;
|
||||
|
@ -381,7 +385,7 @@ e_bg_del(int container, int zone, int desk_x, int desk_y)
|
|||
EINA_LIST_FOREACH(e_config->desktop_backgrounds, l, cfbg)
|
||||
{
|
||||
if (!cfbg) continue;
|
||||
if ((cfbg->container == container) && (cfbg->zone == zone) &&
|
||||
if ((cfbg->manager == manager) && (cfbg->zone == zone) &&
|
||||
(cfbg->desk_x == desk_x) && (cfbg->desk_y == desk_y))
|
||||
{
|
||||
e_config->desktop_backgrounds = eina_list_remove_list(e_config->desktop_backgrounds, l);
|
||||
|
@ -393,7 +397,7 @@ e_bg_del(int container, int zone, int desk_x, int desk_y)
|
|||
}
|
||||
|
||||
ev = E_NEW(E_Event_Bg_Update, 1);
|
||||
ev->container = container;
|
||||
ev->manager = manager;
|
||||
ev->zone = zone;
|
||||
ev->desk_x = desk_x;
|
||||
ev->desk_y = desk_y;
|
||||
|
@ -403,21 +407,13 @@ e_bg_del(int container, int zone, int desk_x, int desk_y)
|
|||
EAPI void
|
||||
e_bg_update(void)
|
||||
{
|
||||
Eina_List *l, *ll, *lll;
|
||||
E_Manager *man;
|
||||
E_Container *con;
|
||||
const Eina_List *l, *ll;
|
||||
E_Comp *c;
|
||||
E_Zone *zone;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), l, man)
|
||||
{
|
||||
EINA_LIST_FOREACH(man->containers, ll, con)
|
||||
{
|
||||
EINA_LIST_FOREACH(con->zones, lll, zone)
|
||||
{
|
||||
e_zone_bg_reconfigure(zone);
|
||||
}
|
||||
}
|
||||
}
|
||||
EINA_LIST_FOREACH(e_comp_list(), l, c)
|
||||
EINA_LIST_FOREACH(c->zones, ll, zone)
|
||||
e_zone_bg_reconfigure(zone);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
|
@ -507,19 +503,11 @@ _e_bg_signal(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNU
|
|||
{
|
||||
E_Zone *zone = data;
|
||||
|
||||
if (zone->prev_bg_object)
|
||||
{
|
||||
evas_object_del(zone->prev_bg_object);
|
||||
zone->prev_bg_object = NULL;
|
||||
}
|
||||
if (zone->transition_object)
|
||||
{
|
||||
evas_object_del(zone->transition_object);
|
||||
zone->transition_object = NULL;
|
||||
}
|
||||
E_FREE_FUNC(zone->prev_bg_object, evas_object_del);
|
||||
E_FREE_FUNC(zone->transition_object, evas_object_del);
|
||||
evas_object_move(zone->bg_object, zone->x, zone->y);
|
||||
evas_object_resize(zone->bg_object, zone->w, zone->h);
|
||||
evas_object_layer_set(zone->bg_object, E_COMP_CANVAS_LAYER_BG);
|
||||
evas_object_layer_set(zone->bg_object, E_LAYER_BG);
|
||||
evas_object_clip_set(zone->bg_object, zone->bg_clip_object);
|
||||
evas_object_show(zone->bg_object);
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ extern EAPI int E_EVENT_BG_UPDATE;
|
|||
|
||||
struct _E_Event_Bg_Update
|
||||
{
|
||||
int container;
|
||||
int manager;
|
||||
int zone;
|
||||
int desk_x;
|
||||
int desk_y;
|
||||
|
@ -28,11 +28,11 @@ struct _E_Event_Bg_Update
|
|||
EINTERN int e_bg_init(void);
|
||||
EINTERN int e_bg_shutdown(void);
|
||||
|
||||
EAPI const E_Config_Desktop_Background *e_bg_config_get(int container_num, int zone_num, int desk_x, int desk_y);
|
||||
EAPI Eina_Stringshare *e_bg_file_get(int container_num, int zone_num, int desk_x, int desk_y);
|
||||
EAPI const E_Config_Desktop_Background *e_bg_config_get(int manager_num, int zone_num, int desk_x, int desk_y);
|
||||
EAPI Eina_Stringshare *e_bg_file_get(int manager_num, int zone_num, int desk_x, int desk_y);
|
||||
EAPI void e_bg_zone_update(E_Zone *zone, E_Bg_Transition transition);
|
||||
EAPI void e_bg_add(int container, int zone, int desk_x, int desk_y, const char *file);
|
||||
EAPI void e_bg_del(int container, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_bg_add(int manager, int zone, int desk_x, int desk_y, const char *file);
|
||||
EAPI void e_bg_del(int manager, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_bg_default_set(const char *file);
|
||||
EAPI void e_bg_update(void);
|
||||
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
#include "e.h"
|
||||
|
||||
/* local subsystem functions */
|
||||
static Eina_Bool _e_bindings_mapping_change_event_cb(void *data, int type, void *event);
|
||||
|
||||
static void _e_bindings_mouse_free(E_Binding_Mouse *bind);
|
||||
static void _e_bindings_key_free(E_Binding_Key *bind);
|
||||
static void _e_bindings_edge_free(E_Binding_Edge *bind);
|
||||
|
@ -15,15 +13,12 @@ static Eina_Bool _e_bindings_edge_cb_timer(void *data);
|
|||
|
||||
/* local subsystem globals */
|
||||
|
||||
static Ecore_Event_Handler *mapping_handler = NULL;
|
||||
|
||||
static Eina_List *mouse_bindings = NULL;
|
||||
static Eina_List *key_bindings = NULL;
|
||||
static Eina_List *edge_bindings = NULL;
|
||||
static Eina_List *signal_bindings = NULL;
|
||||
static Eina_List *wheel_bindings = NULL;
|
||||
static Eina_List *acpi_bindings = NULL;
|
||||
static int _e_bindings_mapping_change_enabled = 1;
|
||||
|
||||
typedef struct _E_Binding_Edge_Data E_Binding_Edge_Data;
|
||||
|
||||
|
@ -48,9 +43,6 @@ e_bindings_init(void)
|
|||
E_Config_Binding_Acpi *eba;
|
||||
Eina_List *l;
|
||||
|
||||
mapping_handler = ecore_event_handler_add
|
||||
(ECORE_X_EVENT_MAPPING_CHANGE, _e_bindings_mapping_change_event_cb, NULL);
|
||||
|
||||
EINA_LIST_FOREACH(e_bindings->mouse_bindings, l, ebm)
|
||||
e_bindings_mouse_add(ebm->context, ebm->button, ebm->modifiers,
|
||||
ebm->any_mod, ebm->action, ebm->params);
|
||||
|
@ -105,12 +97,6 @@ e_bindings_shutdown(void)
|
|||
E_FREE_LIST(wheel_bindings, _e_bindings_wheel_free);
|
||||
E_FREE_LIST(acpi_bindings, _e_bindings_acpi_free);
|
||||
|
||||
if (mapping_handler)
|
||||
{
|
||||
ecore_event_handler_del(mapping_handler);
|
||||
mapping_handler = NULL;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -136,7 +122,8 @@ e_bindings_ecore_event_mouse_wheel_convert(const Ecore_Event_Mouse_Wheel *ev, E_
|
|||
memset(event, 0, sizeof(E_Binding_Event_Wheel));
|
||||
event->direction = ev->direction;
|
||||
event->z = ev->z;
|
||||
event->canvas.x = ev->root.x, event->canvas.y = ev->root.y;
|
||||
event->canvas.x = e_comp_canvas_x_root_adjust(e_comp_get(NULL), ev->root.x);
|
||||
event->canvas.y = e_comp_canvas_x_root_adjust(e_comp_get(NULL), ev->root.y);
|
||||
event->timestamp = ev->timestamp;
|
||||
event->modifiers = _e_bindings_modifiers(ev->modifiers);
|
||||
}
|
||||
|
@ -146,7 +133,8 @@ e_bindings_ecore_event_mouse_button_convert(const Ecore_Event_Mouse_Button *ev,
|
|||
{
|
||||
memset(event, 0, sizeof(E_Binding_Event_Mouse_Button));
|
||||
event->button = ev->buttons;
|
||||
event->canvas.x = ev->root.x, event->canvas.y = ev->root.y;
|
||||
event->canvas.x = e_comp_canvas_x_root_adjust(e_comp_get(NULL), ev->root.x);
|
||||
event->canvas.y = e_comp_canvas_x_root_adjust(e_comp_get(NULL), ev->root.y);
|
||||
event->timestamp = ev->timestamp;
|
||||
event->modifiers = _e_bindings_modifiers(ev->modifiers);
|
||||
|
||||
|
@ -189,6 +177,20 @@ e_bindings_evas_event_mouse_wheel_convert(const Evas_Event_Mouse_Wheel *ev, E_Bi
|
|||
*/
|
||||
}
|
||||
|
||||
EAPI int
|
||||
e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers)
|
||||
{
|
||||
int mod = 0;
|
||||
|
||||
mod |= (E_BINDING_MODIFIER_SHIFT * evas_key_modifier_is_set(modifiers, "Shift"));
|
||||
mod |= (E_BINDING_MODIFIER_CTRL * evas_key_modifier_is_set(modifiers, "Control"));
|
||||
mod |= (E_BINDING_MODIFIER_ALT * evas_key_modifier_is_set(modifiers, "Alt"));
|
||||
mod |= (E_BINDING_MODIFIER_WIN * evas_key_modifier_is_set(modifiers, "Super"));
|
||||
mod |= (E_BINDING_MODIFIER_WIN * evas_key_modifier_is_set(modifiers, "Hyper"));
|
||||
mod |= (E_BINDING_MODIFIER_ALTGR * evas_key_modifier_is_set(modifiers, "AltGr"));
|
||||
return mod;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_bindings_evas_event_mouse_button_convert(const Evas_Event_Mouse_Down *ev, E_Binding_Event_Mouse_Button *event)
|
||||
{
|
||||
|
@ -197,12 +199,7 @@ e_bindings_evas_event_mouse_button_convert(const Evas_Event_Mouse_Down *ev, E_Bi
|
|||
event->canvas.x = ev->output.x, event->canvas.y = ev->output.y;
|
||||
event->timestamp = ev->timestamp;
|
||||
|
||||
event->modifiers |= (E_BINDING_MODIFIER_SHIFT * evas_key_modifier_is_set(ev->modifiers, "Shift"));
|
||||
event->modifiers |= (E_BINDING_MODIFIER_CTRL * evas_key_modifier_is_set(ev->modifiers, "Control"));
|
||||
event->modifiers |= (E_BINDING_MODIFIER_ALT * evas_key_modifier_is_set(ev->modifiers, "Alt"));
|
||||
event->modifiers |= (E_BINDING_MODIFIER_WIN * evas_key_modifier_is_set(ev->modifiers, "Super"));
|
||||
event->modifiers |= (E_BINDING_MODIFIER_WIN * evas_key_modifier_is_set(ev->modifiers, "Hyper"));
|
||||
event->modifiers |= (E_BINDING_MODIFIER_ALTGR * evas_key_modifier_is_set(ev->modifiers, "AltGr"));
|
||||
event->modifiers = e_bindings_evas_modifiers_convert(ev->modifiers);
|
||||
|
||||
event->hold = (ev->event_flags & EVAS_EVENT_FLAG_ON_HOLD);
|
||||
event->scroll = (ev->event_flags & EVAS_EVENT_FLAG_ON_SCROLL);
|
||||
|
@ -873,7 +870,7 @@ e_bindings_edge_in_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Z
|
|||
Eina_List *l;
|
||||
|
||||
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, ev->zone->desk_y_current);
|
||||
if (current->fullscreen_borders && (!e_config->fullscreen_flip)) return NULL;
|
||||
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return NULL;
|
||||
|
||||
if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) mod |= E_BINDING_MODIFIER_SHIFT;
|
||||
if (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
|
||||
|
@ -965,7 +962,7 @@ e_bindings_edge_down_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event
|
|||
Eina_List *l;
|
||||
|
||||
current = e_desk_at_xy_get(ev->zone, ev->zone->desk_x_current, ev->zone->desk_y_current);
|
||||
if (current->fullscreen_borders && (!e_config->fullscreen_flip)) return NULL;
|
||||
if (current->fullscreen_clients && (!e_config->fullscreen_flip)) return NULL;
|
||||
|
||||
if (ev->modifiers & ECORE_EVENT_MODIFIER_SHIFT) mod |= E_BINDING_MODIFIER_SHIFT;
|
||||
if (ev->modifiers & ECORE_EVENT_MODIFIER_CTRL) mod |= E_BINDING_MODIFIER_CTRL;
|
||||
|
@ -1364,29 +1361,6 @@ e_bindings_acpi_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Acpi
|
|||
return act;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_bindings_mapping_change_enable(Eina_Bool enable)
|
||||
{
|
||||
if (enable)
|
||||
_e_bindings_mapping_change_enabled++;
|
||||
else
|
||||
_e_bindings_mapping_change_enabled--;
|
||||
if (_e_bindings_mapping_change_enabled < 0)
|
||||
_e_bindings_mapping_change_enabled = 0;
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static Eina_Bool
|
||||
_e_bindings_mapping_change_event_cb(void *data __UNUSED__, int type __UNUSED__, void *event __UNUSED__)
|
||||
{
|
||||
if (!_e_bindings_mapping_change_enabled) return ECORE_CALLBACK_RENEW;
|
||||
e_managers_keys_ungrab();
|
||||
e_border_button_bindings_ungrab_all();
|
||||
e_border_button_bindings_grab_all();
|
||||
e_managers_keys_grab();
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_bindings_mouse_free(E_Binding_Mouse *binding)
|
||||
{
|
||||
|
@ -1502,14 +1476,13 @@ _e_bindings_edge_cb_timer(void *data)
|
|||
ev = ed->ev;
|
||||
|
||||
E_FREE(ed);
|
||||
binding->timer = NULL;
|
||||
|
||||
if (act->func.go_edge)
|
||||
act->func.go_edge(obj, binding->params, ev);
|
||||
else if (act->func.go)
|
||||
act->func.go(obj, binding->params);
|
||||
|
||||
binding->timer = NULL;
|
||||
|
||||
/* Duplicate event */
|
||||
E_FREE(ev);
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ typedef enum _E_Binding_Context
|
|||
E_BINDING_CONTEXT_UNKNOWN,
|
||||
E_BINDING_CONTEXT_WINDOW,
|
||||
E_BINDING_CONTEXT_ZONE,
|
||||
E_BINDING_CONTEXT_CONTAINER,
|
||||
E_BINDING_CONTEXT_COMPOSITOR,
|
||||
E_BINDING_CONTEXT_MANAGER,
|
||||
E_BINDING_CONTEXT_MENU,
|
||||
E_BINDING_CONTEXT_WINLIST,
|
||||
|
@ -193,8 +193,8 @@ EAPI void e_bindings_acpi_add(E_Binding_Context ctxt, int type, int status, cons
|
|||
EAPI void e_bindings_acpi_del(E_Binding_Context ctxt, int type, int status, const char *action, const char *params);
|
||||
EAPI E_Action *e_bindings_acpi_find(E_Binding_Context ctxt, E_Event_Acpi *ev, E_Binding_Acpi **bind_ret);
|
||||
EAPI E_Action *e_bindings_acpi_event_handle(E_Binding_Context ctxt, E_Object *obj, E_Event_Acpi *ev);
|
||||
EAPI void e_bindings_mapping_change_enable(Eina_Bool enable);
|
||||
|
||||
EAPI int e_bindings_evas_modifiers_convert(Evas_Modifier *modifiers);
|
||||
EAPI int e_bindings_modifiers_to_ecore_convert(E_Binding_Modifier modifiers);
|
||||
EAPI void e_bindings_evas_event_mouse_button_convert(const Evas_Event_Mouse_Down *ev, E_Binding_Event_Mouse_Button *event);
|
||||
EAPI void e_bindings_evas_event_mouse_wheel_convert(const Evas_Event_Mouse_Wheel *ev, E_Binding_Event_Wheel *event);
|
||||
|
|
10232
src/bin/e_border.c
10232
src/bin/e_border.c
File diff suppressed because it is too large
Load Diff
|
@ -1,885 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef enum _E_Screen_Limits
|
||||
{
|
||||
E_SCREEN_LIMITS_PARTLY = 0,
|
||||
E_SCREEN_LIMITS_COMPLETELY = 1,
|
||||
E_SCREEN_LIMITS_WITHIN = 2
|
||||
} E_Screen_Limits;
|
||||
|
||||
typedef enum _E_Icon_Preference
|
||||
{
|
||||
E_ICON_PREF_E_DEFAULT,
|
||||
E_ICON_PREF_NETWM,
|
||||
E_ICON_PREF_USER
|
||||
} E_Icon_Preference;
|
||||
|
||||
typedef enum _E_Direction
|
||||
{
|
||||
E_DIRECTION_UP,
|
||||
E_DIRECTION_DOWN,
|
||||
E_DIRECTION_LEFT,
|
||||
E_DIRECTION_RIGHT
|
||||
} E_Direction;
|
||||
|
||||
typedef enum _E_Transition
|
||||
{
|
||||
E_TRANSITION_LINEAR = 0,
|
||||
E_TRANSITION_SINUSOIDAL = 1,
|
||||
E_TRANSITION_ACCELERATE = 2,
|
||||
E_TRANSITION_DECELERATE = 3,
|
||||
E_TRANSITION_ACCELERATE_LOTS = 4,
|
||||
E_TRANSITION_DECELERATE_LOTS = 5,
|
||||
E_TRANSITION_SINUSOIDAL_LOTS = 6,
|
||||
E_TRANSITION_BOUNCE = 7,
|
||||
E_TRANSITION_BOUNCE_LOTS = 8
|
||||
} E_Transition;
|
||||
|
||||
typedef enum _E_Stacking
|
||||
{
|
||||
E_STACKING_NONE,
|
||||
E_STACKING_ABOVE,
|
||||
E_STACKING_BELOW
|
||||
} E_Stacking;
|
||||
|
||||
typedef enum _E_Focus_Policy
|
||||
{
|
||||
E_FOCUS_CLICK,
|
||||
E_FOCUS_MOUSE,
|
||||
E_FOCUS_SLOPPY,
|
||||
E_FOCUS_LAST
|
||||
} E_Focus_Policy;
|
||||
|
||||
typedef enum _E_Urgency_Policy
|
||||
{
|
||||
E_ACTIVEHINT_POLICY_IGNORE,
|
||||
E_ACTIVEHINT_POLICY_ANIMATE,
|
||||
E_ACTIVEHINT_POLICY_ACTIVATE
|
||||
} E_Urgency_Policy;
|
||||
|
||||
typedef enum _E_Focus_Setting
|
||||
{
|
||||
E_FOCUS_NONE,
|
||||
E_FOCUS_NEW_WINDOW,
|
||||
E_FOCUS_NEW_DIALOG,
|
||||
E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED
|
||||
} E_Focus_Setting;
|
||||
|
||||
typedef enum _E_Maximize
|
||||
{
|
||||
E_MAXIMIZE_NONE = 0x00000000,
|
||||
E_MAXIMIZE_FULLSCREEN = 0x00000001,
|
||||
E_MAXIMIZE_SMART = 0x00000002,
|
||||
E_MAXIMIZE_EXPAND = 0x00000003,
|
||||
E_MAXIMIZE_FILL = 0x00000004,
|
||||
E_MAXIMIZE_TYPE = 0x0000000f,
|
||||
E_MAXIMIZE_VERTICAL = 0x00000010,
|
||||
E_MAXIMIZE_HORIZONTAL = 0x00000020,
|
||||
E_MAXIMIZE_BOTH = 0x00000030,
|
||||
E_MAXIMIZE_LEFT = 0x00000070,
|
||||
E_MAXIMIZE_RIGHT = 0x000000b0,
|
||||
E_MAXIMIZE_DIRECTION = 0x000000f0
|
||||
} E_Maximize;
|
||||
|
||||
typedef enum _E_Fullscreen
|
||||
{
|
||||
/* Resize window */
|
||||
E_FULLSCREEN_RESIZE,
|
||||
/* Change screen resoultion and resize window */
|
||||
E_FULLSCREEN_ZOOM
|
||||
} E_Fullscreen;
|
||||
|
||||
typedef enum _E_Window_Placement
|
||||
{
|
||||
E_WINDOW_PLACEMENT_SMART,
|
||||
E_WINDOW_PLACEMENT_ANTIGADGET,
|
||||
E_WINDOW_PLACEMENT_CURSOR,
|
||||
E_WINDOW_PLACEMENT_MANUAL
|
||||
} E_Window_Placement;
|
||||
|
||||
typedef enum _E_Border_Hook_Point
|
||||
{
|
||||
E_BORDER_HOOK_EVAL_PRE_FETCH,
|
||||
E_BORDER_HOOK_EVAL_PRE_POST_FETCH,
|
||||
E_BORDER_HOOK_EVAL_POST_FETCH,
|
||||
E_BORDER_HOOK_EVAL_PRE_BORDER_ASSIGN,
|
||||
E_BORDER_HOOK_EVAL_POST_BORDER_ASSIGN,
|
||||
E_BORDER_HOOK_EVAL_PRE_NEW_BORDER,
|
||||
E_BORDER_HOOK_EVAL_POST_NEW_BORDER,
|
||||
E_BORDER_HOOK_EVAL_END,
|
||||
E_BORDER_HOOK_CONTAINER_LAYOUT,
|
||||
E_BORDER_HOOK_NEW_BORDER,
|
||||
E_BORDER_HOOK_SET_DESK,
|
||||
E_BORDER_HOOK_MOVE_BEGIN,
|
||||
E_BORDER_HOOK_MOVE_UPDATE,
|
||||
E_BORDER_HOOK_MOVE_END,
|
||||
E_BORDER_HOOK_RESIZE_BEGIN,
|
||||
E_BORDER_HOOK_RESIZE_UPDATE,
|
||||
E_BORDER_HOOK_RESIZE_END
|
||||
} E_Border_Hook_Point;
|
||||
|
||||
typedef struct _E_Border E_Border;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Simple;
|
||||
typedef struct _E_Border_Pending_Move_Resize E_Border_Pending_Move_Resize;
|
||||
typedef struct _E_Border_Hook E_Border_Hook;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Resize;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Move;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Add;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Remove;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Show;
|
||||
typedef struct _E_Event_Border_Hide E_Event_Border_Hide;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Iconify;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Uniconify;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Stick;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Unstick;
|
||||
typedef struct _E_Event_Border_Zone_Set E_Event_Border_Zone_Set;
|
||||
typedef struct _E_Event_Border_Desk_Set E_Event_Border_Desk_Set;
|
||||
typedef struct _E_Event_Border_Stack E_Event_Border_Stack;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Icon_Change;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Title_Change;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Urgent_Change;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Focus_In;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Focus_Out;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Property;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Fullscreen;
|
||||
typedef struct _E_Event_Border_Simple E_Event_Border_Unfullscreen;
|
||||
typedef void (*E_Border_Move_Intercept_Cb)(E_Border *, int x, int y);
|
||||
#else
|
||||
#ifndef E_BORDER_H
|
||||
#define E_BORDER_H
|
||||
|
||||
#define E_BORDER_TYPE (int)0xE0b01002
|
||||
|
||||
struct _E_Border
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
int mx, my;
|
||||
} current, last_down[3], last_up[3];
|
||||
} mouse;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
int mx, my;
|
||||
int button;
|
||||
} down;
|
||||
} moveinfo;
|
||||
|
||||
int x, y, w, h;
|
||||
int ref;
|
||||
E_Zone *zone;
|
||||
E_Desk *desk;
|
||||
|
||||
struct
|
||||
{
|
||||
int l, r, t, b;
|
||||
Eina_Bool calc : 1; // inset has been calculated
|
||||
} client_inset;
|
||||
|
||||
E_Comp_Win *cw;
|
||||
Ecore_X_Window win;
|
||||
Evas_Object *bg_object;
|
||||
Evas_Object *icon_object;
|
||||
Evas_Object *input_object;
|
||||
Eina_Stringshare *internal_icon;
|
||||
Eina_Stringshare *internal_icon_key;
|
||||
|
||||
Eina_Bool callbacks_set : 1;
|
||||
|
||||
struct
|
||||
{
|
||||
Ecore_X_Window lock_win;
|
||||
Ecore_X_Window win;
|
||||
|
||||
int w, h;
|
||||
|
||||
struct
|
||||
{
|
||||
Eina_Bool mapping_change : 1;
|
||||
Eina_Bool iconic_shading : 1;
|
||||
} hacks;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char changed : 1;
|
||||
unsigned char user_selected : 1;
|
||||
Eina_Stringshare *name;
|
||||
} border;
|
||||
|
||||
unsigned char shaped : 1;
|
||||
unsigned char argb : 1;
|
||||
|
||||
/* ICCCM */
|
||||
struct
|
||||
{
|
||||
Eina_Stringshare *title;
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare *class;
|
||||
Eina_Stringshare *icon_name;
|
||||
Eina_Stringshare *machine;
|
||||
int min_w, min_h;
|
||||
int max_w, max_h;
|
||||
int base_w, base_h;
|
||||
int step_w, step_h;
|
||||
int start_x, start_y;
|
||||
double min_aspect, max_aspect;
|
||||
Ecore_X_Window_State_Hint initial_state;
|
||||
Ecore_X_Window_State_Hint state;
|
||||
Ecore_X_Pixmap icon_pixmap;
|
||||
Ecore_X_Pixmap icon_mask;
|
||||
Ecore_X_Window icon_window;
|
||||
Ecore_X_Window window_group;
|
||||
Ecore_X_Window transient_for;
|
||||
Ecore_X_Window client_leader;
|
||||
Ecore_X_Gravity gravity;
|
||||
Eina_Stringshare *window_role;
|
||||
unsigned char take_focus : 1;
|
||||
unsigned char accepts_focus : 1;
|
||||
unsigned char urgent : 1;
|
||||
unsigned char delete_request : 1;
|
||||
unsigned char request_pos : 1;
|
||||
struct
|
||||
{
|
||||
int argc;
|
||||
char **argv;
|
||||
} command;
|
||||
struct
|
||||
{
|
||||
unsigned char title : 1;
|
||||
unsigned char name_class : 1;
|
||||
unsigned char icon_name : 1;
|
||||
unsigned char machine : 1;
|
||||
unsigned char hints : 1;
|
||||
unsigned char size_pos_hints : 1;
|
||||
unsigned char protocol : 1;
|
||||
unsigned char transient_for : 1;
|
||||
unsigned char client_leader : 1;
|
||||
unsigned char window_role : 1;
|
||||
unsigned char state : 1;
|
||||
unsigned char command : 1;
|
||||
} fetch;
|
||||
} icccm;
|
||||
|
||||
/* MWM */
|
||||
struct
|
||||
{
|
||||
Ecore_X_MWM_Hint_Func func;
|
||||
Ecore_X_MWM_Hint_Decor decor;
|
||||
Ecore_X_MWM_Hint_Input input;
|
||||
unsigned char exists : 1;
|
||||
unsigned char borderless : 1;
|
||||
struct
|
||||
{
|
||||
unsigned char hints : 1;
|
||||
} fetch;
|
||||
} mwm;
|
||||
|
||||
/* NetWM */
|
||||
struct
|
||||
{
|
||||
pid_t pid;
|
||||
unsigned int desktop;
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare *icon_name;
|
||||
Ecore_X_Icon *icons;
|
||||
int num_icons;
|
||||
unsigned int user_time;
|
||||
unsigned char opacity;
|
||||
Eina_Bool opacity_changed : 1; // prevent fetching opacity next prop change
|
||||
struct
|
||||
{
|
||||
int left;
|
||||
int right;
|
||||
int top;
|
||||
int bottom;
|
||||
int left_start_y;
|
||||
int left_end_y;
|
||||
int right_start_y;
|
||||
int right_end_y;
|
||||
int top_start_x;
|
||||
int top_end_x;
|
||||
int bottom_start_x;
|
||||
int bottom_end_x;
|
||||
} strut;
|
||||
unsigned char ping : 1;
|
||||
struct
|
||||
{
|
||||
unsigned char request : 1;
|
||||
unsigned int wait;
|
||||
Ecore_X_Sync_Alarm alarm;
|
||||
Ecore_X_Sync_Counter counter;
|
||||
unsigned int serial;
|
||||
double send_time;
|
||||
} sync;
|
||||
|
||||
/* NetWM Window state */
|
||||
struct
|
||||
{
|
||||
unsigned char modal : 1;
|
||||
unsigned char sticky : 1;
|
||||
unsigned char maximized_v : 1;
|
||||
unsigned char maximized_h : 1;
|
||||
unsigned char shaded : 1;
|
||||
unsigned char skip_taskbar : 1;
|
||||
unsigned char skip_pager : 1;
|
||||
unsigned char hidden : 1;
|
||||
unsigned char fullscreen : 1;
|
||||
E_Stacking stacking;
|
||||
} state;
|
||||
|
||||
/* NetWM Window allowed actions */
|
||||
struct
|
||||
{
|
||||
unsigned char move : 1;
|
||||
unsigned char resize : 1;
|
||||
unsigned char minimize : 1;
|
||||
unsigned char shade : 1;
|
||||
unsigned char stick : 1;
|
||||
unsigned char maximized_h : 1;
|
||||
unsigned char maximized_v : 1;
|
||||
unsigned char fullscreen : 1;
|
||||
unsigned char change_desktop : 1;
|
||||
unsigned char close : 1;
|
||||
} action;
|
||||
|
||||
Ecore_X_Window_Type type;
|
||||
Ecore_X_Window_Type *extra_types;
|
||||
int extra_types_num;
|
||||
int startup_id;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char name : 1;
|
||||
unsigned char icon_name : 1;
|
||||
unsigned char icon : 1;
|
||||
unsigned char user_time : 1;
|
||||
unsigned char strut : 1;
|
||||
unsigned char type : 1;
|
||||
unsigned char state : 1;
|
||||
unsigned char opacity : 1;
|
||||
/* No, fetch on new_client, shouldn't be changed after map.
|
||||
unsigned char pid : 1;
|
||||
*/
|
||||
/* No, ignore this
|
||||
unsigned char desktop : 1;
|
||||
*/
|
||||
} fetch;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
} update;
|
||||
} netwm;
|
||||
|
||||
/* Extra e stuff */
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y;
|
||||
|
||||
unsigned char updated : 1;
|
||||
} video_position;
|
||||
Ecore_X_Window video_parent;
|
||||
E_Border *video_parent_border;
|
||||
Eina_List *video_child;
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
struct
|
||||
{
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare **available_list;
|
||||
int num;
|
||||
unsigned char wait_for_done : 1;
|
||||
unsigned char use : 1;
|
||||
} profile;
|
||||
#endif
|
||||
unsigned char centered : 1;
|
||||
unsigned char video : 1;
|
||||
} state;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
unsigned char video_parent : 1;
|
||||
unsigned char video_position : 1;
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
unsigned char profile : 1;
|
||||
#endif
|
||||
} fetch;
|
||||
} e;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char soft_menu : 1;
|
||||
unsigned char soft_menus : 1;
|
||||
} fetch;
|
||||
|
||||
unsigned char soft_menu : 1;
|
||||
unsigned char soft_menus : 1;
|
||||
} qtopia;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
unsigned char vkbd : 1;
|
||||
} fetch;
|
||||
Ecore_X_Virtual_Keyboard_State state;
|
||||
unsigned char have_property : 1;
|
||||
unsigned char vkbd : 1;
|
||||
} vkbd;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char conformant : 1;
|
||||
} fetch;
|
||||
unsigned char conformant : 1;
|
||||
} conformant;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
struct
|
||||
{
|
||||
unsigned int major : 1;
|
||||
unsigned int minor : 1;
|
||||
} priority;
|
||||
unsigned char quickpanel : 1;
|
||||
unsigned char zone : 1;
|
||||
} fetch;
|
||||
Ecore_X_Illume_Quickpanel_State state;
|
||||
struct
|
||||
{
|
||||
unsigned int major : 1;
|
||||
unsigned int minor : 1;
|
||||
} priority;
|
||||
unsigned char quickpanel : 1;
|
||||
int zone;
|
||||
} quickpanel;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char drag : 1;
|
||||
unsigned char locked : 1;
|
||||
} fetch;
|
||||
unsigned char drag : 1;
|
||||
unsigned char locked : 1;
|
||||
} drag;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
} fetch;
|
||||
Ecore_X_Illume_Window_State state;
|
||||
} win_state;
|
||||
} illume;
|
||||
|
||||
Ecore_X_Window_Attributes initial_attributes;
|
||||
} client;
|
||||
|
||||
E_Container_Shape *shape;
|
||||
|
||||
unsigned int visible : 1;
|
||||
Eina_Bool hidden : 1; // set when window has been hidden by api and should not be shown
|
||||
unsigned int await_hide_event;
|
||||
unsigned int moving : 1;
|
||||
unsigned int focused : 1;
|
||||
unsigned int new_client : 1;
|
||||
unsigned int re_manage : 1;
|
||||
unsigned int placed : 1;
|
||||
unsigned int shading : 1;
|
||||
unsigned int shaded : 1;
|
||||
unsigned int iconic : 1;
|
||||
unsigned int deskshow : 1;
|
||||
unsigned int sticky : 1;
|
||||
unsigned int shaped_input : 1;
|
||||
unsigned int need_shape_merge : 1;
|
||||
unsigned int need_shape_export : 1;
|
||||
unsigned int fullscreen : 1;
|
||||
unsigned int need_fullscreen : 1;
|
||||
unsigned int already_unparented : 1;
|
||||
unsigned int need_reparent : 1;
|
||||
unsigned int button_grabbed : 1;
|
||||
unsigned int delete_requested : 1;
|
||||
unsigned int ping_ok : 1;
|
||||
unsigned int hung : 1;
|
||||
unsigned int take_focus : 1;
|
||||
unsigned int want_focus : 1;
|
||||
unsigned int user_skip_winlist : 1;
|
||||
unsigned int need_maximize : 1;
|
||||
E_Maximize maximized;
|
||||
E_Fullscreen fullscreen_policy;
|
||||
unsigned int borderless : 1;
|
||||
unsigned char offer_resistance : 1;
|
||||
Eina_Stringshare *bordername;
|
||||
|
||||
unsigned int lock_user_location : 1; /*DONE*/
|
||||
unsigned int lock_client_location : 1; /*DONE*/
|
||||
unsigned int lock_user_size : 1; /*DONE*/
|
||||
unsigned int lock_client_size : 1; /*DONE*/
|
||||
unsigned int lock_user_stacking : 1; /*DONE*/
|
||||
unsigned int lock_client_stacking : 1; /*DONE*/
|
||||
unsigned int lock_user_iconify : 1; /*DONE*/
|
||||
unsigned int lock_client_iconify : 1; /*DONE*/
|
||||
unsigned int lock_user_desk : 1;
|
||||
unsigned int lock_client_desk : 1;
|
||||
unsigned int lock_user_sticky : 1; /*DONE*/
|
||||
unsigned int lock_client_sticky : 1; /*DONE*/
|
||||
unsigned int lock_user_shade : 1; /*DONE*/
|
||||
unsigned int lock_client_shade : 1; /*DONE*/
|
||||
unsigned int lock_user_maximize : 1; /*DONE*/
|
||||
unsigned int lock_client_maximize : 1; /*DONE*/
|
||||
unsigned int lock_user_fullscreen : 1; /*DONE*/
|
||||
unsigned int lock_client_fullscreen : 1; /*DONE*/
|
||||
unsigned int lock_border : 1; /*DONE*/
|
||||
unsigned int lock_close : 1; /*DONE*/
|
||||
unsigned int lock_focus_in : 1; /*DONE*/
|
||||
unsigned int lock_focus_out : 1; /*DONE*/
|
||||
unsigned int lock_life : 1; /*DONE*/
|
||||
|
||||
unsigned int internal : 1;
|
||||
unsigned int internal_no_remember : 1;
|
||||
unsigned int internal_no_reopen : 1;
|
||||
unsigned int stolen : 1;
|
||||
Eina_Bool theme_shadow : 1;
|
||||
Eina_Bool destroyed : 1;
|
||||
|
||||
Ecore_Evas *internal_ecore_evas;
|
||||
|
||||
double ping;
|
||||
|
||||
unsigned char changed : 1;
|
||||
|
||||
unsigned char icon_preference;
|
||||
unsigned char ignore_first_unmap;
|
||||
unsigned char resize_mode;
|
||||
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
E_Layer layer;
|
||||
int zone;
|
||||
E_Maximize maximized;
|
||||
} saved;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char valid : 1;
|
||||
int x, y, w, h;
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
} saved;
|
||||
} pre_res_change;
|
||||
|
||||
struct
|
||||
{
|
||||
double start;
|
||||
double val;
|
||||
int x, y;
|
||||
E_Direction dir;
|
||||
Ecore_Animator *anim;
|
||||
} shade;
|
||||
|
||||
struct
|
||||
{
|
||||
int x, y;
|
||||
int modified;
|
||||
} shelf_fix;
|
||||
|
||||
Eina_List *stick_desks;
|
||||
E_Menu *border_menu;
|
||||
E_Config_Dialog *border_locks_dialog;
|
||||
E_Config_Dialog *border_remember_dialog;
|
||||
E_Config_Dialog *border_border_dialog;
|
||||
E_Dialog *border_prop_dialog;
|
||||
Eina_List *pending_move_resize;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char visible : 1;
|
||||
unsigned char pos : 1;
|
||||
unsigned char size : 1;
|
||||
unsigned char stack : 1;
|
||||
unsigned char prop : 1;
|
||||
unsigned char border : 1;
|
||||
unsigned char reset_gravity : 1;
|
||||
unsigned char shading : 1;
|
||||
unsigned char shaded : 1;
|
||||
unsigned char shape : 1;
|
||||
unsigned char shape_input : 1;
|
||||
unsigned char icon : 1;
|
||||
} changes;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char start : 1;
|
||||
int x, y;
|
||||
} drag;
|
||||
|
||||
E_Layer layer;
|
||||
E_Action *cur_mouse_action;
|
||||
Ecore_Timer *raise_timer;
|
||||
Ecore_Poller *ping_poller;
|
||||
Ecore_Timer *kill_timer;
|
||||
E_Border_Move_Intercept_Cb move_intercept_cb;
|
||||
E_Remember *remember;
|
||||
|
||||
E_Border *modal;
|
||||
|
||||
E_Border *leader;
|
||||
Eina_List *group;
|
||||
|
||||
E_Border *parent;
|
||||
Eina_List *transients;
|
||||
|
||||
Efreet_Desktop *desktop;
|
||||
E_Exec_Instance *exe_inst;
|
||||
|
||||
unsigned char comp_hidden : 1;
|
||||
|
||||
unsigned char post_move : 1;
|
||||
unsigned char post_resize : 1;
|
||||
unsigned char post_show : 1;
|
||||
unsigned char during_lost : 1;
|
||||
|
||||
Ecore_Idle_Enterer *post_job;
|
||||
|
||||
Eina_Bool argb;
|
||||
|
||||
int tmp_input_hidden;
|
||||
E_Focus_Policy focus_policy_override;
|
||||
};
|
||||
|
||||
struct _E_Border_Pending_Move_Resize
|
||||
{
|
||||
int x, y, w, h;
|
||||
unsigned char move : 1;
|
||||
unsigned char resize : 1;
|
||||
unsigned char without_border : 1;
|
||||
unsigned int serial;
|
||||
};
|
||||
|
||||
struct _E_Border_Hook
|
||||
{
|
||||
E_Border_Hook_Point hookpoint;
|
||||
void (*func)(void *data, void *bd);
|
||||
void *data;
|
||||
unsigned char delete_me : 1;
|
||||
};
|
||||
|
||||
struct _E_Event_Border_Hide
|
||||
{
|
||||
E_Border *border;
|
||||
int manage;
|
||||
};
|
||||
|
||||
struct _E_Event_Border_Simple
|
||||
{
|
||||
E_Border *border;
|
||||
};
|
||||
|
||||
struct _E_Event_Border_Zone_Set
|
||||
{
|
||||
E_Border *border;
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
struct _E_Event_Border_Desk_Set
|
||||
{
|
||||
E_Border *border;
|
||||
E_Desk *desk;
|
||||
};
|
||||
|
||||
struct _E_Event_Border_Stack
|
||||
{
|
||||
E_Border *border, *stack;
|
||||
E_Stacking type;
|
||||
};
|
||||
|
||||
EINTERN int e_border_init(void);
|
||||
EINTERN int e_border_shutdown(void);
|
||||
|
||||
EAPI E_Border *e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal);
|
||||
EAPI void e_border_ref(E_Border *bd);
|
||||
EAPI void e_border_unref(E_Border *bd);
|
||||
EAPI void e_border_res_change_geometry_save(E_Border *bd);
|
||||
EAPI void e_border_res_change_geometry_restore(E_Border *bd);
|
||||
|
||||
EAPI void e_border_zone_set(E_Border *bd, E_Zone *zone);
|
||||
EAPI void e_border_desk_set(E_Border *bd, E_Desk *desk);
|
||||
EAPI void e_border_show(E_Border *bd);
|
||||
EAPI void e_border_hide(E_Border *bd, int manage);
|
||||
EAPI void e_border_move(E_Border *bd, int x, int y);
|
||||
EAPI void e_border_move_intercept_cb_set(E_Border *bd, E_Border_Move_Intercept_Cb cb);
|
||||
EAPI void e_border_move_without_border(E_Border *bd, int x, int y);
|
||||
EAPI void e_border_center(E_Border *bd);
|
||||
EAPI void e_border_center_pos_get(E_Border *bd, int *x, int *y);
|
||||
EAPI void e_border_resize(E_Border *bd, int w, int h);
|
||||
EAPI void e_border_resize_without_border(E_Border *bd, int w, int h);
|
||||
EAPI void e_border_move_resize(E_Border *bd, int x, int y, int w, int h);
|
||||
EAPI void e_border_move_resize_without_border(E_Border *bd, int x, int y, int w, int h);
|
||||
EAPI void e_border_layer_set(E_Border *bd, E_Layer layer);
|
||||
EAPI void e_border_raise(E_Border *bd);
|
||||
EAPI void e_border_lower(E_Border *bd);
|
||||
EAPI void e_border_stack_above(E_Border *bd, E_Border *above);
|
||||
EAPI void e_border_stack_below(E_Border *bd, E_Border *below);
|
||||
EAPI void e_border_focus_latest_set(E_Border *bd);
|
||||
EAPI void e_border_raise_latest_set(E_Border *bd);
|
||||
EAPI void e_border_focus_set_with_pointer(E_Border *bd);
|
||||
EAPI void e_border_focus_set(E_Border *bd, int focus, int set);
|
||||
EAPI void e_border_shade(E_Border *bd, E_Direction dir);
|
||||
EAPI void e_border_unshade(E_Border *bd, E_Direction dir);
|
||||
EAPI void e_border_maximize(E_Border *bd, E_Maximize max);
|
||||
EAPI void e_border_unmaximize(E_Border *bd, E_Maximize max);
|
||||
EAPI void e_border_fullscreen(E_Border *bd, E_Fullscreen policy);
|
||||
EAPI void e_border_unfullscreen(E_Border *bd);
|
||||
EAPI void e_border_iconify(E_Border *bd);
|
||||
EAPI void e_border_uniconify(E_Border *bd);
|
||||
EAPI void e_border_stick(E_Border *bd);
|
||||
EAPI void e_border_unstick(E_Border *bd);
|
||||
EAPI void e_border_pinned_set(E_Border *bd, int set);
|
||||
|
||||
EAPI E_Border *e_border_find_by_client_window(Ecore_X_Window win);
|
||||
EAPI E_Border *e_border_find_all_by_client_window(Ecore_X_Window win);
|
||||
EAPI E_Border *e_border_find_by_window(Ecore_X_Window win);
|
||||
EAPI E_Border *e_border_find_by_alarm(Ecore_X_Sync_Alarm alarm);
|
||||
EAPI E_Border *e_border_focused_get(void);
|
||||
|
||||
EAPI void e_border_idler_before(void);
|
||||
|
||||
EAPI Eina_List *e_border_client_list(void);
|
||||
|
||||
EAPI void e_border_act_move_keyboard(E_Border *bd);
|
||||
EAPI void e_border_act_resize_keyboard(E_Border *bd);
|
||||
|
||||
EAPI void e_border_act_move_begin(E_Border *bd, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_border_act_move_end(E_Border *bd, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_border_act_resize_begin(E_Border *bd, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_border_act_resize_end(E_Border *bd, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_border_act_menu_begin(E_Border *bd, E_Binding_Event_Mouse_Button *ev, int key);
|
||||
EAPI void e_border_act_close_begin(E_Border *bd);
|
||||
EAPI void e_border_act_kill_begin(E_Border *bd);
|
||||
|
||||
EAPI Evas_Object *e_border_icon_add(E_Border *bd, Evas *evas);
|
||||
|
||||
EAPI void e_border_button_bindings_ungrab_all(void);
|
||||
EAPI void e_border_button_bindings_grab_all(void);
|
||||
|
||||
EAPI Eina_List *e_border_focus_stack_get(void);
|
||||
EAPI Eina_List *e_border_lost_windows_get(E_Zone *zone);
|
||||
|
||||
EAPI void e_border_ping(E_Border *bd);
|
||||
EAPI void e_border_move_cancel(void);
|
||||
EAPI void e_border_resize_cancel(void);
|
||||
EAPI void e_border_frame_recalc(E_Border *bd);
|
||||
EAPI Eina_List *e_border_immortal_windows_get(void);
|
||||
|
||||
EAPI const char *e_border_name_get(const E_Border *bd);
|
||||
|
||||
EAPI void e_border_signal_move_begin(E_Border *bd, const char *sig, const char *src);
|
||||
EAPI void e_border_signal_move_end(E_Border *bd, const char *sig, const char *src);
|
||||
EAPI int e_border_resizing_get(E_Border *bd);
|
||||
EAPI void e_border_signal_resize_begin(E_Border *bd, const char *dir, const char *sig, const char *src);
|
||||
EAPI void e_border_signal_resize_end(E_Border *bd, const char *dir, const char *sig, const char *src);
|
||||
EAPI void e_border_resize_limit(E_Border *bd, int *w, int *h);
|
||||
|
||||
EAPI E_Border_Hook *e_border_hook_add(E_Border_Hook_Point hookpoint, void (*func)(void *data, void *bd), void *data);
|
||||
EAPI void e_border_hook_del(E_Border_Hook *bh);
|
||||
EAPI void e_border_focus_track_freeze(void);
|
||||
EAPI void e_border_focus_track_thaw(void);
|
||||
|
||||
EAPI E_Border *e_border_under_pointer_get(E_Desk *desk, E_Border *exclude);
|
||||
EAPI int e_border_pointer_warp_to_center_now(E_Border *bd);
|
||||
EAPI int e_border_pointer_warp_to_center(E_Border *bd);
|
||||
|
||||
EAPI void e_border_comp_hidden_set(E_Border *bd, Eina_Bool hidden);
|
||||
EAPI void e_border_tmp_input_hidden_push(E_Border *bd);
|
||||
EAPI void e_border_tmp_input_hidden_pop(E_Border *bd);
|
||||
|
||||
EAPI void e_border_activate(E_Border *bd, Eina_Bool just_do_it);
|
||||
|
||||
EAPI void e_border_focus_lock_set(Eina_Bool lock);
|
||||
EAPI Eina_Bool e_border_focus_lock_get(void);
|
||||
|
||||
EAPI void e_border_input_object_set(E_Border *bd, Evas_Object *input_obj);
|
||||
|
||||
extern EAPI int E_EVENT_BORDER_RESIZE;
|
||||
extern EAPI int E_EVENT_BORDER_MOVE;
|
||||
extern EAPI int E_EVENT_BORDER_ADD;
|
||||
extern EAPI int E_EVENT_BORDER_SHOW;
|
||||
extern EAPI int E_EVENT_BORDER_HIDE;
|
||||
extern EAPI int E_EVENT_BORDER_REMOVE;
|
||||
extern EAPI int E_EVENT_BORDER_ICONIFY;
|
||||
extern EAPI int E_EVENT_BORDER_UNICONIFY;
|
||||
extern EAPI int E_EVENT_BORDER_STICK;
|
||||
extern EAPI int E_EVENT_BORDER_UNSTICK;
|
||||
extern EAPI int E_EVENT_BORDER_ZONE_SET;
|
||||
extern EAPI int E_EVENT_BORDER_DESK_SET;
|
||||
extern EAPI int E_EVENT_BORDER_STACK;
|
||||
extern EAPI int E_EVENT_BORDER_ICON_CHANGE;
|
||||
extern EAPI int E_EVENT_BORDER_TITLE_CHANGE;
|
||||
extern EAPI int E_EVENT_BORDER_URGENT_CHANGE;
|
||||
extern EAPI int E_EVENT_BORDER_FOCUS_IN;
|
||||
extern EAPI int E_EVENT_BORDER_FOCUS_OUT;
|
||||
extern EAPI int E_EVENT_BORDER_PROPERTY;
|
||||
extern EAPI int E_EVENT_BORDER_FULLSCREEN;
|
||||
extern EAPI int E_EVENT_BORDER_UNFULLSCREEN;
|
||||
|
||||
static inline unsigned int
|
||||
e_border_inset_width_get(const E_Border *bd)
|
||||
{
|
||||
return bd->client_inset.l + bd->client_inset.r;
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
e_border_inset_height_get(const E_Border *bd)
|
||||
{
|
||||
return bd->client_inset.t + bd->client_inset.b;
|
||||
}
|
||||
|
||||
/* e_config not available everywhere e_border.h is used...
|
||||
static inline Eina_Bool
|
||||
e_border_focus_policy_click(const E_Border *bd)
|
||||
{
|
||||
return ((bd->focus_policy_override == E_FOCUS_CLICK) || (e_config->focus_policy == E_FOCUS_CLICK));
|
||||
}
|
||||
*/
|
||||
#define e_border_focus_policy_click(bd) \
|
||||
((bd->focus_policy_override == E_FOCUS_CLICK) || (e_config->focus_policy == E_FOCUS_CLICK))
|
||||
|
||||
/* macro for finding misuse of changed flag */
|
||||
#if 0
|
||||
# define BD_CHANGED(BD) \
|
||||
do { \
|
||||
if (e_object_is_del(E_OBJECT(BD))) \
|
||||
EINA_LOG_CRIT("CHANGED SET ON DELETED BORDER!"); \
|
||||
BD->changed = 1; \
|
||||
INF("%s:%d - BD CHANGED: %p", __FILE__, __LINE__, BD); \
|
||||
} while (0)
|
||||
#else
|
||||
# define BD_CHANGED(BD) BD->changed = 1
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -143,19 +143,44 @@ e_canvas_rehint(void)
|
|||
}
|
||||
|
||||
EAPI Ecore_Evas *
|
||||
e_canvas_new(Ecore_X_Window win, int x, int y, int w, int h,
|
||||
int direct_resize, int override, Ecore_X_Window *win_ret)
|
||||
e_canvas_new(Ecore_Window win, int x, int y, int w, int h,
|
||||
int direct_resize, int override, Ecore_Window *win_ret)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
Ecore_Evas *ee = NULL;
|
||||
|
||||
ee = ecore_evas_software_x11_new(NULL, win, x, y, w, h);
|
||||
#ifdef WAYLAND_ONLY
|
||||
ee = ecore_evas_wayland_shm_new(NULL, win, x, y, w, h, 0);
|
||||
if (ee)
|
||||
{
|
||||
ecore_evas_override_set(ee, override);
|
||||
if (direct_resize) ecore_evas_software_x11_direct_resize_set(ee, 1);
|
||||
if (win_ret) *win_ret = ecore_evas_software_x11_window_get(ee);
|
||||
if (win_ret) *win_ret = ecore_evas_wayland_window_get(ee);
|
||||
}
|
||||
else
|
||||
#else
|
||||
switch (e_comp_get(NULL)->comp_type)
|
||||
{
|
||||
case E_PIXMAP_TYPE_X:
|
||||
ee = ecore_evas_software_x11_new(NULL, win, x, y, w, h);
|
||||
if (ee)
|
||||
{
|
||||
ecore_evas_override_set(ee, override);
|
||||
if (direct_resize) ecore_evas_software_x11_direct_resize_set(ee, 1);
|
||||
if (win_ret) *win_ret = ecore_evas_software_x11_window_get(ee);
|
||||
}
|
||||
break;
|
||||
# ifdef HAVE_WAYLAND_CLIENTS
|
||||
case E_PIXMAP_TYPE_WL:
|
||||
ee = ecore_evas_wayland_shm_new(NULL, win, x, y, w, h, 0);
|
||||
if (ee)
|
||||
{
|
||||
ecore_evas_override_set(ee, override);
|
||||
if (win_ret) *win_ret = (Ecore_Window)ecore_evas_wayland_window_get(ee);
|
||||
}
|
||||
break;
|
||||
# endif
|
||||
default: break;
|
||||
}
|
||||
#endif
|
||||
if (!ee)
|
||||
EINA_LOG_ERR("Impossible to build any Ecore_Evas window !!");
|
||||
return ee;
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ EAPI void e_canvas_cache_flush(void);
|
|||
EAPI void e_canvas_cache_reload(void);
|
||||
EAPI void e_canvas_idle_flush(void);
|
||||
EAPI void e_canvas_rehint(void);
|
||||
EAPI Ecore_Evas *e_canvas_new(Ecore_X_Window win, int x, int y, int w, int h, int direct_resize, int override, Ecore_X_Window *win_ret);
|
||||
EAPI Ecore_Evas *e_canvas_new(Ecore_Window win, int x, int y, int w, int h, int direct_resize, int override, Ecore_Window *win_ret);
|
||||
|
||||
EAPI const Eina_List *e_canvas_list(void);
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,800 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
typedef enum _E_Screen_Limits
|
||||
{
|
||||
E_SCREEN_LIMITS_PARTLY = 0,
|
||||
E_SCREEN_LIMITS_COMPLETELY = 1,
|
||||
E_SCREEN_LIMITS_WITHIN = 2
|
||||
} E_Screen_Limits;
|
||||
|
||||
typedef enum _E_Icon_Preference
|
||||
{
|
||||
E_ICON_PREF_E_DEFAULT,
|
||||
E_ICON_PREF_NETWM,
|
||||
E_ICON_PREF_USER
|
||||
} E_Icon_Preference;
|
||||
|
||||
typedef enum _E_Direction
|
||||
{
|
||||
E_DIRECTION_UP,
|
||||
E_DIRECTION_DOWN,
|
||||
E_DIRECTION_LEFT,
|
||||
E_DIRECTION_RIGHT
|
||||
} E_Direction;
|
||||
|
||||
typedef enum _E_Transition
|
||||
{
|
||||
E_TRANSITION_LINEAR = 0,
|
||||
E_TRANSITION_SINUSOIDAL = 1,
|
||||
E_TRANSITION_ACCELERATE = 2,
|
||||
E_TRANSITION_DECELERATE = 3,
|
||||
E_TRANSITION_ACCELERATE_LOTS = 4,
|
||||
E_TRANSITION_DECELERATE_LOTS = 5,
|
||||
E_TRANSITION_SINUSOIDAL_LOTS = 6,
|
||||
E_TRANSITION_BOUNCE = 7,
|
||||
E_TRANSITION_BOUNCE_LOTS = 8
|
||||
} E_Transition;
|
||||
|
||||
typedef enum _E_Stacking
|
||||
{
|
||||
E_STACKING_NONE,
|
||||
E_STACKING_ABOVE,
|
||||
E_STACKING_BELOW
|
||||
} E_Stacking;
|
||||
|
||||
typedef enum _E_Focus_Policy
|
||||
{
|
||||
E_FOCUS_CLICK,
|
||||
E_FOCUS_MOUSE,
|
||||
E_FOCUS_SLOPPY,
|
||||
E_FOCUS_LAST,
|
||||
} E_Focus_Policy;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
/* same as ecore-x types */
|
||||
E_WINDOW_TYPE_UNKNOWN = 0,
|
||||
E_WINDOW_TYPE_DESKTOP,
|
||||
E_WINDOW_TYPE_DOCK,
|
||||
E_WINDOW_TYPE_TOOLBAR,
|
||||
E_WINDOW_TYPE_MENU,
|
||||
E_WINDOW_TYPE_UTILITY,
|
||||
E_WINDOW_TYPE_SPLASH,
|
||||
E_WINDOW_TYPE_DIALOG,
|
||||
E_WINDOW_TYPE_NORMAL,
|
||||
E_WINDOW_TYPE_DROPDOWN_MENU,
|
||||
E_WINDOW_TYPE_POPUP_MENU,
|
||||
E_WINDOW_TYPE_TOOLTIP,
|
||||
E_WINDOW_TYPE_NOTIFICATION,
|
||||
E_WINDOW_TYPE_COMBO,
|
||||
E_WINDOW_TYPE_DND
|
||||
} E_Window_Type;
|
||||
|
||||
typedef enum _E_Urgency_Policy
|
||||
{
|
||||
E_ACTIVEHINT_POLICY_IGNORE,
|
||||
E_ACTIVEHINT_POLICY_ANIMATE,
|
||||
E_ACTIVEHINT_POLICY_ACTIVATE
|
||||
} E_Urgency_Policy;
|
||||
|
||||
typedef enum _E_Focus_Setting
|
||||
{
|
||||
E_FOCUS_NONE,
|
||||
E_FOCUS_NEW_WINDOW,
|
||||
E_FOCUS_NEW_DIALOG,
|
||||
E_FOCUS_NEW_DIALOG_IF_OWNER_FOCUSED
|
||||
} E_Focus_Setting;
|
||||
|
||||
typedef enum _E_Maximize
|
||||
{
|
||||
E_MAXIMIZE_NONE = 0x00000000,
|
||||
E_MAXIMIZE_FULLSCREEN = 0x00000001,
|
||||
E_MAXIMIZE_SMART = 0x00000002,
|
||||
E_MAXIMIZE_EXPAND = 0x00000003,
|
||||
E_MAXIMIZE_FILL = 0x00000004,
|
||||
E_MAXIMIZE_TYPE = 0x0000000f,
|
||||
E_MAXIMIZE_VERTICAL = 0x00000010,
|
||||
E_MAXIMIZE_HORIZONTAL = 0x00000020,
|
||||
E_MAXIMIZE_BOTH = 0x00000030,
|
||||
E_MAXIMIZE_LEFT = 0x00000070,
|
||||
E_MAXIMIZE_RIGHT = 0x000000b0,
|
||||
E_MAXIMIZE_DIRECTION = 0x000000f0
|
||||
} E_Maximize;
|
||||
|
||||
typedef enum _E_Fullscreen
|
||||
{
|
||||
/* Resize window */
|
||||
E_FULLSCREEN_RESIZE,
|
||||
/* Change screen resoultion and resize window */
|
||||
E_FULLSCREEN_ZOOM
|
||||
} E_Fullscreen;
|
||||
|
||||
typedef enum _E_Window_Placement
|
||||
{
|
||||
E_WINDOW_PLACEMENT_SMART,
|
||||
E_WINDOW_PLACEMENT_ANTIGADGET,
|
||||
E_WINDOW_PLACEMENT_CURSOR,
|
||||
E_WINDOW_PLACEMENT_MANUAL
|
||||
} E_Window_Placement;
|
||||
|
||||
typedef enum E_Client_Property
|
||||
{
|
||||
E_CLIENT_PROPERTY_NONE = 0,
|
||||
E_CLIENT_PROPERTY_SIZE = (1 << 0),
|
||||
E_CLIENT_PROPERTY_POS = (1 << 1),
|
||||
E_CLIENT_PROPERTY_TITLE = (1 << 2),
|
||||
E_CLIENT_PROPERTY_ICON = (1 << 3),
|
||||
E_CLIENT_PROPERTY_URGENCY = (1 << 4),
|
||||
E_CLIENT_PROPERTY_GRAVITY = (1 << 5),
|
||||
E_CLIENT_PROPERTY_NETWM_STATE = (1 << 6),
|
||||
} E_Client_Property;
|
||||
|
||||
typedef struct E_Client E_Client;
|
||||
|
||||
typedef struct E_Event_Client E_Event_Client;
|
||||
typedef struct _E_Event_Client_Property E_Event_Client_Property;
|
||||
typedef struct _E_Client_Pending_Resize E_Client_Pending_Resize;
|
||||
typedef struct E_Event_Client_Zone_Set E_Event_Client_Zone_Set;
|
||||
typedef struct E_Event_Client_Desk_Set E_Event_Client_Desk_Set;
|
||||
typedef struct _E_Client_Hook E_Client_Hook;
|
||||
|
||||
typedef enum _E_Client_Hook_Point
|
||||
{
|
||||
E_CLIENT_HOOK_EVAL_PRE_FETCH,
|
||||
E_CLIENT_HOOK_EVAL_FETCH,
|
||||
E_CLIENT_HOOK_EVAL_PRE_POST_FETCH,
|
||||
E_CLIENT_HOOK_EVAL_POST_FETCH,
|
||||
E_CLIENT_HOOK_EVAL_PRE_FRAME_ASSIGN,
|
||||
E_CLIENT_HOOK_EVAL_POST_FRAME_ASSIGN,
|
||||
E_CLIENT_HOOK_EVAL_PRE_NEW_CLIENT,
|
||||
E_CLIENT_HOOK_EVAL_POST_NEW_CLIENT,
|
||||
E_CLIENT_HOOK_EVAL_END,
|
||||
E_CLIENT_HOOK_FOCUS_SET,
|
||||
E_CLIENT_HOOK_FOCUS_UNSET,
|
||||
E_CLIENT_HOOK_NEW_CLIENT,
|
||||
E_CLIENT_HOOK_DESK_SET,
|
||||
E_CLIENT_HOOK_MOVE_BEGIN,
|
||||
E_CLIENT_HOOK_MOVE_UPDATE,
|
||||
E_CLIENT_HOOK_MOVE_END,
|
||||
E_CLIENT_HOOK_RESIZE_BEGIN,
|
||||
E_CLIENT_HOOK_RESIZE_UPDATE,
|
||||
E_CLIENT_HOOK_RESIZE_END,
|
||||
E_CLIENT_HOOK_DEL,
|
||||
E_CLIENT_HOOK_UNREDIRECT,
|
||||
E_CLIENT_HOOK_REDIRECT,
|
||||
} E_Client_Hook_Point;
|
||||
|
||||
typedef void (*E_Client_Move_Intercept_Cb)(E_Client *, int x, int y);
|
||||
typedef void (*E_Client_Hook_Cb)(void *data, E_Client *ec);
|
||||
#else
|
||||
|
||||
#define E_CLIENT_TYPE (int)0xE0b01002
|
||||
|
||||
struct E_Event_Client
|
||||
{
|
||||
E_Client *ec;
|
||||
};
|
||||
|
||||
struct E_Event_Client_Desk_Set
|
||||
{
|
||||
E_Client *ec;
|
||||
E_Desk *desk;
|
||||
};
|
||||
|
||||
struct E_Event_Client_Zone_Set
|
||||
{
|
||||
E_Client *ec;
|
||||
E_Zone *zone;
|
||||
};
|
||||
|
||||
struct _E_Event_Client_Property
|
||||
{
|
||||
E_Client *ec;
|
||||
unsigned int property;
|
||||
};
|
||||
|
||||
struct _E_Client_Hook
|
||||
{
|
||||
E_Client_Hook_Point hookpoint;
|
||||
E_Client_Hook_Cb func;
|
||||
void *data;
|
||||
unsigned char delete_me : 1;
|
||||
};
|
||||
|
||||
struct _E_Client_Pending_Resize
|
||||
{
|
||||
int w, h;
|
||||
unsigned int serial;
|
||||
};
|
||||
|
||||
struct E_Client
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
EINA_INLIST;
|
||||
|
||||
E_Pixmap *pixmap;
|
||||
E_Comp *comp;
|
||||
int depth;
|
||||
int x, y, w, h; //frame+client geom
|
||||
Eina_Rectangle client; //client geom
|
||||
Evas_Object *frame; //comp object
|
||||
E_Zone *zone;
|
||||
E_Desk *desk;
|
||||
|
||||
Ecore_Poller *ping_poller;
|
||||
Ecore_Timer *kill_timer;
|
||||
|
||||
E_Client *modal;
|
||||
|
||||
E_Client *leader;
|
||||
Eina_List *group;
|
||||
|
||||
E_Client *parent;
|
||||
Eina_List *transients;
|
||||
|
||||
E_Layer layer;
|
||||
|
||||
Eina_Rectangle *shape_rects;
|
||||
unsigned int shape_rects_num;
|
||||
|
||||
Eina_Rectangle *shape_input_rects;
|
||||
unsigned int shape_input_rects_num;
|
||||
|
||||
Eina_Stringshare *internal_icon;
|
||||
Eina_Stringshare *internal_icon_key;
|
||||
|
||||
E_Direction shade_dir;
|
||||
|
||||
E_Comp_Client_Data *comp_data; //private for the compositor engine (X, Wayland) ONLY
|
||||
|
||||
Evas_Object *input_object; //for running wayland clients in X
|
||||
|
||||
E_Action *cur_mouse_action;
|
||||
|
||||
int border_size; //size of client's border
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
int mx, my;
|
||||
} current, last_down[3], last_up[3];
|
||||
} mouse;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
int mx, my;
|
||||
int button;
|
||||
} down;
|
||||
} moveinfo;
|
||||
|
||||
unsigned char ignore_first_unmap;
|
||||
E_Pointer_Mode resize_mode;
|
||||
|
||||
struct
|
||||
{
|
||||
Eina_Bool mapping_change : 1;
|
||||
Eina_Bool iconic_shading : 1;
|
||||
} hacks;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char changed : 1;
|
||||
unsigned char user_selected : 1;
|
||||
Eina_Stringshare *name;
|
||||
} border;
|
||||
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
E_Layer layer;
|
||||
int zone;
|
||||
E_Maximize maximized;
|
||||
} saved;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char valid : 1;
|
||||
int x, y, w, h;
|
||||
struct
|
||||
{
|
||||
int x, y, w, h;
|
||||
} saved;
|
||||
} pre_res_change;
|
||||
|
||||
unsigned char shaped : 1;
|
||||
unsigned char argb : 1;
|
||||
|
||||
/* ICCCM */
|
||||
struct
|
||||
{
|
||||
Eina_Stringshare *title;
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare *class;
|
||||
Eina_Stringshare *icon_name;
|
||||
Eina_Stringshare *machine;
|
||||
int min_w, min_h;
|
||||
int max_w, max_h;
|
||||
int base_w, base_h;
|
||||
int step_w, step_h;
|
||||
int start_x, start_y;
|
||||
double min_aspect, max_aspect;
|
||||
Ecore_Window icon_window;
|
||||
Ecore_Window window_group;
|
||||
Ecore_Window transient_for;
|
||||
Ecore_Window client_leader;
|
||||
#ifdef E_COMP_X_H
|
||||
Ecore_X_Window_State_Hint initial_state;
|
||||
Ecore_X_Window_State_Hint state;
|
||||
Ecore_X_Pixmap icon_pixmap;
|
||||
Ecore_X_Pixmap icon_mask;
|
||||
Ecore_X_Gravity gravity;
|
||||
#endif
|
||||
Eina_Stringshare *window_role;
|
||||
unsigned char take_focus : 1;
|
||||
unsigned char accepts_focus : 1;
|
||||
unsigned char urgent : 1;
|
||||
unsigned char delete_request : 1;
|
||||
unsigned char request_pos : 1;
|
||||
struct
|
||||
{
|
||||
int argc;
|
||||
char **argv;
|
||||
} command;
|
||||
struct
|
||||
{
|
||||
unsigned char title : 1;
|
||||
unsigned char name_class : 1;
|
||||
unsigned char icon_name : 1;
|
||||
unsigned char machine : 1;
|
||||
unsigned char hints : 1;
|
||||
unsigned char size_pos_hints : 1;
|
||||
unsigned char protocol : 1;
|
||||
unsigned char transient_for : 1;
|
||||
unsigned char client_leader : 1;
|
||||
unsigned char window_role : 1;
|
||||
unsigned char state : 1;
|
||||
unsigned char command : 1;
|
||||
} fetch;
|
||||
} icccm;
|
||||
|
||||
/* MWM */
|
||||
struct
|
||||
{
|
||||
#ifdef E_COMP_X_H
|
||||
Ecore_X_MWM_Hint_Func func;
|
||||
Ecore_X_MWM_Hint_Decor decor;
|
||||
Ecore_X_MWM_Hint_Input input;
|
||||
#endif
|
||||
unsigned char exists : 1;
|
||||
unsigned char borderless : 1;
|
||||
struct
|
||||
{
|
||||
unsigned char hints : 1;
|
||||
} fetch;
|
||||
} mwm;
|
||||
|
||||
/* NetWM */
|
||||
struct
|
||||
{
|
||||
pid_t pid;
|
||||
unsigned int desktop;
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare *icon_name;
|
||||
#ifdef E_COMP_X_H
|
||||
Ecore_X_Icon *icons;
|
||||
#endif
|
||||
int num_icons;
|
||||
unsigned int user_time;
|
||||
unsigned char opacity;
|
||||
Eina_Bool opacity_changed : 1; // prevent fetching opacity next prop change
|
||||
struct
|
||||
{
|
||||
int left;
|
||||
int right;
|
||||
int top;
|
||||
int bottom;
|
||||
int left_start_y;
|
||||
int left_end_y;
|
||||
int right_start_y;
|
||||
int right_end_y;
|
||||
int top_start_x;
|
||||
int top_end_x;
|
||||
int bottom_start_x;
|
||||
int bottom_end_x;
|
||||
} strut;
|
||||
unsigned char ping : 1;
|
||||
struct
|
||||
{
|
||||
unsigned char request : 1;
|
||||
unsigned char alarm : 1;
|
||||
unsigned int wait;
|
||||
unsigned int serial;
|
||||
double send_time;
|
||||
} sync;
|
||||
|
||||
/* NetWM Window state */
|
||||
struct
|
||||
{
|
||||
unsigned char modal : 1;
|
||||
unsigned char sticky : 1;
|
||||
unsigned char maximized_v : 1;
|
||||
unsigned char maximized_h : 1;
|
||||
unsigned char shaded : 1;
|
||||
unsigned char skip_taskbar : 1;
|
||||
unsigned char skip_pager : 1;
|
||||
unsigned char hidden : 1;
|
||||
unsigned char fullscreen : 1;
|
||||
E_Stacking stacking;
|
||||
} state;
|
||||
|
||||
/* NetWM Window allowed actions */
|
||||
struct
|
||||
{
|
||||
unsigned char move : 1;
|
||||
unsigned char resize : 1;
|
||||
unsigned char minimize : 1;
|
||||
unsigned char shade : 1;
|
||||
unsigned char stick : 1;
|
||||
unsigned char maximized_h : 1;
|
||||
unsigned char maximized_v : 1;
|
||||
unsigned char fullscreen : 1;
|
||||
unsigned char change_desktop : 1;
|
||||
unsigned char close : 1;
|
||||
} action;
|
||||
E_Window_Type type;
|
||||
E_Window_Type *extra_types;
|
||||
int extra_types_num;
|
||||
int startup_id;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char name : 1;
|
||||
unsigned char icon_name : 1;
|
||||
unsigned char icon : 1;
|
||||
unsigned char user_time : 1;
|
||||
unsigned char strut : 1;
|
||||
unsigned char type : 1;
|
||||
unsigned char state : 1;
|
||||
unsigned char opacity : 1;
|
||||
/* No, fetch on new_client, shouldn't be changed after map.
|
||||
unsigned char pid : 1;
|
||||
*/
|
||||
/* No, ignore this
|
||||
unsigned char desktop : 1;
|
||||
*/
|
||||
} fetch;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
} update;
|
||||
} netwm;
|
||||
|
||||
/* Extra e stuff */
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
int x, y;
|
||||
|
||||
unsigned char updated : 1;
|
||||
} video_position;
|
||||
Ecore_Window video_parent;
|
||||
E_Client *video_parent_client;
|
||||
Eina_List *video_child;
|
||||
struct
|
||||
{
|
||||
Eina_Stringshare *name;
|
||||
Eina_Stringshare **available_list;
|
||||
Eina_Stringshare *set;
|
||||
int num;
|
||||
unsigned char wait_for_done : 1;
|
||||
unsigned char use : 1;
|
||||
} profile;
|
||||
unsigned char centered : 1;
|
||||
unsigned char video : 1;
|
||||
} state;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
unsigned char video_parent : 1;
|
||||
unsigned char video_position : 1;
|
||||
unsigned char profile : 1;
|
||||
} fetch;
|
||||
} e;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char soft_menu : 1;
|
||||
unsigned char soft_menus : 1;
|
||||
} fetch;
|
||||
|
||||
unsigned char soft_menu : 1;
|
||||
unsigned char soft_menus : 1;
|
||||
} qtopia;
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
unsigned char vkbd : 1;
|
||||
} fetch;
|
||||
#ifdef E_COMP_X_H
|
||||
Ecore_X_Virtual_Keyboard_State state;
|
||||
#endif
|
||||
unsigned char have_property : 1;
|
||||
unsigned char vkbd : 1;
|
||||
} vkbd;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char visible : 1;
|
||||
unsigned char pos : 1;
|
||||
unsigned char size : 1;
|
||||
unsigned char stack : 1;
|
||||
unsigned char prop : 1;
|
||||
unsigned char border : 1;
|
||||
unsigned char reset_gravity : 1;
|
||||
unsigned char shading : 1;
|
||||
unsigned char shaded : 1;
|
||||
unsigned char shape : 1;
|
||||
unsigned char shape_input : 1;
|
||||
unsigned char icon : 1;
|
||||
Eina_Bool internal_props : 1;
|
||||
Eina_Bool internal_state : 1;
|
||||
Eina_Bool need_maximize : 1;
|
||||
Eina_Bool need_unmaximize : 1;
|
||||
} changes;
|
||||
|
||||
unsigned int visible : 1;
|
||||
Eina_Bool hidden : 1; // set when window has been hidden by api and should not be shown
|
||||
unsigned int await_hide_event;
|
||||
unsigned int moving : 1;
|
||||
unsigned int focused : 1;
|
||||
unsigned int new_client : 1;
|
||||
unsigned int re_manage : 1;
|
||||
unsigned int placed : 1;
|
||||
unsigned int shading : 1;
|
||||
unsigned int shaded : 1;
|
||||
unsigned int iconic : 1;
|
||||
unsigned int deskshow : 1;
|
||||
unsigned int sticky : 1;
|
||||
unsigned int shaped_input : 1;
|
||||
unsigned int need_shape_merge : 1;
|
||||
unsigned int need_shape_export : 1;
|
||||
unsigned int fullscreen : 1;
|
||||
unsigned int need_fullscreen : 1;
|
||||
unsigned int already_unparented : 1;
|
||||
unsigned int need_reparent : 1;
|
||||
unsigned int button_grabbed : 1;
|
||||
unsigned int delete_requested : 1;
|
||||
unsigned int ping_ok : 1;
|
||||
unsigned int hung : 1;
|
||||
unsigned int take_focus : 1;
|
||||
unsigned int want_focus : 1;
|
||||
unsigned int user_skip_winlist : 1;
|
||||
E_Maximize maximized;
|
||||
E_Fullscreen fullscreen_policy;
|
||||
unsigned int borderless : 1;
|
||||
unsigned char offer_resistance : 1;
|
||||
Eina_Stringshare *bordername;
|
||||
|
||||
unsigned int lock_user_location : 1; /*DONE*/
|
||||
unsigned int lock_client_location : 1; /*DONE*/
|
||||
unsigned int lock_user_size : 1; /*DONE*/
|
||||
unsigned int lock_client_size : 1; /*DONE*/
|
||||
unsigned int lock_user_stacking : 1; /*DONE*/
|
||||
unsigned int lock_client_stacking : 1; /*DONE*/
|
||||
unsigned int lock_user_iconify : 1; /*DONE*/
|
||||
unsigned int lock_client_iconify : 1; /*DONE*/
|
||||
unsigned int lock_user_desk : 1;
|
||||
unsigned int lock_client_desk : 1;
|
||||
unsigned int lock_user_sticky : 1; /*DONE*/
|
||||
unsigned int lock_client_sticky : 1; /*DONE*/
|
||||
unsigned int lock_user_shade : 1; /*DONE*/
|
||||
unsigned int lock_client_shade : 1; /*DONE*/
|
||||
unsigned int lock_user_maximize : 1; /*DONE*/
|
||||
unsigned int lock_client_maximize : 1; /*DONE*/
|
||||
unsigned int lock_user_fullscreen : 1; /*DONE*/
|
||||
unsigned int lock_client_fullscreen : 1; /*DONE*/
|
||||
unsigned int lock_border : 1; /*DONE*/
|
||||
unsigned int lock_close : 1; /*DONE*/
|
||||
unsigned int lock_focus_in : 1; /*DONE*/
|
||||
unsigned int lock_focus_out : 1; /*DONE*/
|
||||
unsigned int lock_life : 1; /*DONE*/
|
||||
|
||||
unsigned int stolen : 1;
|
||||
|
||||
unsigned int internal : 1;
|
||||
unsigned int internal_no_remember : 1;
|
||||
unsigned int internal_no_reopen : 1;
|
||||
Eina_Bool theme_shadow : 1;
|
||||
|
||||
Ecore_Evas *internal_ecore_evas;
|
||||
|
||||
double ping;
|
||||
|
||||
unsigned char changed : 1;
|
||||
|
||||
unsigned char icon_preference;
|
||||
|
||||
struct
|
||||
{
|
||||
int x, y;
|
||||
int modified;
|
||||
} shelf_fix;
|
||||
|
||||
Eina_List *stick_desks;
|
||||
E_Menu *border_menu;
|
||||
E_Config_Dialog *border_locks_dialog;
|
||||
E_Config_Dialog *border_remember_dialog;
|
||||
E_Config_Dialog *border_border_dialog;
|
||||
E_Dialog *border_prop_dialog;
|
||||
Eina_List *pending_resize;
|
||||
|
||||
struct
|
||||
{
|
||||
unsigned char start : 1;
|
||||
int x, y;
|
||||
} drag;
|
||||
|
||||
Ecore_Timer *raise_timer;
|
||||
E_Client_Move_Intercept_Cb move_intercept_cb;
|
||||
E_Remember *remember;
|
||||
|
||||
Efreet_Desktop *desktop;
|
||||
E_Exec_Instance *exe_inst;
|
||||
|
||||
unsigned char comp_hidden : 1;
|
||||
|
||||
unsigned char post_move : 1;
|
||||
unsigned char post_resize : 1;
|
||||
unsigned char post_show : 1;
|
||||
unsigned char during_lost : 1;
|
||||
|
||||
Ecore_Idle_Enterer *post_job;
|
||||
|
||||
E_Focus_Policy focus_policy_override;
|
||||
|
||||
Eina_Bool override : 1;
|
||||
Eina_Bool input_only : 1;
|
||||
Eina_Bool dialog : 1;
|
||||
Eina_Bool tooltip : 1;
|
||||
Eina_Bool redirected : 1;
|
||||
Eina_Bool shape_changed : 1;
|
||||
Eina_Bool layer_block : 1; // client is doing crazy stuff and should not be relayered in protocol
|
||||
Eina_Bool ignored : 1; // client is comp-ignored
|
||||
Eina_Bool no_shape_cut : 1; // client shape should not be cut
|
||||
};
|
||||
|
||||
#define e_client_focus_policy_click(ec) \
|
||||
((ec->focus_policy_override == E_FOCUS_CLICK) || (e_config->focus_policy == E_FOCUS_CLICK))
|
||||
|
||||
/* macro for finding misuse of changed flag */
|
||||
#if 0
|
||||
# define EC_CHANGED(EC) \
|
||||
do { \
|
||||
if (e_object_is_del(E_OBJECT(EC))) \
|
||||
EINA_LOG_CRIT("CHANGED SET ON DELETED CLIENT!"); \
|
||||
EC->changed = 1; \
|
||||
INF("%s:%d - EC CHANGED: %p", __FILE__, __LINE__, EC); \
|
||||
} while (0)
|
||||
#else
|
||||
# define EC_CHANGED(EC) EC->changed = 1
|
||||
#endif
|
||||
|
||||
#define E_CLIENT_FOREACH(COMP, EC) \
|
||||
for (EC = e_client_bottom_get(COMP); EC; EC = e_client_above_get(EC))
|
||||
|
||||
#define E_CLIENT_REVERSE_FOREACH(COMP, EC) \
|
||||
for (EC = e_client_top_get(COMP); EC; EC = e_client_below_get(EC))
|
||||
|
||||
|
||||
EAPI extern int E_EVENT_CLIENT_ADD;
|
||||
EAPI extern int E_EVENT_CLIENT_REMOVE;
|
||||
EAPI extern int E_EVENT_CLIENT_ZONE_SET;
|
||||
EAPI extern int E_EVENT_CLIENT_DESK_SET;
|
||||
EAPI extern int E_EVENT_CLIENT_RESIZE;
|
||||
EAPI extern int E_EVENT_CLIENT_MOVE;
|
||||
EAPI extern int E_EVENT_CLIENT_SHOW;
|
||||
EAPI extern int E_EVENT_CLIENT_HIDE;
|
||||
EAPI extern int E_EVENT_CLIENT_ICONIFY;
|
||||
EAPI extern int E_EVENT_CLIENT_UNICONIFY;
|
||||
EAPI extern int E_EVENT_CLIENT_STICK;
|
||||
EAPI extern int E_EVENT_CLIENT_UNSTICK;
|
||||
EAPI extern int E_EVENT_CLIENT_STACK;
|
||||
EAPI extern int E_EVENT_CLIENT_FOCUS_IN;
|
||||
EAPI extern int E_EVENT_CLIENT_FOCUS_OUT;
|
||||
EAPI extern int E_EVENT_CLIENT_PROPERTY;
|
||||
EAPI extern int E_EVENT_CLIENT_FULLSCREEN;
|
||||
EAPI extern int E_EVENT_CLIENT_UNFULLSCREEN;
|
||||
|
||||
|
||||
EINTERN void e_client_idler_before(void);
|
||||
EINTERN Eina_Bool e_client_init(void);
|
||||
EINTERN void e_client_shutdown(void);
|
||||
EAPI E_Client *e_client_new(E_Comp *c, E_Pixmap *cp, int first_map, int internal);
|
||||
EAPI void e_client_desk_set(E_Client *ec, E_Desk *desk);
|
||||
EAPI Eina_Bool e_client_comp_grabbed_get(void);
|
||||
EAPI E_Client *e_client_action_get(void);
|
||||
EAPI E_Client *e_client_warping_get(void);
|
||||
EAPI Eina_List *e_clients_immortal_list(const E_Comp *c);
|
||||
EAPI void e_client_mouse_in(E_Client *ec, int x, int y);
|
||||
EAPI void e_client_mouse_out(E_Client *ec, int x, int y);
|
||||
EAPI void e_client_mouse_wheel(E_Client *ec, Evas_Point *output, E_Binding_Event_Wheel *ev);
|
||||
EAPI void e_client_mouse_down(E_Client *ec, int button, Evas_Point *output, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_client_mouse_up(E_Client *ec, int button, Evas_Point *output, E_Binding_Event_Mouse_Button* ev);
|
||||
EAPI void e_client_mouse_move(E_Client *ec, Evas_Point *output);
|
||||
EAPI void e_client_res_change_geometry_save(E_Client *bd);
|
||||
EAPI void e_client_res_change_geometry_restore(E_Client *ec);
|
||||
EAPI void e_client_zone_set(E_Client *ec, E_Zone *zone);
|
||||
EAPI void e_client_geometry_get(E_Client *ec, int *x, int *y, int *w, int *h);
|
||||
EAPI E_Client *e_client_above_get(const E_Client *ec);
|
||||
EAPI E_Client *e_client_below_get(const E_Client *ec);
|
||||
EAPI E_Client *e_client_bottom_get(const E_Comp *c);
|
||||
EAPI E_Client *e_client_top_get(const E_Comp *c);
|
||||
EAPI unsigned int e_clients_count(E_Comp *c);
|
||||
EAPI void e_client_move_intercept_cb_set(E_Client *ec, E_Client_Move_Intercept_Cb cb);
|
||||
EAPI E_Client_Hook *e_client_hook_add(E_Client_Hook_Point hookpoint, E_Client_Hook_Cb func, const void *data);
|
||||
EAPI void e_client_hook_del(E_Client_Hook *ch);
|
||||
EAPI void e_client_focus_latest_set(E_Client *ec);
|
||||
EAPI void e_client_raise_latest_set(E_Client *ec);
|
||||
EAPI Eina_Bool e_client_focus_track_enabled(void);
|
||||
EAPI void e_client_focus_track_freeze(void);
|
||||
EAPI void e_client_focus_track_thaw(void);
|
||||
EAPI void e_client_focus_set_with_pointer(E_Client *ec);
|
||||
EAPI void e_client_activate(E_Client *ec, Eina_Bool just_do_it);
|
||||
EAPI E_Client *e_client_focused_get(void);
|
||||
EAPI Eina_List *e_client_focus_stack_get(void);
|
||||
EAPI Eina_List *e_client_raise_stack_get(void);
|
||||
EAPI Eina_List *e_client_lost_windows_get(E_Zone *zone);
|
||||
EAPI void e_client_shade(E_Client *ec, E_Direction dir);
|
||||
EAPI void e_client_unshade(E_Client *ec, E_Direction dir);
|
||||
EAPI void e_client_maximize(E_Client *ec, E_Maximize max);
|
||||
EAPI void e_client_unmaximize(E_Client *ec, E_Maximize max);
|
||||
EAPI void e_client_fullscreen(E_Client *ec, E_Fullscreen policy);
|
||||
EAPI void e_client_unfullscreen(E_Client *ec);
|
||||
EAPI void e_client_iconify(E_Client *ec);
|
||||
EAPI void e_client_uniconify(E_Client *ec);
|
||||
EAPI void e_client_stick(E_Client *ec);
|
||||
EAPI void e_client_unstick(E_Client *ec);
|
||||
EAPI void e_client_pinned_set(E_Client *ec, Eina_Bool set);
|
||||
EAPI void e_client_comp_hidden_set(E_Client *ec, Eina_Bool hidden);
|
||||
EAPI void e_client_act_move_keyboard(E_Client *ec);
|
||||
EAPI void e_client_act_resize_keyboard(E_Client *ec);
|
||||
EAPI void e_client_act_move_begin(E_Client *ec, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_client_act_move_end(E_Client *ec, E_Binding_Event_Mouse_Button *ev EINA_UNUSED);
|
||||
EAPI void e_client_act_resize_begin(E_Client *ec, E_Binding_Event_Mouse_Button *ev);
|
||||
EAPI void e_client_act_resize_end(E_Client *ec, E_Binding_Event_Mouse_Button *ev EINA_UNUSED);
|
||||
EAPI void e_client_act_menu_begin(E_Client *ec, E_Binding_Event_Mouse_Button *ev, int key);
|
||||
EAPI void e_client_act_close_begin(E_Client *ec);
|
||||
EAPI void e_client_act_kill_begin(E_Client *ec);
|
||||
EAPI Evas_Object *e_client_icon_add(E_Client *ec, Evas *evas);
|
||||
EAPI void e_client_ping(E_Client *cw);
|
||||
EAPI void e_client_move_cancel(void);
|
||||
EAPI void e_client_resize_cancel(void);
|
||||
EAPI Eina_Bool e_client_resize_begin(E_Client *ec);
|
||||
EAPI void e_client_frame_recalc(E_Client *ec);
|
||||
EAPI void e_client_signal_move_begin(E_Client *ec, const char *sig, const char *src EINA_UNUSED);
|
||||
EAPI void e_client_signal_move_end(E_Client *ec, const char *sig EINA_UNUSED, const char *src EINA_UNUSED);
|
||||
EAPI void e_client_signal_resize_begin(E_Client *ec, const char *dir, const char *sig, const char *src EINA_UNUSED);
|
||||
EAPI void e_client_signal_resize_end(E_Client *ec, const char *dir EINA_UNUSED, const char *sig EINA_UNUSED, const char *src EINA_UNUSED);
|
||||
EAPI void e_client_resize_limit(E_Client *ec, int *w, int *h);
|
||||
EAPI E_Client *e_client_under_pointer_get(E_Desk *desk, E_Client *exclude);
|
||||
EAPI int e_client_pointer_warp_to_center_now(E_Client *ec);
|
||||
EAPI int e_client_pointer_warp_to_center(E_Client *ec);
|
||||
EAPI void e_client_redirected_set(E_Client *ec, Eina_Bool set);
|
||||
EAPI Eina_Stringshare *e_client_name_get(const E_Client *ec);
|
||||
EAPI Eina_Bool e_client_util_is_stacking(const E_Client *ec);
|
||||
#include "e_client.x"
|
||||
#endif
|
|
@ -0,0 +1,98 @@
|
|||
|
||||
/**
|
||||
* Move window to coordinates that do not account client decorations yet.
|
||||
*
|
||||
* This call will consider given position does not account client
|
||||
* decoration, so these values (e_comp_object_frame) will be
|
||||
* accounted automatically. This is specially useful when it is a new
|
||||
* client and has not be evaluated yet, in this case
|
||||
* the frame will be zeroed and no information is known. It
|
||||
* will mark pending requests so client will be accounted on
|
||||
* evalutation phase.
|
||||
*
|
||||
* @parm x horizontal position to place window.
|
||||
* @parm y vertical position to place window.
|
||||
*
|
||||
* @see e_client_move()
|
||||
*/
|
||||
static inline void
|
||||
e_client_util_move_without_frame(E_Client *ec, int x, int y)
|
||||
{
|
||||
e_comp_object_frame_xy_adjust(ec->frame, x, y, &x, &y);
|
||||
evas_object_move(ec->frame, x, y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resize window to values that do not account client decorations yet.
|
||||
*
|
||||
* This call will consider given size does not account client
|
||||
* decoration, so these values (e_comp_object_frame) will be
|
||||
* accounted automatically. This is specially useful when it is a new
|
||||
* client and has not be evaluated yet, in this case
|
||||
* e_comp_object_frame will be zeroed and no information is known. It
|
||||
* will mark pending requests so client will be accounted on
|
||||
* evalutation phase.
|
||||
*
|
||||
* @parm w horizontal window size.
|
||||
* @parm h vertical window size.
|
||||
*
|
||||
* @see e_client_resize()
|
||||
*/
|
||||
static inline void
|
||||
e_client_util_resize_without_frame(E_Client *ec, int w, int h)
|
||||
{
|
||||
e_comp_object_frame_wh_adjust(ec->frame, w, h, &w, &h);
|
||||
evas_object_resize(ec->frame, w, h);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move and resize window to values that do not account client decorations yet.
|
||||
*
|
||||
* This call will consider given values already accounts client
|
||||
* decorations, so it will not be considered later. This will just
|
||||
* work properly with clients that have being evaluated and client
|
||||
* decorations are known (e_comp_object_frame).
|
||||
*
|
||||
* @parm x horizontal position to place window.
|
||||
* @parm y vertical position to place window.
|
||||
* @parm w horizontal window size.
|
||||
* @parm h vertical window size.
|
||||
*
|
||||
* @see e_client_move_resize()
|
||||
*/
|
||||
static inline void
|
||||
e_client_util_move_resize_without_frame(E_Client *ec, int x, int y, int w, int h)
|
||||
{
|
||||
e_client_util_move_without_frame(ec, x, y);
|
||||
e_client_util_resize_without_frame(ec, w, h);
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_client_util_ignored_get(const E_Client *ec)
|
||||
{
|
||||
return ec->override || ec->input_only || ec->ignored;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_client_util_desk_visible(const E_Client *ec, const E_Desk *desk)
|
||||
{
|
||||
return ec->sticky || (ec->desk == desk);
|
||||
}
|
||||
|
||||
static inline Ecore_Window
|
||||
e_client_util_pwin_get(const E_Client *ec)
|
||||
{
|
||||
return e_pixmap_parent_window_get(ec->pixmap);
|
||||
}
|
||||
|
||||
static inline Ecore_Window
|
||||
e_client_util_win_get(const E_Client *ec)
|
||||
{
|
||||
return e_pixmap_window_get(ec->pixmap);
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_client_resizing_get(const E_Client *ec)
|
||||
{
|
||||
return (ec->resize_mode != E_POINTER_RESIZE_NONE);
|
||||
}
|
|
@ -9,12 +9,12 @@ static void _e_color_dialog_cb_csel_change(void *data, Evas_Object *obj);
|
|||
/**
|
||||
* Create a color selector dialog.
|
||||
*
|
||||
* @param con container to display on
|
||||
* @param c compositor to display on
|
||||
* @param color color to initialize to (or NULL for black).
|
||||
* @param alpha_enabled if set, uses alpha and let user edit it.
|
||||
*/
|
||||
E_Color_Dialog *
|
||||
e_color_dialog_new(E_Container *con, const E_Color *color, Eina_Bool alpha_enabled)
|
||||
e_color_dialog_new(E_Comp *c, const E_Color *color, Eina_Bool alpha_enabled)
|
||||
{
|
||||
E_Color_Dialog *dia;
|
||||
Evas_Object *o;
|
||||
|
@ -22,7 +22,7 @@ e_color_dialog_new(E_Container *con, const E_Color *color, Eina_Bool alpha_enabl
|
|||
|
||||
dia = E_OBJECT_ALLOC(E_Color_Dialog, E_COLOR_DIALOG_TYPE, _e_color_dialog_free);
|
||||
if (!dia) return NULL;
|
||||
dia->dia = e_dialog_new(con, "E", "_color_dialog");
|
||||
dia->dia = e_dialog_new(c, "E", "_color_dialog");
|
||||
e_dialog_title_set(dia->dia, _("Color Selector"));
|
||||
|
||||
dia->color = calloc(1, sizeof(E_Color));
|
||||
|
|
|
@ -12,7 +12,6 @@ struct _E_Color_Dialog
|
|||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
E_Container *con;
|
||||
E_Dialog *dia;
|
||||
|
||||
E_Color *color, *initial;
|
||||
|
@ -25,7 +24,7 @@ struct _E_Color_Dialog
|
|||
void *change_data;
|
||||
};
|
||||
|
||||
EAPI E_Color_Dialog *e_color_dialog_new (E_Container *con, const E_Color *initial_color, Eina_Bool alpha_enabled);
|
||||
EAPI E_Color_Dialog *e_color_dialog_new (E_Comp *c, const E_Color *initial_color, Eina_Bool alpha_enabled);
|
||||
EAPI void e_color_dialog_show (E_Color_Dialog *dia);
|
||||
EAPI void e_color_dialog_title_set (E_Color_Dialog *dia, const char *title);
|
||||
|
||||
|
|
5244
src/bin/e_comp.c
5244
src/bin/e_comp.c
File diff suppressed because it is too large
Load Diff
346
src/bin/e_comp.h
346
src/bin/e_comp.h
|
@ -1,210 +1,130 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
typedef struct _E_Comp E_Comp;
|
||||
typedef struct _E_Comp_Win E_Comp_Win;
|
||||
typedef struct _E_Comp_Zone E_Comp_Zone;
|
||||
typedef struct E_Event_Comp E_Event_Comp;
|
||||
typedef struct _E_Comp_Data E_Comp_Data;
|
||||
typedef struct _E_Comp_Client_Data E_Comp_Client_Data;
|
||||
typedef struct _E_Comp_Demo_Style_Item E_Comp_Demo_Style_Item;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_COMP_CANVAS_LAYER_BOTTOM = -100,
|
||||
E_COMP_CANVAS_LAYER_BG = -1, // zone bg stuff
|
||||
E_COMP_CANVAS_LAYER_DESKTOP = 0, // desktop objects: fileman, gadgets, shelves
|
||||
E_COMP_CANVAS_LAYER_DESKTOP_TOP = 10, // raised desktop objects: gadgets, shelves
|
||||
E_COMP_CANVAS_LAYER_LAYOUT = 100, // should be nothing else on this layer
|
||||
E_COMP_CANVAS_LAYER_POPUP = 999, // popups
|
||||
E_COMP_CANVAS_LAYER_MENU = 5000, // menus
|
||||
E_COMP_CANVAS_LAYER_DESKLOCK = 9999, // desklock
|
||||
E_COMP_CANVAS_LAYER_MAX = 32767 // EVAS_LAYER_MAX
|
||||
} E_Comp_Canvas_Layer;
|
||||
#define E_COMP_TYPE (int) 0xE0b01003
|
||||
|
||||
#define E_LAYER_COUNT 19
|
||||
#define E_CLIENT_LAYER_COUNT 11
|
||||
|
||||
typedef enum _E_Layer
|
||||
{
|
||||
E_LAYER_DESKTOP = 0,
|
||||
E_LAYER_BELOW = 50,
|
||||
E_LAYER_NORMAL = 100,
|
||||
E_LAYER_ABOVE = 150,
|
||||
E_LAYER_EDGE = 200,
|
||||
E_LAYER_FULLSCREEN = 250,
|
||||
E_LAYER_EDGE_FULLSCREEN = 300,
|
||||
E_LAYER_POPUP = 300,
|
||||
E_LAYER_TOP = 350,
|
||||
E_LAYER_DRAG = 400,
|
||||
E_LAYER_PRIO = 450
|
||||
E_LAYER_BOTTOM = -100,
|
||||
E_LAYER_BG = -1, // zone bg stuff
|
||||
E_LAYER_DESKTOP = 0, // desktop objects: fileman, gadgets, shelves
|
||||
E_LAYER_DESKTOP_TOP = 10, // raised desktop objects: gadgets
|
||||
E_LAYER_CLIENT_DESKTOP = 100, //shelves
|
||||
E_LAYER_CLIENT_BELOW = 150,
|
||||
E_LAYER_CLIENT_NORMAL = 200,
|
||||
E_LAYER_CLIENT_ABOVE = 250,
|
||||
E_LAYER_CLIENT_EDGE = 300,
|
||||
E_LAYER_CLIENT_FULLSCREEN = 350,
|
||||
E_LAYER_CLIENT_EDGE_FULLSCREEN = 400,
|
||||
E_LAYER_CLIENT_POPUP = 450,
|
||||
E_LAYER_CLIENT_TOP = 500,
|
||||
E_LAYER_CLIENT_DRAG = 550,
|
||||
E_LAYER_CLIENT_PRIO = 600,
|
||||
E_LAYER_POPUP = 999, // popups
|
||||
E_LAYER_MENU = 5000, // menus
|
||||
E_LAYER_DESKLOCK = 9999, // desklock
|
||||
E_LAYER_MAX = 32767 // EVAS_LAYER_MAX
|
||||
} E_Layer;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_COMP_CANVAS_STACK_UNDER = -1,
|
||||
E_COMP_CANVAS_STACK_NONE = 0,
|
||||
E_COMP_CANVAS_STACK_ABOVE = 1
|
||||
} E_Comp_Canvas_Stack;
|
||||
|
||||
#else
|
||||
#ifndef E_MOD_COMP_H
|
||||
#define E_MOD_COMP_H
|
||||
|
||||
# include "e_comp_cfdata.h"
|
||||
# include "e_comp_render_update.h"
|
||||
|
||||
|
||||
struct _E_Comp
|
||||
{
|
||||
Ecore_X_Window win; // input overlay
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
Ecore_Window win; // input overlay
|
||||
Ecore_Evas *ee;
|
||||
Ecore_X_Window ee_win;
|
||||
Ecore_Window ee_win;
|
||||
Evas *evas;
|
||||
Evas_Object *layout;
|
||||
Evas_Object *bg_blank_object;
|
||||
Eina_List *zones;
|
||||
E_Manager *man;
|
||||
E_Pointer *pointer;
|
||||
Eina_List *clients;
|
||||
unsigned int new_clients;
|
||||
|
||||
E_Comp_Data *comp_data;
|
||||
E_Pixmap_Type comp_type; //for determining X/Wayland/
|
||||
|
||||
unsigned int num;
|
||||
Eina_Stringshare *name;
|
||||
struct {
|
||||
Ecore_Window win;
|
||||
Evas_Object *obj;
|
||||
//Eina_Inlist *objs; /* E_Comp_Object; NOT to be exposed; seems pointless? */
|
||||
Eina_Inlist *clients; /* E_Client, bottom to top */
|
||||
unsigned int clients_count;
|
||||
} layers[E_LAYER_COUNT];
|
||||
|
||||
struct
|
||||
{
|
||||
Evas_Object *rect;
|
||||
Evas_Object *obj;
|
||||
Ecore_Event_Handler *key_handler;
|
||||
E_Comp_Object_Autoclose_Cb del_cb;
|
||||
E_Comp_Object_Key_Cb key_cb;
|
||||
void *data;
|
||||
} autoclose;
|
||||
|
||||
Eina_List *debug_rects;
|
||||
Eina_List *ignore_wins;
|
||||
|
||||
Eina_Inlist *wins;
|
||||
Eina_List *wins_list;
|
||||
Eina_List *updates;
|
||||
Eina_List *post_updates;
|
||||
Ecore_Animator *render_animator;
|
||||
Ecore_Job *shape_job;
|
||||
Ecore_Job *update_job;
|
||||
Ecore_Timer *new_up_timer;
|
||||
Evas_Object *fps_bg;
|
||||
Evas_Object *fps_fg;
|
||||
Ecore_Job *screen_job;
|
||||
Ecore_Timer *nocomp_delay_timer;
|
||||
Ecore_Timer *nocomp_override_timer;
|
||||
int animating;
|
||||
int render_overflow;
|
||||
double frametimes[122];
|
||||
int frameskip;
|
||||
|
||||
int nocomp_override; //number of times nocomp override has been requested
|
||||
Ecore_X_Window block_win;
|
||||
Ecore_Window block_win;
|
||||
int block_count; //number of times block window has been requested
|
||||
|
||||
Ecore_X_Window cm_selection;
|
||||
Ecore_Window cm_selection; //FIXME: move to comp_x ?
|
||||
|
||||
int depth;
|
||||
|
||||
Ecore_Cb grab_cb;
|
||||
Ecore_Cb bindings_grab_cb;
|
||||
Ecore_Cb bindings_ungrab_cb;
|
||||
|
||||
Eina_Bool gl : 1;
|
||||
Eina_Bool grabbed : 1;
|
||||
Eina_Bool nocomp : 1;
|
||||
Eina_Bool nocomp_want : 1;
|
||||
Eina_Bool wins_invalid : 1;
|
||||
Eina_Bool saver : 1;
|
||||
Eina_Bool shape_queue_blocked : 1;
|
||||
};
|
||||
|
||||
struct _E_Comp_Zone
|
||||
|
||||
struct _E_Comp_Demo_Style_Item
|
||||
{
|
||||
E_Comp *comp;
|
||||
E_Zone *zone; // never deref - just use for handle cmp's
|
||||
Evas_Object *base;
|
||||
Evas_Object *over;
|
||||
int container_num;
|
||||
int zone_num;
|
||||
int x, y, w, h;
|
||||
double bl;
|
||||
Eina_Bool bloff;
|
||||
Evas_Object *preview;
|
||||
Evas_Object *frame;
|
||||
Evas_Object *livethumb;
|
||||
Evas_Object *layout;
|
||||
Evas_Object *border;
|
||||
Evas_Object *client;
|
||||
};
|
||||
|
||||
struct _E_Comp_Win
|
||||
{
|
||||
EINA_INLIST;
|
||||
|
||||
E_Comp *c; // parent compositor
|
||||
Ecore_X_Window win; // raw window - for menus etc.
|
||||
E_Container_Shape *shape;
|
||||
E_Border *bd; // if its a border - later
|
||||
E_Popup *pop; // if its a popup - later
|
||||
E_Menu *menu; // if it is a menu - later
|
||||
int x, y, w, h; // geometry
|
||||
Eina_Rectangle hidden; // hidden geometry (used when its unmapped and re-instated on map)
|
||||
int pw, ph; // pixmap w/h
|
||||
int border; // border width
|
||||
Ecore_X_Pixmap pixmap; // the compositing pixmap
|
||||
Ecore_X_Damage damage; // damage region
|
||||
Ecore_X_Visual vis; // window visual
|
||||
Ecore_X_Colormap cmap; // colormap of window
|
||||
int depth; // window depth
|
||||
Evas_Object *obj; // composite object
|
||||
Evas_Object *zoomobj; // zoomap
|
||||
Evas_Object *shobj; // shadow object
|
||||
Evas_Object *effect_obj; // effects object
|
||||
E_Object *eobj; // internal e object
|
||||
E_Comp_Win *cw_above; // comp win that should always be stacked above this one
|
||||
Eina_List *stack_below; // list of objects to keep stacked below this one
|
||||
Eina_List *obj_mirror; // extra mirror objects
|
||||
Ecore_X_Image *xim; // x image - software fallback
|
||||
E_Comp_Render_Update *up; // update handler
|
||||
E_Object_Delfn *dfn; // delete function handle for objects being tracked
|
||||
Ecore_Timer *update_timeout; // max time between damage and "done" event
|
||||
Ecore_Timer *ready_timeout; // max time on show (new window draw) to wait for window contents to be ready if sync protocol not handled. this is fallback.
|
||||
int dmg_updates; // num of damage event updates since a redirect
|
||||
|
||||
Ecore_X_Pixmap cache_pixmap; // the cached pixmap (1/nth the dimensions)
|
||||
int cache_w, cache_h; // cached pixmap size
|
||||
int update_count; // how many updates have happened to this win
|
||||
double last_visible_time; // last time window was visible
|
||||
double last_draw_time; // last time window was damaged
|
||||
|
||||
int pending_count; // pending event count
|
||||
|
||||
unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY
|
||||
Ecore_Timer *opacity_set_timer; // timer for setting opacity in ecore-x to avoid roundtrips
|
||||
|
||||
char *title, *name, *clas, *role; // fetched for override-redirect windowa
|
||||
Ecore_X_Window_Type primary_type; // fetched for override-redirect windowa
|
||||
|
||||
unsigned char misses; // number of sync misses
|
||||
|
||||
Eina_Bool delete_pending : 1; // delete pendig
|
||||
Eina_Bool hidden_override : 1; // hidden override
|
||||
Eina_Bool animating : 1; // it's busy animating - defer hides/dels
|
||||
Eina_Bool force : 1; // force del/hide even if animating
|
||||
Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide
|
||||
Eina_Bool delete_me : 1; // delete me!
|
||||
Eina_Bool visible : 1; // is visible
|
||||
Eina_Bool input_only : 1; // is input_only
|
||||
|
||||
Eina_Bool override : 1; // is override-redirect
|
||||
Eina_Bool argb : 1; // is argb
|
||||
Eina_Bool shaped : 1; // is shaped
|
||||
Eina_Bool update : 1; // has updates to fetch
|
||||
Eina_Bool redirected : 1; // has updates to fetch
|
||||
Eina_Bool shape_changed : 1; // shape changed
|
||||
Eina_Bool native : 1; // native
|
||||
Eina_Bool drawme : 1; // drawme flag fo syncing rendering
|
||||
|
||||
Eina_Bool invalid : 1; // invalid depth used - just use as marker
|
||||
Eina_Bool nocomp : 1; // nocomp applied
|
||||
Eina_Bool nocomp_need_update : 1; // nocomp in effect, but this window updated while in nocomp mode
|
||||
Eina_Bool needpix : 1; // need new pixmap
|
||||
Eina_Bool needxim : 1; // need new xim
|
||||
Eina_Bool real_hid : 1; // last hide was a real window unmap
|
||||
Eina_Bool inhash : 1; // is in the windows hash
|
||||
Eina_Bool show_ready : 1; // is this window ready for its first show
|
||||
Eina_Bool geom_update : 1; // window needs geometry updated
|
||||
|
||||
Eina_Bool show_anim : 1; // ran show animation
|
||||
|
||||
Eina_Bool bg_win : 1; // window is the bg win for a container
|
||||
Eina_Bool free_shape : 1; // container shape needs to be freed
|
||||
Eina_Bool real_obj : 1; // real object (for dummy comp wins)
|
||||
Eina_Bool not_in_layout : 1; // object is a dummy not in comp layout
|
||||
|
||||
Eina_Bool effect_clip : 1; //effect_obj is clipped
|
||||
Eina_Bool effect_clip_able : 1; //effect_obj will be clipped for effects
|
||||
};
|
||||
|
||||
struct E_Event_Comp
|
||||
{
|
||||
E_Comp_Win *cw;
|
||||
};
|
||||
|
||||
extern EAPI int E_EVENT_COMP_SOURCE_VISIBILITY;
|
||||
extern EAPI int E_EVENT_COMP_SOURCE_ADD;
|
||||
extern EAPI int E_EVENT_COMP_SOURCE_DEL;
|
||||
extern EAPI int E_EVENT_COMP_SOURCE_CONFIGURE;
|
||||
extern EAPI int E_EVENT_COMP_SOURCE_STACK;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_COMP_ENGINE_NONE = 0,
|
||||
|
@ -213,67 +133,40 @@ typedef enum
|
|||
} E_Comp_Engine;
|
||||
|
||||
EINTERN Eina_Bool e_comp_init(void);
|
||||
EINTERN int e_comp_shutdown(void);
|
||||
EINTERN Eina_Bool e_comp_manager_init(E_Manager *man);
|
||||
|
||||
EAPI const Eina_List *e_comp_list(void);
|
||||
|
||||
EAPI E_Comp *e_comp_new(void);
|
||||
EAPI int e_comp_internal_save(void);
|
||||
EINTERN int e_comp_shutdown(void);
|
||||
EAPI void e_comp_render_queue(E_Comp *c);
|
||||
EAPI void e_comp_shape_queue(E_Comp *c);
|
||||
EAPI void e_comp_shape_queue_block(E_Comp *c, Eina_Bool block);
|
||||
EAPI E_Comp_Config *e_comp_config_get(void);
|
||||
EAPI const Eina_List *e_comp_list(void);
|
||||
EAPI void e_comp_shadows_reset(void);
|
||||
|
||||
EAPI void e_comp_block_window_add(void);
|
||||
EAPI void e_comp_block_window_del(void);
|
||||
|
||||
EAPI void e_comp_render_update(E_Comp *c);
|
||||
EAPI void e_comp_zone_update(E_Comp_Zone *cz);
|
||||
|
||||
EAPI E_Comp *e_comp_get(const void *o);
|
||||
EAPI Ecore_Window e_comp_top_window_at_xy_get(E_Comp *c, Evas_Coord x, Evas_Coord y);
|
||||
EAPI void e_comp_util_wins_print(const E_Comp *c);
|
||||
EAPI void e_comp_ignore_win_add(E_Pixmap_Type type, Ecore_Window win);
|
||||
EAPI void e_comp_ignore_win_del(E_Pixmap_Type type, Ecore_Window win);
|
||||
EAPI Eina_Bool e_comp_ignore_win_find(Ecore_Window win);
|
||||
EAPI void e_comp_override_del(E_Comp *c);
|
||||
EAPI void e_comp_override_add(E_Comp *c);
|
||||
|
||||
EAPI void e_comp_win_effect_set(E_Comp_Win *cw, const char *effect);
|
||||
EAPI void e_comp_win_effect_params_set(E_Comp_Win *cw, int id, int *params, unsigned int count);
|
||||
EAPI void e_comp_win_effect_start(E_Comp_Win *cw, Edje_Signal_Cb end_cb, const void *end_data);
|
||||
EAPI void e_comp_win_effect_stop(E_Comp_Win *cw, Edje_Signal_Cb end_cb);
|
||||
EAPI void e_comp_win_effect_clip(E_Comp_Win *cw);
|
||||
EAPI void e_comp_win_effect_unclip(E_Comp_Win *cw);
|
||||
|
||||
EAPI E_Comp_Win *e_comp_win_find_client_win(Ecore_X_Window win);
|
||||
EAPI E_Comp_Win *e_comp_win_find(Ecore_X_Window win);
|
||||
EAPI const Eina_List *e_comp_win_list_get(E_Comp *c);
|
||||
EAPI Evas_Object *e_comp_win_image_mirror_add(E_Comp_Win *cw);
|
||||
EAPI void e_comp_win_hidden_set(E_Comp_Win *cw, Eina_Bool hidden);
|
||||
EAPI void e_comp_win_opacity_set(E_Comp_Win *cw, unsigned int opacity);
|
||||
|
||||
EAPI E_Comp *e_comp_get(void *o);
|
||||
EAPI void e_comp_populate(E_Comp *c);
|
||||
|
||||
EAPI Ecore_X_Window e_comp_top_window_at_xy_get(E_Comp *c, Evas_Coord x, Evas_Coord y, Eina_Bool vis, Ecore_X_Window *ignore, unsigned int ignore_num);
|
||||
|
||||
/* for injecting objects into the comp layout */
|
||||
EAPI E_Comp_Win *e_comp_object_inject(E_Comp *c, Evas_Object *obj, E_Object *eobj, E_Layer layer);
|
||||
/* for giving objects the comp theme and such without injecting into layout */
|
||||
EAPI E_Comp_Win *e_comp_object_add(E_Comp *c, Evas_Object *obj, E_Object *eobj);
|
||||
|
||||
EAPI void e_comp_win_move(E_Comp_Win *cw, Evas_Coord x, Evas_Coord y);
|
||||
EAPI void e_comp_win_resize(E_Comp_Win *cw, int w, int h);
|
||||
EAPI void e_comp_win_moveresize(E_Comp_Win *cw, Evas_Coord x, Evas_Coord y, int w, int h);
|
||||
EAPI void e_comp_win_hide(E_Comp_Win *cw);
|
||||
EAPI void e_comp_win_show(E_Comp_Win *cw);
|
||||
EAPI void e_comp_win_del(E_Comp_Win *cw);
|
||||
EAPI void e_comp_win_reshadow(E_Comp_Win *cw);
|
||||
|
||||
EAPI void e_comp_ignore_win_add(Ecore_X_Window win);
|
||||
|
||||
#define E_LAYER_SET(obj, layer) e_comp_canvas_layer_set(obj, layer, 0, E_COMP_CANVAS_STACK_NONE)
|
||||
#define E_LAYER_SET_UNDER(obj, layer) e_comp_canvas_layer_set(obj, layer, 0, E_COMP_CANVAS_STACK_UNDER)
|
||||
#define E_LAYER_SET_ABOVE(obj, layer) e_comp_canvas_layer_set(obj, layer, 0, E_COMP_CANVAS_STACK_ABOVE)
|
||||
#define E_LAYER_LAYOUT_ADD(obj, layer) e_comp_canvas_layer_set(obj, E_COMP_CANVAS_LAYER_LAYOUT, layer, E_COMP_CANVAS_STACK_NONE)
|
||||
#define E_LAYER_LAYOUT_ADD_UNDER(obj, layer) e_comp_canvas_layer_set(obj, E_COMP_CANVAS_LAYER_LAYOUT, layer, E_COMP_CANVAS_STACK_UNDER)
|
||||
#define E_LAYER_LAYOUT_ADD_ABOVE(obj, layer) e_comp_canvas_layer_set(obj, E_COMP_CANVAS_LAYER_LAYOUT, layer, E_COMP_CANVAS_STACK_ABOVE)
|
||||
|
||||
EAPI E_Comp_Win *e_comp_canvas_layer_set(Evas_Object *obj, E_Comp_Canvas_Layer comp_layer, E_Layer layer, E_Comp_Canvas_Stack stack);
|
||||
EAPI void e_comp_block_window_add(void);
|
||||
EAPI void e_comp_block_window_del(void);
|
||||
EAPI E_Comp *e_comp_find_by_window(Ecore_Window win);
|
||||
EAPI void e_comp_override_timed_pop(E_Comp *c);
|
||||
EAPI unsigned int e_comp_e_object_layer_get(const E_Object *obj);
|
||||
EAPI Eina_Bool e_comp_grab_input(E_Comp *c, Eina_Bool mouse, Eina_Bool kbd);
|
||||
EAPI void e_comp_ungrab_input(E_Comp *c, Eina_Bool mouse, Eina_Bool kbd);
|
||||
EAPI void e_comp_gl_set(Eina_Bool set);
|
||||
EAPI Eina_Bool e_comp_gl_get(void);
|
||||
EAPI E_Comp *e_comp_evas_find(const Evas *e);
|
||||
|
||||
EAPI void e_comp_button_bindings_grab_all(void);
|
||||
EAPI void e_comp_button_bindings_ungrab_all(void);
|
||||
|
||||
EINTERN Evas_Object *e_comp_style_selector_create(Evas *evas, const char **source);
|
||||
EAPI E_Config_Dialog *e_int_config_comp(E_Comp *comp, const char *params);
|
||||
EAPI E_Config_Dialog *e_int_config_comp_match(E_Comp *comp, const char *params);
|
||||
|
||||
static inline E_Comp *
|
||||
e_comp_util_evas_object_comp_get(Evas_Object *obj)
|
||||
|
@ -282,35 +175,16 @@ e_comp_util_evas_object_comp_get(Evas_Object *obj)
|
|||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_comp_evas_exists(void *o)
|
||||
e_comp_util_client_is_fullscreen(const E_Client *ec)
|
||||
{
|
||||
E_Comp *c;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(o, EINA_FALSE);
|
||||
c = e_comp_get(o);
|
||||
return c ? !!c->evas : EINA_FALSE;
|
||||
if ((!ec->visible) || (ec->input_only))
|
||||
return EINA_FALSE;
|
||||
return ((ec->client.x == 0) && (ec->client.y == 0) &&
|
||||
((ec->client.w) >= ec->comp->man->w) &&
|
||||
((ec->client.h) >= ec->comp->man->h) &&
|
||||
(!ec->argb) && (!ec->shaped)
|
||||
);
|
||||
}
|
||||
|
||||
static inline void
|
||||
e_comp_win_ignore_events_set(E_Comp_Win *cw, Eina_Bool ignore)
|
||||
{
|
||||
EINA_SAFETY_ON_NULL_RETURN(cw);
|
||||
ignore = !!ignore;
|
||||
evas_object_pass_events_set(cw->effect_obj, ignore);
|
||||
}
|
||||
|
||||
static inline unsigned int
|
||||
e_comp_e_object_layer_effective_get(const E_Object *obj)
|
||||
{
|
||||
unsigned int layer;
|
||||
|
||||
layer = e_comp_e_object_layer_get(obj);
|
||||
if ((layer > E_COMP_CANVAS_LAYER_LAYOUT) && (layer < E_COMP_CANVAS_LAYER_POPUP))
|
||||
layer = E_COMP_CANVAS_LAYER_LAYOUT;
|
||||
return layer;
|
||||
}
|
||||
|
||||
EAPI void e_comp_util_wins_print(const E_Comp *c);
|
||||
EAPI void e_comp_shape_queue(E_Comp *c);
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,579 @@
|
|||
#include "e.h"
|
||||
|
||||
static void
|
||||
_e_comp_canvas_event_compositor_resize_free(void *data EINA_UNUSED, void *event)
|
||||
{
|
||||
E_Event_Compositor_Resize *ev = event;
|
||||
|
||||
e_object_unref(E_OBJECT(ev->comp));
|
||||
free(ev);
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
|
||||
static void
|
||||
_e_comp_canvas_cb_first_frame(void *data, Evas *e, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Comp *c = data;
|
||||
double now = ecore_time_get();
|
||||
|
||||
switch (e_first_frame[0])
|
||||
{
|
||||
case 'A': abort();
|
||||
case 'E':
|
||||
case 'D': exit(-1);
|
||||
case 'T': fprintf(stderr, "Startup time: '%f' - '%f' = '%f'\n", now, e_first_frame_start_time, now - e_first_frame_start_time);
|
||||
break;
|
||||
}
|
||||
|
||||
evas_event_callback_del_full(e, EVAS_CALLBACK_RENDER_POST, _e_comp_canvas_cb_first_frame, c);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_comp_canvas_render_post(void *data, Evas *e EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Comp *c = data;
|
||||
E_Client *ec;
|
||||
//Evas_Event_Render_Post *ev = event_info;
|
||||
//Eina_List *l;
|
||||
//Eina_Rectangle *r;
|
||||
|
||||
//if (ev)
|
||||
//{
|
||||
//EINA_LIST_FOREACH(ev->updated_area, l, r)
|
||||
//INF("POST RENDER: %d,%d %dx%d", r->x, r->y, r->w, r->h);
|
||||
//}
|
||||
EINA_LIST_FREE(c->post_updates, ec)
|
||||
{
|
||||
//INF("POST %p", ec);
|
||||
if (!e_object_is_del(E_OBJECT(ec)))
|
||||
e_pixmap_image_clear(ec->pixmap, 1);
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////
|
||||
|
||||
static void
|
||||
_e_comp_canvas_cb_mouse_in(E_Comp *c EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
E_Client *ec;
|
||||
|
||||
if (e_client_action_get()) return;
|
||||
ec = e_client_focused_get();
|
||||
if (ec && (!ec->border_menu)) e_focus_event_mouse_out(ec);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_comp_canvas_cb_mouse_down(E_Comp *c, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||
{
|
||||
if (e_client_action_get()) return;
|
||||
e_bindings_mouse_down_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(c), event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_comp_canvas_cb_mouse_up(E_Comp *c, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||
{
|
||||
if (e_client_action_get()) return;
|
||||
e_bindings_mouse_up_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(c), event_info);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_comp_canvas_cb_mouse_wheel(E_Comp *c, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info)
|
||||
{
|
||||
if (e_client_action_get()) return;
|
||||
e_bindings_wheel_evas_event_handle(E_BINDING_CONTEXT_COMPOSITOR, E_OBJECT(c), event_info);
|
||||
}
|
||||
|
||||
////////////////////////////////////
|
||||
|
||||
static int
|
||||
_e_comp_canvas_cb_zone_sort(const void *data1, const void *data2)
|
||||
{
|
||||
const E_Zone *z1 = data1, *z2 = data2;
|
||||
|
||||
return z2->num - z1->num;
|
||||
}
|
||||
|
||||
|
||||
EAPI Eina_Bool
|
||||
e_comp_canvas_init(E_Comp *c)
|
||||
{
|
||||
Evas_Object *o;
|
||||
Eina_List *screens;
|
||||
unsigned int layer;
|
||||
|
||||
c->evas = ecore_evas_get(c->ee);
|
||||
|
||||
if (e_first_frame)
|
||||
evas_event_callback_add(c->evas, EVAS_CALLBACK_RENDER_POST, _e_comp_canvas_cb_first_frame, c);
|
||||
ecore_evas_data_set(c->ee, "comp", c);
|
||||
o = evas_object_rectangle_add(c->evas);
|
||||
c->bg_blank_object = o;
|
||||
evas_object_layer_set(o, E_LAYER_BOTTOM);
|
||||
evas_object_move(o, 0, 0);
|
||||
evas_object_resize(o, c->man->w, c->man->h);
|
||||
evas_object_color_set(o, 255, 255, 255, 255);
|
||||
evas_object_name_set(o, "comp->bg_blank_object");
|
||||
evas_object_data_set(o, "e_comp", c);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_down, c);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_UP, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_up, c);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_IN, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_in, c);
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_WHEEL, (Evas_Object_Event_Cb)_e_comp_canvas_cb_mouse_wheel, c);
|
||||
evas_object_show(o);
|
||||
|
||||
ecore_evas_name_class_set(c->ee, "E", "Comp_EE");
|
||||
// ecore_evas_manual_render_set(c->ee, conf->lock_fps);
|
||||
ecore_evas_show(c->ee);
|
||||
|
||||
evas_event_callback_add(c->evas, EVAS_CALLBACK_RENDER_POST, _e_comp_canvas_render_post, c);
|
||||
|
||||
c->ee_win = ecore_evas_window_get(c->ee);
|
||||
|
||||
for (layer = 0; layer <= e_comp_canvas_layer_map(E_LAYER_MAX); layer++)
|
||||
{
|
||||
Evas_Object *o2;
|
||||
|
||||
/* client layers have actual X windows backing them, so we wait */
|
||||
if (e_comp_canvas_client_layer_map(e_comp_canvas_layer_map_to(layer)) != 9999)
|
||||
continue;
|
||||
o2 = c->layers[layer].obj = evas_object_rectangle_add(c->evas);
|
||||
evas_object_layer_set(o2, e_comp_canvas_layer_map_to(layer));
|
||||
evas_object_name_set(o2, "layer_obj");
|
||||
}
|
||||
|
||||
screens = (Eina_List *)e_xinerama_screens_get();
|
||||
if (screens)
|
||||
{
|
||||
E_Screen *scr;
|
||||
Eina_List *l;
|
||||
|
||||
EINA_LIST_FOREACH(screens, l, scr)
|
||||
{
|
||||
e_zone_new(c, scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h);
|
||||
}
|
||||
}
|
||||
else
|
||||
e_zone_new(c, 0, 0, 0, 0, c->man->w, c->man->h);
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
EINTERN void
|
||||
e_comp_canvas_clear(E_Comp *c)
|
||||
{
|
||||
evas_event_freeze(c->evas);
|
||||
edje_freeze();
|
||||
|
||||
E_FREE_FUNC(c->fps_fg, evas_object_del);
|
||||
E_FREE_FUNC(c->fps_bg, evas_object_del);
|
||||
E_FREE_FUNC(c->autoclose.rect, evas_object_del);
|
||||
E_FREE_FUNC(c->shape_job, ecore_job_del);
|
||||
E_FREE_FUNC(c->pointer, e_object_del);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////
|
||||
|
||||
EAPI void
|
||||
e_comp_all_freeze(void)
|
||||
{
|
||||
Eina_List *l;
|
||||
E_Manager *man;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), l, man)
|
||||
evas_event_freeze(man->comp->evas);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_all_thaw(void)
|
||||
{
|
||||
Eina_List *l;
|
||||
E_Manager *man;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), l, man)
|
||||
evas_event_thaw(man->comp->evas);
|
||||
}
|
||||
|
||||
EAPI E_Zone *
|
||||
e_comp_zone_xy_get(const E_Comp *c, Evas_Coord x, Evas_Coord y)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Zone *zone;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(c, NULL);
|
||||
EINA_LIST_FOREACH(c->zones, l, zone)
|
||||
if (E_INSIDE(x, y, zone->x, zone->y, zone->w, zone->h)) return zone;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI E_Zone *
|
||||
e_comp_zone_number_get(E_Comp *c, int num)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
E_Zone *zone = NULL;
|
||||
|
||||
E_OBJECT_CHECK_RETURN(c, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(c, E_COMP_TYPE, NULL);
|
||||
EINA_LIST_FOREACH(c->zones, l, zone)
|
||||
{
|
||||
if ((int)zone->num == num) return zone;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI E_Zone *
|
||||
e_comp_zone_id_get(E_Comp *c, int id)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
E_Zone *zone = NULL;
|
||||
|
||||
E_OBJECT_CHECK_RETURN(c, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(c, E_COMP_TYPE, NULL);
|
||||
EINA_LIST_FOREACH(c->zones, l, zone)
|
||||
{
|
||||
if (zone->id == id) return zone;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI E_Comp *
|
||||
e_comp_number_get(unsigned int num)
|
||||
{
|
||||
const Eina_List *l;
|
||||
E_Comp *c;
|
||||
|
||||
EINA_LIST_FOREACH(e_comp_list(), l, c)
|
||||
if (c->num == num) return c;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI E_Desk *
|
||||
e_comp_desk_window_profile_get(E_Comp *c, const char *profile)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
E_Zone *zone = NULL;
|
||||
int x, y;
|
||||
|
||||
E_OBJECT_CHECK_RETURN(c, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(c, E_COMP_TYPE, NULL);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(profile, NULL);
|
||||
|
||||
EINA_LIST_FOREACH(c->zones, l, zone)
|
||||
{
|
||||
for (x = 0; x < zone->desk_x_count; x++)
|
||||
{
|
||||
for (y = 0; y < zone->desk_y_count; y++)
|
||||
{
|
||||
E_Desk *desk = e_desk_at_xy_get(zone, x, y);
|
||||
if (!e_util_strcmp(desk->window_profile, profile))
|
||||
return desk;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_canvas_zone_update(E_Zone *zone)
|
||||
{
|
||||
Evas_Object *o;
|
||||
const char *const over_styles[] =
|
||||
{
|
||||
"e/comp/screen/overlay/default",
|
||||
"e/comp/screen/overlay/noeffects"
|
||||
};
|
||||
const char *const under_styles[] =
|
||||
{
|
||||
"e/comp/screen/base/default",
|
||||
"e/comp/screen/base/noeffects"
|
||||
};
|
||||
E_Comp_Config *conf = e_comp_config_get();
|
||||
|
||||
if (zone->over && zone->base)
|
||||
{
|
||||
e_theme_edje_object_set(zone->base, "base/theme/comp",
|
||||
under_styles[conf->disable_screen_effects]);
|
||||
edje_object_part_swallow(zone->base, "e.swallow.background",
|
||||
zone->transition_object ?: zone->bg_object);
|
||||
e_theme_edje_object_set(zone->over, "base/theme/comp",
|
||||
over_styles[conf->disable_screen_effects]);
|
||||
return;
|
||||
}
|
||||
E_FREE_FUNC(zone->base, evas_object_del);
|
||||
E_FREE_FUNC(zone->over, evas_object_del);
|
||||
zone->base = o = edje_object_add(zone->comp->evas);
|
||||
evas_object_repeat_events_set(o, 1);
|
||||
evas_object_name_set(zone->base, "zone->base");
|
||||
e_theme_edje_object_set(o, "base/theme/comp", under_styles[conf->disable_screen_effects]);
|
||||
edje_object_part_swallow(zone->base, "e.swallow.background", zone->transition_object ?: zone->bg_object);
|
||||
evas_object_move(o, zone->x, zone->y);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_layer_set(o, E_LAYER_BG);
|
||||
evas_object_show(o);
|
||||
|
||||
zone->over = o = edje_object_add(zone->comp->evas);
|
||||
evas_object_layer_set(o, E_LAYER_MAX);
|
||||
evas_object_raise(o);
|
||||
evas_object_name_set(zone->over, "zone->over");
|
||||
evas_object_pass_events_set(o, 1);
|
||||
e_theme_edje_object_set(o, "base/theme/comp", over_styles[conf->disable_screen_effects]);
|
||||
evas_object_move(o, zone->x, zone->y);
|
||||
evas_object_resize(o, zone->w, zone->h);
|
||||
evas_object_raise(o);
|
||||
evas_object_show(o);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_canvas_update(E_Comp *c)
|
||||
{
|
||||
E_Event_Compositor_Resize *ev;
|
||||
Eina_List *l, *screens, *zones = NULL, *ll;
|
||||
E_Zone *zone;
|
||||
E_Screen *scr;
|
||||
int i;
|
||||
Eina_Bool changed = EINA_FALSE;
|
||||
|
||||
screens = (Eina_List *)e_xinerama_screens_get();
|
||||
|
||||
if (screens)
|
||||
{
|
||||
zones = c->zones;
|
||||
c->zones = NULL;
|
||||
EINA_LIST_FOREACH(screens, l, scr)
|
||||
{
|
||||
zone = NULL;
|
||||
|
||||
EINA_LIST_FOREACH(zones, ll, zone)
|
||||
{
|
||||
if (zone->id == scr->escreen) break;
|
||||
zone = NULL;
|
||||
}
|
||||
if (zone)
|
||||
{
|
||||
changed |= e_zone_move_resize(zone, scr->x, scr->y, scr->w, scr->h);
|
||||
if (changed)
|
||||
printf("@@@ FOUND ZONE %i %i [%p]\n", zone->num, zone->id, zone);
|
||||
zones = eina_list_remove(zones, zone);
|
||||
c->zones = eina_list_append(c->zones, zone);
|
||||
zone->num = scr->screen;
|
||||
}
|
||||
else
|
||||
{
|
||||
zone = e_zone_new(c, scr->screen, scr->escreen,
|
||||
scr->x, scr->y, scr->w, scr->h);
|
||||
printf("@@@ NEW ZONE = %p\n", zone);
|
||||
changed = EINA_TRUE;
|
||||
}
|
||||
if (changed)
|
||||
printf("@@@ SCREENS: %i %i | %i %i %ix%i\n",
|
||||
scr->screen, scr->escreen, scr->x, scr->y, scr->w, scr->h);
|
||||
}
|
||||
c->zones = eina_list_sort(c->zones, 0, _e_comp_canvas_cb_zone_sort);
|
||||
if (zones)
|
||||
{
|
||||
E_Zone *spare_zone;
|
||||
|
||||
changed = EINA_TRUE;
|
||||
spare_zone = eina_list_data_get(c->zones);
|
||||
|
||||
EINA_LIST_FREE(zones, zone)
|
||||
{
|
||||
E_Client *ec;
|
||||
|
||||
/* delete any shelves on this zone */
|
||||
E_CLIENT_FOREACH(c, ec)
|
||||
{
|
||||
if (ec->zone == zone)
|
||||
{
|
||||
if (spare_zone)
|
||||
e_client_zone_set(ec, spare_zone);
|
||||
else
|
||||
printf("EEEK! should not be here - but no\n"
|
||||
"spare zones exist to move this\n"
|
||||
"window to!!! help!\n");
|
||||
}
|
||||
}
|
||||
e_object_del(E_OBJECT(zone));
|
||||
}
|
||||
}
|
||||
if (changed) e_shelf_config_update();
|
||||
}
|
||||
else
|
||||
{
|
||||
E_Zone *z;
|
||||
|
||||
z = e_comp_zone_number_get(c, 0);
|
||||
if (z)
|
||||
{
|
||||
changed |= e_zone_move_resize(z, 0, 0, c->man->w, c->man->h);
|
||||
if (changed) e_shelf_zone_move_resize_handle(z);
|
||||
}
|
||||
}
|
||||
|
||||
if (!changed) return;
|
||||
if (!starting)
|
||||
{
|
||||
ev = calloc(1, sizeof(E_Event_Compositor_Resize));
|
||||
ev->comp = c;
|
||||
e_object_ref(E_OBJECT(c));
|
||||
ecore_event_add(E_EVENT_COMPOSITOR_RESIZE, ev, _e_comp_canvas_event_compositor_resize_free, NULL);
|
||||
}
|
||||
|
||||
EINA_LIST_FOREACH(c->zones, l, zone)
|
||||
{
|
||||
E_FREE_FUNC(zone->base, evas_object_del);
|
||||
E_FREE_FUNC(zone->over, evas_object_del);
|
||||
if (zone->bloff)
|
||||
{
|
||||
if (!e_comp_config_get()->nofade)
|
||||
{
|
||||
if (e_backlight_mode_get(zone) != E_BACKLIGHT_MODE_NORMAL)
|
||||
e_backlight_mode_set(zone, E_BACKLIGHT_MODE_NORMAL);
|
||||
e_backlight_level_set(zone, e_config->backlight.normal, -1.0);
|
||||
}
|
||||
}
|
||||
e_comp_canvas_zone_update(zone);
|
||||
}
|
||||
|
||||
for (i = 0; i < 11; i++)
|
||||
{
|
||||
Eina_List *tmp = NULL;
|
||||
E_Client *ec;
|
||||
|
||||
if (!c->layers[i].clients) continue;
|
||||
/* Make temporary list as e_client_res_change_geometry_restore
|
||||
* rearranges the order. */
|
||||
EINA_INLIST_FOREACH(c->layers[i].clients, ec)
|
||||
tmp = eina_list_append(tmp, ec);
|
||||
|
||||
EINA_LIST_FREE(tmp, ec)
|
||||
{
|
||||
e_client_res_change_geometry_save(ec);
|
||||
e_client_res_change_geometry_restore(ec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_canvas_fake_layers_init(E_Comp *comp)
|
||||
{
|
||||
unsigned int layer;
|
||||
|
||||
/* init layers */
|
||||
for (layer = e_comp_canvas_layer_map(E_LAYER_CLIENT_DESKTOP); layer <= e_comp_canvas_layer_map(E_LAYER_CLIENT_PRIO); layer++)
|
||||
{
|
||||
Evas_Object *o2;
|
||||
|
||||
o2 = comp->layers[layer].obj = evas_object_rectangle_add(comp->evas);
|
||||
evas_object_layer_set(o2, e_comp_canvas_layer_map_to(layer));
|
||||
evas_object_name_set(o2, "layer_obj");
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_canvas_fps_toggle(void)
|
||||
{
|
||||
E_Comp_Config *conf = e_comp_config_get();
|
||||
|
||||
conf->fps_show = !conf->fps_show;
|
||||
e_comp_internal_save();
|
||||
E_LIST_FOREACH(e_comp_list(), e_comp_render_queue);
|
||||
}
|
||||
|
||||
EAPI E_Layer
|
||||
e_comp_canvas_layer_map_to(unsigned int layer)
|
||||
{
|
||||
switch (layer)
|
||||
{
|
||||
case 0: return E_LAYER_BOTTOM;
|
||||
case 1: return E_LAYER_BG;
|
||||
case 2: return E_LAYER_DESKTOP;
|
||||
case 3: return E_LAYER_DESKTOP_TOP;
|
||||
case 4: return E_LAYER_CLIENT_DESKTOP;
|
||||
case 5: return E_LAYER_CLIENT_BELOW;
|
||||
case 6: return E_LAYER_CLIENT_NORMAL;
|
||||
case 7: return E_LAYER_CLIENT_ABOVE;
|
||||
case 8: return E_LAYER_CLIENT_EDGE;
|
||||
case 9: return E_LAYER_CLIENT_FULLSCREEN;
|
||||
case 10: return E_LAYER_CLIENT_EDGE_FULLSCREEN;
|
||||
case 11: return E_LAYER_CLIENT_POPUP;
|
||||
case 12: return E_LAYER_CLIENT_TOP;
|
||||
case 13: return E_LAYER_CLIENT_DRAG;
|
||||
case 14: return E_LAYER_CLIENT_PRIO;
|
||||
case 15: return E_LAYER_POPUP;
|
||||
case 16: return E_LAYER_MENU;
|
||||
case 17: return E_LAYER_DESKLOCK;
|
||||
case 18: return E_LAYER_MAX;
|
||||
default: break;
|
||||
}
|
||||
return -INT_MAX;
|
||||
}
|
||||
|
||||
EAPI unsigned int
|
||||
e_comp_canvas_layer_map(E_Layer layer)
|
||||
{
|
||||
switch (layer)
|
||||
{
|
||||
case E_LAYER_BOTTOM: return 0;
|
||||
case E_LAYER_BG: return 1;
|
||||
case E_LAYER_DESKTOP: return 2;
|
||||
case E_LAYER_DESKTOP_TOP: return 3;
|
||||
case E_LAYER_CLIENT_DESKTOP: return 4;
|
||||
case E_LAYER_CLIENT_BELOW: return 5;
|
||||
case E_LAYER_CLIENT_NORMAL: return 6;
|
||||
case E_LAYER_CLIENT_ABOVE: return 7;
|
||||
case E_LAYER_CLIENT_EDGE: return 8;
|
||||
case E_LAYER_CLIENT_FULLSCREEN: return 9;
|
||||
case E_LAYER_CLIENT_EDGE_FULLSCREEN: return 10;
|
||||
case E_LAYER_CLIENT_POPUP: return 11;
|
||||
case E_LAYER_CLIENT_TOP: return 12;
|
||||
case E_LAYER_CLIENT_DRAG: return 13;
|
||||
case E_LAYER_CLIENT_PRIO: return 14;
|
||||
case E_LAYER_POPUP: return 15;
|
||||
case E_LAYER_MENU: return 16;
|
||||
case E_LAYER_DESKLOCK: return 17;
|
||||
case E_LAYER_MAX: return 18;
|
||||
default: break;
|
||||
}
|
||||
return 9999;
|
||||
}
|
||||
|
||||
EAPI unsigned int
|
||||
e_comp_canvas_client_layer_map(E_Layer layer)
|
||||
{
|
||||
switch (layer)
|
||||
{
|
||||
case E_LAYER_CLIENT_DESKTOP: return 0;
|
||||
case E_LAYER_CLIENT_BELOW: return 1;
|
||||
case E_LAYER_CLIENT_NORMAL: return 2;
|
||||
case E_LAYER_CLIENT_ABOVE: return 3;
|
||||
case E_LAYER_CLIENT_EDGE: return 4;
|
||||
case E_LAYER_CLIENT_FULLSCREEN: return 5;
|
||||
case E_LAYER_CLIENT_EDGE_FULLSCREEN: return 6;
|
||||
case E_LAYER_CLIENT_POPUP: return 7;
|
||||
case E_LAYER_CLIENT_TOP: return 8;
|
||||
case E_LAYER_CLIENT_DRAG: return 9;
|
||||
case E_LAYER_CLIENT_PRIO: return 10;
|
||||
default: break;
|
||||
}
|
||||
return 9999;
|
||||
}
|
||||
|
||||
EAPI E_Layer
|
||||
e_comp_canvas_client_layer_map_nearest(int layer)
|
||||
{
|
||||
#define LAYER_MAP(X) \
|
||||
if (layer <= X) return X
|
||||
|
||||
LAYER_MAP(E_LAYER_CLIENT_DESKTOP);
|
||||
LAYER_MAP(E_LAYER_CLIENT_BELOW);
|
||||
LAYER_MAP(E_LAYER_CLIENT_NORMAL);
|
||||
LAYER_MAP(E_LAYER_CLIENT_ABOVE);
|
||||
LAYER_MAP(E_LAYER_CLIENT_EDGE);
|
||||
LAYER_MAP(E_LAYER_CLIENT_FULLSCREEN);
|
||||
LAYER_MAP(E_LAYER_CLIENT_EDGE_FULLSCREEN);
|
||||
LAYER_MAP(E_LAYER_CLIENT_POPUP);
|
||||
LAYER_MAP(E_LAYER_CLIENT_TOP);
|
||||
LAYER_MAP(E_LAYER_CLIENT_DRAG);
|
||||
return E_LAYER_CLIENT_PRIO;
|
||||
}
|
|
@ -0,0 +1,81 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
|
||||
|
||||
|
||||
typedef struct _E_Event_Compositor_Resize E_Event_Compositor_Resize;
|
||||
|
||||
#else
|
||||
#ifndef E_COMP_CANVAS_H
|
||||
#define E_COMP_CANVAS_H
|
||||
|
||||
struct _E_Event_Compositor_Resize
|
||||
{
|
||||
E_Comp *comp;
|
||||
};
|
||||
|
||||
extern EAPI int E_EVENT_COMPOSITOR_RESIZE;
|
||||
|
||||
EAPI Eina_Bool e_comp_canvas_init(E_Comp *c);
|
||||
EINTERN void e_comp_canvas_clear(E_Comp *c);
|
||||
EAPI void e_comp_all_freeze(void);
|
||||
EAPI void e_comp_all_thaw(void);
|
||||
EAPI E_Zone * e_comp_zone_xy_get(const E_Comp *c, Evas_Coord x, Evas_Coord y);
|
||||
EAPI E_Zone * e_comp_zone_number_get(E_Comp *c, int num);
|
||||
EAPI E_Zone * e_comp_zone_id_get(E_Comp *c, int id);
|
||||
EAPI E_Comp * e_comp_number_get(unsigned int num);
|
||||
EAPI E_Desk * e_comp_desk_window_profile_get(E_Comp *c, const char *profile);
|
||||
EAPI void e_comp_canvas_zone_update(E_Zone *zone);
|
||||
EAPI void e_comp_canvas_update(E_Comp *c);
|
||||
EAPI void e_comp_canvas_fake_layers_init(E_Comp *comp);
|
||||
EAPI void e_comp_canvas_fps_toggle(void);
|
||||
EAPI E_Layer e_comp_canvas_layer_map_to(unsigned int layer);
|
||||
EAPI unsigned int e_comp_canvas_layer_map(E_Layer layer);
|
||||
EAPI unsigned int e_comp_canvas_client_layer_map(E_Layer layer);
|
||||
EAPI E_Layer e_comp_canvas_client_layer_map_nearest(int layer);
|
||||
|
||||
|
||||
/* the following functions are used for adjusting root window coordinates
|
||||
* to/from canvas coordinates.
|
||||
* this ensures correct positioning when running E as a nested compositor
|
||||
*
|
||||
* - use the "adjust" functions to go root->canvas
|
||||
* - use the "unadjust" functions to go canvas->root
|
||||
*/
|
||||
static inline int
|
||||
e_comp_canvas_x_root_unadjust(const E_Comp *c, int x)
|
||||
{
|
||||
int cx;
|
||||
|
||||
ecore_evas_geometry_get(c->ee, &cx, NULL, NULL, NULL);
|
||||
return x + cx;
|
||||
}
|
||||
|
||||
static inline int
|
||||
e_comp_canvas_y_root_unadjust(const E_Comp *c, int y)
|
||||
{
|
||||
int cy;
|
||||
|
||||
ecore_evas_geometry_get(c->ee, NULL, &cy, NULL, NULL);
|
||||
return y + cy;
|
||||
}
|
||||
|
||||
static inline int
|
||||
e_comp_canvas_x_root_adjust(const E_Comp *c, int x)
|
||||
{
|
||||
int cx;
|
||||
|
||||
ecore_evas_geometry_get(c->ee, &cx, NULL, NULL, NULL);
|
||||
return x - cx;
|
||||
}
|
||||
|
||||
static inline int
|
||||
e_comp_canvas_y_root_adjust(const E_Comp *c, int y)
|
||||
{
|
||||
int cy;
|
||||
|
||||
ecore_evas_geometry_get(c->ee, NULL, &cy, NULL, NULL);
|
||||
return y - cy;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -17,8 +17,6 @@ e_comp_cfdata_edd_init(E_Config_DD **conf_edd, E_Config_DD **match_edd)
|
|||
E_CONFIG_VAL(D, T, borderless, CHAR);
|
||||
E_CONFIG_VAL(D, T, dialog, CHAR);
|
||||
E_CONFIG_VAL(D, T, accepts_focus, CHAR);
|
||||
E_CONFIG_VAL(D, T, vkbd, CHAR);
|
||||
E_CONFIG_VAL(D, T, quickpanel, CHAR);
|
||||
E_CONFIG_VAL(D, T, argb, CHAR);
|
||||
E_CONFIG_VAL(D, T, fullscreen, CHAR);
|
||||
E_CONFIG_VAL(D, T, modal, CHAR);
|
||||
|
|
|
@ -67,7 +67,6 @@ struct _E_Comp_Match
|
|||
char dialog; // used for borders, 0 == don't use, 1 == dialog, -1 == not dialog
|
||||
char accepts_focus; // used for borders, 0 == don't use, 1 == accepts focus, -1 == does not accept focus
|
||||
char vkbd; // used for borders, 0 == don't use, 1 == is vkbd, -1 == not vkbd
|
||||
char quickpanel; // used for borders, 0 == don't use, 1 == is quickpanel, -1 == not quickpanel
|
||||
char argb; // used for borders, overrides, popups, menus, 0 == don't use, 1 == is argb, -1 == not argb
|
||||
char fullscreen; // used for borders, 0 == don't use, 1 == is fullscreen, -1 == not fullscreen
|
||||
char modal; // used for borders, 0 == don't use, 1 == is modal, -1 == not modal
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,79 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
typedef struct E_Comp_Object_Frame E_Comp_Object_Frame;
|
||||
typedef struct E_Event_Comp_Object E_Event_Comp_Object;
|
||||
typedef void (*E_Comp_Object_Autoclose_Cb)(void *, Evas_Object *);
|
||||
typedef Eina_Bool (*E_Comp_Object_Key_Cb)(void *, Ecore_Event_Key *);
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_COMP_OBJECT_TYPE_NONE,
|
||||
E_COMP_OBJECT_TYPE_MENU,
|
||||
E_COMP_OBJECT_TYPE_POPUP,
|
||||
E_COMP_OBJECT_TYPE_LAST,
|
||||
} E_Comp_Object_Type;
|
||||
|
||||
#else
|
||||
#ifndef E_COMP_OBJECT_H
|
||||
#define E_COMP_OBJECT_H
|
||||
|
||||
#define E_COMP_OBJECT_FRAME_RESHADOW "COMP_RESHADOW"
|
||||
|
||||
struct E_Event_Comp_Object
|
||||
{
|
||||
Evas_Object *comp_object;
|
||||
};
|
||||
|
||||
struct E_Comp_Object_Frame
|
||||
{
|
||||
int l, r, t, b;
|
||||
Eina_Bool calc : 1; // inset has been calculated
|
||||
};
|
||||
|
||||
|
||||
extern EAPI int E_EVENT_COMP_OBJECT_ADD;
|
||||
|
||||
EAPI void e_comp_object_zoomap_set(Evas_Object *obj, Eina_Bool enabled);
|
||||
EAPI Evas_Object *e_comp_object_client_add(E_Client *ec);
|
||||
EAPI Evas_Object *e_comp_object_util_mirror_add(Evas_Object *obj);
|
||||
EAPI Evas_Object *e_comp_object_util_add(Evas_Object *obj, E_Comp_Object_Type type);
|
||||
EAPI void e_comp_object_frame_xy_adjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
|
||||
EAPI void e_comp_object_frame_xy_unadjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
|
||||
EAPI void e_comp_object_frame_wh_adjust(Evas_Object *obj, int w, int h, int *aw, int *ah);
|
||||
EAPI void e_comp_object_frame_wh_unadjust(Evas_Object *obj, int w, int h, int *aw, int *ah);
|
||||
EAPI E_Client *e_comp_object_client_get(Evas_Object *obj);
|
||||
EAPI E_Zone *e_comp_object_util_zone_get(Evas_Object *obj);
|
||||
EAPI void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
|
||||
EAPI void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
|
||||
EAPI void e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb, E_Comp_Object_Key_Cb cb, const void *data);
|
||||
EAPI void e_comp_object_util_center(Evas_Object *obj);
|
||||
EAPI void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
|
||||
EAPI void e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
|
||||
EAPI void e_comp_object_util_fullscreen(Evas_Object *obj);
|
||||
EAPI void e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
|
||||
EAPI Eina_Bool e_comp_object_frame_title_set(Evas_Object *obj, const char *name);
|
||||
EAPI Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
|
||||
EAPI void e_comp_object_frame_icon_update(Evas_Object *obj);
|
||||
EAPI Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
|
||||
EAPI void e_comp_object_signal_emit(Evas_Object *obj, const char *sig, const char *src);
|
||||
EAPI void e_comp_object_signal_callback_add(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb, const void *data);
|
||||
EAPI void e_comp_object_signal_callback_del(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb);
|
||||
EAPI void e_comp_object_signal_callback_del_full(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb, const void *data);
|
||||
EAPI void e_comp_object_input_area_set(Evas_Object *obj, int x, int y, int w, int h);
|
||||
EAPI void e_comp_object_damage(Evas_Object *obj, int x, int y, int w, int h);
|
||||
EAPI void e_comp_object_render_update_add(Evas_Object *obj);
|
||||
EAPI void e_comp_object_render_update_del(Evas_Object *obj);
|
||||
EAPI void e_comp_object_shape_apply(Evas_Object *obj);
|
||||
EAPI void e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
|
||||
EAPI void e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
|
||||
EAPI void e_comp_object_dirty(Evas_Object *obj);
|
||||
EAPI Eina_Bool e_comp_object_render(Evas_Object *obj);
|
||||
EAPI void e_comp_object_effect_set(Evas_Object *obj, const char *effect);
|
||||
EAPI void e_comp_object_effect_params_set(Evas_Object *obj, int id, int *params, unsigned int count);
|
||||
EAPI void e_comp_object_effect_clip(Evas_Object *obj);
|
||||
EAPI void e_comp_object_effect_unclip(Evas_Object *obj);
|
||||
EAPI void e_comp_object_effect_start(Evas_Object *obj, Edje_Signal_Cb end_cb, const void *end_data);
|
||||
EAPI void e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb EINA_UNUSED);
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
@ -1,248 +0,0 @@
|
|||
#include "e.h"
|
||||
#include "e_comp_render_update.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
static void
|
||||
_e_comp_tiles_alloc(E_Comp_Render_Update *up)
|
||||
{
|
||||
if (up->tiles) return;
|
||||
up->tiles = calloc(up->tw * up->th, sizeof(unsigned char));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
E_Comp_Render_Update *
|
||||
e_comp_render_update_new(void)
|
||||
{
|
||||
E_Comp_Render_Update *up;
|
||||
|
||||
up = calloc(1, sizeof(E_Comp_Render_Update));
|
||||
up->tsw = 32;
|
||||
up->tsh = 32;
|
||||
up->pol = E_COMP_RENDER_UPDATE_POLICY_RAW;
|
||||
return up;
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_free(E_Comp_Render_Update *up)
|
||||
{
|
||||
if (!up) return;
|
||||
free(up->tiles);
|
||||
free(up);
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_policy_set(E_Comp_Render_Update *up,
|
||||
E_Comp_Render_Update_Policy pol)
|
||||
{
|
||||
up->pol = pol;
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_tile_size_set(E_Comp_Render_Update *up,
|
||||
int tsw,
|
||||
int tsh)
|
||||
{
|
||||
if ((up->tsw == tsw) && (up->tsh == tsh)) return;
|
||||
up->tsw = tsw;
|
||||
up->tsh = tsh;
|
||||
e_comp_render_update_clear(up);
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_resize(E_Comp_Render_Update *up,
|
||||
int w,
|
||||
int h)
|
||||
{
|
||||
unsigned char *ptiles, *p, *pp;
|
||||
int ptw, pth, x, y;
|
||||
|
||||
if ((!up) || ((up->w == w) && (up->h == h))) return;
|
||||
|
||||
ptw = up->tw;
|
||||
pth = up->th;
|
||||
ptiles = up->tiles;
|
||||
|
||||
up->w = w;
|
||||
up->h = h;
|
||||
up->tw = (up->w + up->tsw - 1) / up->tsw;
|
||||
up->th = (up->h + up->tsh - 1) / up->tsh;
|
||||
up->tiles = NULL;
|
||||
_e_comp_tiles_alloc(up);
|
||||
if ((ptiles) && (up->tiles))
|
||||
{
|
||||
if (pth <= up->th)
|
||||
{
|
||||
for (y = 0; y < pth; y++)
|
||||
{
|
||||
p = up->tiles + (y * up->tw);
|
||||
pp = ptiles + (y * ptw);
|
||||
if (ptw <= up->tw)
|
||||
for (x = 0; x < ptw; x++)
|
||||
*p++ = *pp++;
|
||||
else
|
||||
for (x = 0; x < up->tw; x++)
|
||||
*p++ = *pp++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (y = 0; y < up->th; y++)
|
||||
{
|
||||
p = up->tiles + (y * up->tw);
|
||||
pp = ptiles + (y * ptw);
|
||||
if (ptw <= up->tw)
|
||||
for (x = 0; x < ptw; x++)
|
||||
*p++ = *pp++;
|
||||
else
|
||||
for (x = 0; x < up->tw; x++)
|
||||
*p++ = *pp++;
|
||||
}
|
||||
}
|
||||
}
|
||||
free(ptiles);
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_add(E_Comp_Render_Update *up,
|
||||
int x,
|
||||
int y,
|
||||
int w,
|
||||
int h)
|
||||
{
|
||||
int tx, ty, txx, tyy, xx, yy;
|
||||
unsigned char *t, *t2;
|
||||
|
||||
if ((w <= 0) || (h <= 0)) return;
|
||||
if ((up->tw <= 0) || (up->th <= 0)) return;
|
||||
|
||||
_e_comp_tiles_alloc(up);
|
||||
|
||||
E_RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, up->w, up->h);
|
||||
if ((w <= 0) || (h <= 0)) return;
|
||||
|
||||
switch (up->pol)
|
||||
{
|
||||
case E_COMP_RENDER_UPDATE_POLICY_RAW:
|
||||
break;
|
||||
|
||||
case E_COMP_RENDER_UPDATE_POLICY_HALF_WIDTH_OR_MORE_ROUND_UP_TO_FULL_WIDTH:
|
||||
if (w > (up->w / 2))
|
||||
{
|
||||
x = 0;
|
||||
w = up->w;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
tx = x / up->tsw;
|
||||
ty = y / up->tsh;
|
||||
txx = (x + w - 1) / up->tsw;
|
||||
tyy = (y + h - 1) / up->tsh;
|
||||
t = up->tiles + (ty * up->tw) + tx;
|
||||
for (yy = ty; yy <= tyy; yy++)
|
||||
{
|
||||
t2 = t;
|
||||
for (xx = tx; xx <= txx; xx++)
|
||||
{
|
||||
*t2 = 1;
|
||||
t2++;
|
||||
}
|
||||
t += up->tw;
|
||||
}
|
||||
}
|
||||
|
||||
E_Comp_Render_Update_Rect *
|
||||
e_comp_render_update_rects_get(E_Comp_Render_Update *up)
|
||||
{
|
||||
E_Comp_Render_Update_Rect *r;
|
||||
int ri = 0;
|
||||
int x, y;
|
||||
unsigned char *t, *t2, *t3;
|
||||
|
||||
if (!up->tiles) return NULL;
|
||||
r = calloc((up->tw * up->th) + 1, sizeof(E_Comp_Render_Update_Rect));
|
||||
if (!r) return NULL;
|
||||
t = up->tiles;
|
||||
for (y = 0; y < up->th; y++)
|
||||
{
|
||||
for (x = 0; x < up->tw; x++)
|
||||
{
|
||||
if (*t)
|
||||
{
|
||||
int can_expand_x = 1, can_expand_y = 1;
|
||||
int xx = 0, yy = 0;
|
||||
|
||||
t2 = t + 1;
|
||||
while (can_expand_x)
|
||||
{
|
||||
xx++;
|
||||
if ((x + xx) >= up->tw) can_expand_x = 0;
|
||||
else if (!*t2)
|
||||
can_expand_x = 0;
|
||||
if (can_expand_x) *t2 = 0;
|
||||
t2++;
|
||||
}
|
||||
t3 = t;
|
||||
while (can_expand_y)
|
||||
{
|
||||
int i;
|
||||
|
||||
yy++;
|
||||
t3 += up->tw;
|
||||
if ((y + yy) >= up->th) can_expand_y = 0;
|
||||
if (can_expand_y)
|
||||
{
|
||||
t2 = t3;
|
||||
for (i = 0; i < xx; i++)
|
||||
{
|
||||
if (!*t2)
|
||||
{
|
||||
can_expand_y = 0;
|
||||
break;
|
||||
}
|
||||
t2++;
|
||||
}
|
||||
}
|
||||
if (can_expand_y)
|
||||
{
|
||||
t2 = t3;
|
||||
for (i = 0; i < xx; i++)
|
||||
{
|
||||
*t2 = 0;
|
||||
t2++;
|
||||
}
|
||||
}
|
||||
}
|
||||
*t = 0;
|
||||
r[ri].x = x * up->tsw;
|
||||
r[ri].y = y * up->tsh;
|
||||
r[ri].w = xx * up->tsw;
|
||||
r[ri].h = yy * up->tsh;
|
||||
if ((r[ri].x + r[ri].w) > up->w) r[ri].w = up->w - r[ri].x;
|
||||
if ((r[ri].y + r[ri].h) > up->h) r[ri].h = up->h - r[ri].y;
|
||||
if ((r[ri].w <= 0) || (r[ri].h <= 0)) r[ri].w = 0;
|
||||
else ri++;
|
||||
x += xx - 1;
|
||||
t += xx - 1;
|
||||
}
|
||||
t++;
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
void
|
||||
e_comp_render_update_clear(E_Comp_Render_Update *up)
|
||||
{
|
||||
if (up->tiles)
|
||||
{
|
||||
free(up->tiles);
|
||||
up->tiles = NULL;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
typedef struct _E_Comp_Render_Update E_Comp_Render_Update;
|
||||
typedef struct _E_Comp_Render_Update_Rect E_Comp_Render_Update_Rect;
|
||||
typedef enum _E_Comp_Render_Update_Policy
|
||||
{
|
||||
E_COMP_RENDER_UPDATE_POLICY_RAW,
|
||||
E_COMP_RENDER_UPDATE_POLICY_HALF_WIDTH_OR_MORE_ROUND_UP_TO_FULL_WIDTH,
|
||||
} E_Comp_Render_Update_Policy;
|
||||
#else
|
||||
#ifndef E_COMP_RENDER_UPDATE_H
|
||||
#define E_COMP_RENDER_UPDATE_H
|
||||
|
||||
struct _E_Comp_Render_Update_Rect
|
||||
{
|
||||
int x, y, w, h;
|
||||
};
|
||||
|
||||
struct _E_Comp_Render_Update
|
||||
{
|
||||
int w, h;
|
||||
int tw, th;
|
||||
int tsw, tsh;
|
||||
unsigned char *tiles;
|
||||
E_Comp_Render_Update_Policy pol;
|
||||
};
|
||||
|
||||
E_Comp_Render_Update *e_comp_render_update_new(void);
|
||||
void e_comp_render_update_free(E_Comp_Render_Update *up);
|
||||
void e_comp_render_update_policy_set(E_Comp_Render_Update *up,
|
||||
E_Comp_Render_Update_Policy pol);
|
||||
void e_comp_render_update_tile_size_set(E_Comp_Render_Update *up,
|
||||
int tsw,
|
||||
int tsh);
|
||||
void e_comp_render_update_resize(E_Comp_Render_Update *up,
|
||||
int w,
|
||||
int h);
|
||||
void e_comp_render_update_add(E_Comp_Render_Update *up,
|
||||
int x,
|
||||
int y,
|
||||
int w,
|
||||
int h);
|
||||
E_Comp_Render_Update_Rect *e_comp_render_update_rects_get(E_Comp_Render_Update *up);
|
||||
void e_comp_render_update_clear(E_Comp_Render_Update *up);
|
||||
|
||||
#endif
|
||||
#endif
|
|
@ -1,8 +1,9 @@
|
|||
#include "e.h"
|
||||
#include "e_comp_wl.h"
|
||||
#include "e_surface.h"
|
||||
#include <sys/mman.h>
|
||||
|
||||
#define e_pixmap_parent_window_set(X, Y) e_pixmap_parent_window_set(X, (Ecore_Window)(uintptr_t)Y)
|
||||
|
||||
/* compositor function prototypes */
|
||||
static void _seat_send_updated_caps(struct wl_seat *seat);
|
||||
static void _move_resources(struct wl_list *dest, struct wl_list *src);
|
||||
|
@ -59,7 +60,6 @@ static void _e_comp_wl_cb_bind(struct wl_client *client, void *data, unsigned in
|
|||
static Eina_Bool _e_comp_wl_cb_read(void *data EINA_UNUSED, Ecore_Fd_Handler *hdl EINA_UNUSED);
|
||||
static Eina_Bool _e_comp_wl_cb_idle(void *data EINA_UNUSED);
|
||||
static Eina_Bool _e_comp_wl_cb_module_idle(void *data EINA_UNUSED);
|
||||
static Eina_Bool _e_comp_wl_cb_keymap_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED);
|
||||
|
||||
/* compositor interface prototypes */
|
||||
static void _e_comp_wl_cb_surface_create(struct wl_client *client, struct wl_resource *resource, unsigned int id);
|
||||
|
@ -225,13 +225,11 @@ static const struct wl_pointer_grab_interface _e_drag_grab_interface =
|
|||
/* local variables */
|
||||
static Ecore_Idler *_module_idler = NULL;
|
||||
|
||||
static Eina_Hash *_e_wl_border_hash = NULL;
|
||||
|
||||
/* external variables */
|
||||
EAPI E_Wayland_Compositor *_e_wl_comp;
|
||||
|
||||
/* external functions */
|
||||
EINTERN Eina_Bool
|
||||
EAPI Eina_Bool
|
||||
e_comp_wl_init(void)
|
||||
{
|
||||
int fd = 0;
|
||||
|
@ -274,7 +272,7 @@ e_comp_wl_init(void)
|
|||
* NB: This is interesting....if we try to eglGetDisplay and pass in the
|
||||
* wayland display, then EGL fails due to XCB not owning the event queue.
|
||||
* If we pass it a NULL, it inits just fine */
|
||||
_e_wl_comp->egl.display = eglGetDisplay((EGLNativeDisplayType)ecore_x_display_get());
|
||||
_e_wl_comp->egl.display = eglGetDisplay(NULL);
|
||||
if (_e_wl_comp->egl.display == EGL_NO_DISPLAY)
|
||||
ERR("Could not get EGL display: %m");
|
||||
else
|
||||
|
@ -305,44 +303,6 @@ e_comp_wl_init(void)
|
|||
ERR("Could not choose EGL config: %m");
|
||||
eglTerminate(_e_wl_comp->egl.display);
|
||||
}
|
||||
|
||||
/* if (!eglBindAPI(EGL_OPENGL_ES_API)) */
|
||||
/* { */
|
||||
/* ERR("Could not bind EGL API: %m"); */
|
||||
/* eglTerminate(_e_wl_comp->egl.display); */
|
||||
/* } */
|
||||
|
||||
/* exts = (const char *)eglQueryString(_e_wl_comp->egl.display, EGL_EXTENSIONS); */
|
||||
/* if (!exts) */
|
||||
/* { */
|
||||
/* ERR("Could not get EGL Extensions: %m"); */
|
||||
/* eglTerminate(_e_wl_comp->egl.display); */
|
||||
/* } */
|
||||
/* else */
|
||||
/* { */
|
||||
/* if (strstr(exts, "EGL_WL_bind_wayland_display")) */
|
||||
/* { */
|
||||
/* _e_wl_comp->egl.bind_display = */
|
||||
/* (void *)eglGetProcAddress("eglBindWaylandDisplayWL"); */
|
||||
/* _e_wl_comp->egl.unbind_display = */
|
||||
/* (void *)eglGetProcAddress("eglUnbindWaylandDisplayWL"); */
|
||||
/* } */
|
||||
/* } */
|
||||
|
||||
/* if (_e_wl_comp->egl.bind_display) */
|
||||
/* { */
|
||||
/* EGLBoolean ret; */
|
||||
|
||||
/* ret = _e_wl_comp->egl.bind_display(_e_wl_comp->egl.display, */
|
||||
/* _e_wl_comp->wl.display); */
|
||||
/* if (!ret) */
|
||||
/* { */
|
||||
/* ERR("Could not bind EGL Wayland Display: %m"); */
|
||||
/* _e_wl_comp->egl.bound = EINA_FALSE; */
|
||||
/* } */
|
||||
/* else */
|
||||
/* _e_wl_comp->egl.bound = EINA_TRUE; */
|
||||
/* } */
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
@ -354,11 +314,12 @@ e_comp_wl_init(void)
|
|||
goto err;
|
||||
}
|
||||
|
||||
#ifndef WAYLAND_ONLY
|
||||
/* setup keymap_change event handler */
|
||||
_e_wl_comp->kbd_handler =
|
||||
ecore_event_handler_add(ECORE_X_EVENT_XKB_STATE_NOTIFY,
|
||||
_e_comp_wl_cb_keymap_changed, NULL);
|
||||
|
||||
e_comp_wl_cb_keymap_changed, NULL);
|
||||
#endif
|
||||
/* get the displays event loop */
|
||||
_e_wl_comp->wl.loop = wl_display_get_event_loop(_e_wl_comp->wl.display);
|
||||
|
||||
|
@ -382,9 +343,11 @@ e_comp_wl_init(void)
|
|||
goto err;
|
||||
}
|
||||
|
||||
wl_event_loop_dispatch(_e_wl_comp->wl.loop, 0);
|
||||
#ifndef WAYLAND_ONLY
|
||||
/* add an idler for deferred shell module loading */
|
||||
_module_idler = ecore_idler_add(_e_comp_wl_cb_module_idle, NULL);
|
||||
|
||||
#endif
|
||||
/* return success */
|
||||
return EINA_TRUE;
|
||||
|
||||
|
@ -392,9 +355,10 @@ err:
|
|||
/* remove kbd handler */
|
||||
if (_e_wl_comp->kbd_handler)
|
||||
ecore_event_handler_del(_e_wl_comp->kbd_handler);
|
||||
|
||||
#ifndef WAYLAND_ONLY
|
||||
/* remove the module idler */
|
||||
if (_module_idler) ecore_idler_del(_module_idler);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WAYLAND_EGL
|
||||
/* unbind wayland display */
|
||||
|
@ -452,8 +416,6 @@ e_comp_wl_shutdown(void)
|
|||
E_FREE(_e_wl_comp);
|
||||
}
|
||||
|
||||
E_FREE_FUNC(_e_wl_border_hash, eina_hash_free);
|
||||
|
||||
/* disable the loaded shell module */
|
||||
/* TODO: we should have a config variable somewhere to store which
|
||||
* shell we want to unload (tablet, mobile, etc) */
|
||||
|
@ -461,27 +423,16 @@ e_comp_wl_shutdown(void)
|
|||
e_module_disable(mod);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_wl_border_surface_add(Ecore_Window win, const E_Border *bd)
|
||||
#ifdef WAYLAND_ONLY
|
||||
EAPI int
|
||||
e_comp_wl_input_read(int fd EINA_UNUSED, unsigned int mask EINA_UNUSED, void *data)
|
||||
{
|
||||
if (!_e_wl_border_hash)
|
||||
_e_wl_border_hash = eina_hash_int32_new(NULL);
|
||||
eina_hash_add(_e_wl_border_hash, &win, bd);
|
||||
}
|
||||
E_Wayland_Compositor *wl_comp = data;
|
||||
|
||||
EAPI void
|
||||
e_comp_wl_border_surface_del(Ecore_Window win)
|
||||
{
|
||||
if (!_e_wl_border_hash) return;
|
||||
eina_hash_del_by_key(_e_wl_border_hash, &win);
|
||||
}
|
||||
|
||||
EAPI E_Border *
|
||||
e_comp_wl_border_surface_find(Ecore_Window win)
|
||||
{
|
||||
if (!_e_wl_border_hash) return NULL;
|
||||
return eina_hash_find(_e_wl_border_hash, &win);
|
||||
wl_event_loop_dispatch(wl_comp->wl.input_loop, 0);
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
EAPI void
|
||||
wl_seat_init(struct wl_seat *seat)
|
||||
|
@ -872,6 +823,44 @@ e_comp_wl_time_get(void)
|
|||
return (tm.tv_sec * 1000 + tm.tv_usec / 1000);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_wl_mouse_button(struct wl_resource *resource, uint32_t serial, uint32_t timestamp, uint32_t button, uint32_t state_w)
|
||||
{
|
||||
switch (button)
|
||||
{
|
||||
case BTN_LEFT:
|
||||
case BTN_MIDDLE:
|
||||
case BTN_RIGHT:
|
||||
wl_pointer_send_button(resource, serial, timestamp,
|
||||
button, state_w);
|
||||
break;
|
||||
case 4:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(resource, timestamp,
|
||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||
-wl_fixed_from_int(1));
|
||||
break;
|
||||
case 5:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(resource, timestamp,
|
||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||
wl_fixed_from_int(1));
|
||||
break;
|
||||
case 6:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(resource, timestamp,
|
||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||
-wl_fixed_from_int(1));
|
||||
break;
|
||||
case 7:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(resource, timestamp,
|
||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||
wl_fixed_from_int(1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_comp_wl_input_modifiers_update(unsigned int serial)
|
||||
{
|
||||
|
@ -1003,47 +992,8 @@ _default_grab_button(struct wl_pointer_grab *grab, uint32_t timestamp, uint32_t
|
|||
serial = wl_display_next_serial(_e_wl_comp->wl.display);
|
||||
|
||||
wl_resource_for_each(res, lst)
|
||||
{
|
||||
switch (button)
|
||||
{
|
||||
case BTN_LEFT:
|
||||
case BTN_MIDDLE:
|
||||
case BTN_RIGHT:
|
||||
wl_pointer_send_button(res, serial, timestamp,
|
||||
button, state_w);
|
||||
break;
|
||||
case 4:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(res, timestamp,
|
||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||
-wl_fixed_from_int(1));
|
||||
break;
|
||||
case 5:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(res, timestamp,
|
||||
WL_POINTER_AXIS_VERTICAL_SCROLL,
|
||||
wl_fixed_from_int(1));
|
||||
break;
|
||||
case 6:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(res, timestamp,
|
||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||
-wl_fixed_from_int(1));
|
||||
break;
|
||||
case 7:
|
||||
if (state_w)
|
||||
wl_pointer_send_axis(res, timestamp,
|
||||
WL_POINTER_AXIS_HORIZONTAL_SCROLL,
|
||||
wl_fixed_from_int(1));
|
||||
break;
|
||||
}
|
||||
}
|
||||
e_comp_wl_mouse_button(res, serial, timestamp, button, state_w);
|
||||
}
|
||||
|
||||
if (pointer->button_count == 0 &&
|
||||
state == WL_POINTER_BUTTON_STATE_RELEASED)
|
||||
wl_pointer_set_focus(pointer, pointer->current,
|
||||
pointer->current_x, pointer->current_y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1600,8 +1550,8 @@ _e_comp_wl_cb_module_idle(void *data EINA_UNUSED)
|
|||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_comp_wl_cb_keymap_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
||||
EAPI Eina_Bool
|
||||
e_comp_wl_cb_keymap_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED)
|
||||
{
|
||||
struct xkb_keymap *keymap;
|
||||
|
||||
|
@ -1679,8 +1629,13 @@ _e_comp_wl_cb_surface_create(struct wl_client *client, struct wl_resource *resou
|
|||
wl_resource_post_no_memory(resource);
|
||||
return;
|
||||
}
|
||||
ews->id = id;
|
||||
|
||||
ews->wl.client = client;
|
||||
ews->pixmap = e_pixmap_find(E_PIXMAP_TYPE_WL, id);
|
||||
if (!ews->pixmap)
|
||||
ews->pixmap = e_pixmap_new(E_PIXMAP_TYPE_WL, id);
|
||||
e_pixmap_parent_window_set(ews->pixmap, ews);
|
||||
e_pixmap_usable_set(ews->pixmap, 1);
|
||||
/* initialize the destroy signal */
|
||||
wl_signal_init(&ews->wl.destroy_signal);
|
||||
|
||||
|
@ -1726,6 +1681,8 @@ _e_comp_wl_cb_surface_destroy(struct wl_resource *resource)
|
|||
E_Wayland_Surface *ews = NULL;
|
||||
E_Wayland_Surface_Frame_Callback *cb = NULL, *ncb = NULL;
|
||||
struct wl_pointer *pointer;
|
||||
Eina_Inlist *l;
|
||||
E_Wayland_Buffer *buffer;
|
||||
|
||||
/* try to get the surface from this resource */
|
||||
if (!(ews = wl_resource_get_user_data(resource)))
|
||||
|
@ -1745,6 +1702,10 @@ _e_comp_wl_cb_surface_destroy(struct wl_resource *resource)
|
|||
{
|
||||
if (ews->unmap) ews->unmap(ews);
|
||||
}
|
||||
if (ews->buffer_reference.buffer)
|
||||
ews->buffer_reference.buffer->ews = NULL;
|
||||
if (ews->pending.buffer)
|
||||
ews->pending.buffer->ews = NULL;
|
||||
|
||||
/* loop any pending surface frame callbacks and destroy them */
|
||||
wl_list_for_each_safe(cb, ncb, &ews->pending.frames, wl.link)
|
||||
|
@ -1772,11 +1733,23 @@ _e_comp_wl_cb_surface_destroy(struct wl_resource *resource)
|
|||
wl_list_for_each_safe(cb, ncb, &ews->wl.frames, wl.link)
|
||||
wl_resource_destroy(cb->wl.resource);
|
||||
|
||||
EINA_INLIST_FOREACH_SAFE(ews->buffers, l, buffer)
|
||||
{
|
||||
buffer->ews = NULL;
|
||||
ews->buffers = eina_inlist_remove(ews->buffers, EINA_INLIST_GET(buffer));
|
||||
}
|
||||
if (e_comp_get(NULL)->pointer->pixmap == ews->pixmap)
|
||||
{
|
||||
e_pointer_image_set(e_comp_get(NULL)->pointer, NULL, 0, 0, 0, 0);
|
||||
}
|
||||
e_pixmap_parent_window_set(ews->pixmap, NULL);
|
||||
e_pixmap_free(ews->pixmap);
|
||||
|
||||
/* remove this surface from the compositor's list of surfaces */
|
||||
_e_wl_comp->surfaces = eina_inlist_remove(_e_wl_comp->surfaces, EINA_INLIST_GET(ews));
|
||||
|
||||
/* free the allocated surface structure */
|
||||
E_FREE(ews);
|
||||
free(ews);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1999,6 +1972,7 @@ _e_comp_wl_input_keymap_get(void)
|
|||
names.layout = strdup(kbd_layout->name);
|
||||
}
|
||||
|
||||
#ifndef WAYLAND_ONLY
|
||||
/* if we are running under X11, try to get the xkb rule names atom */
|
||||
if (getenv("DISPLAY"))
|
||||
{
|
||||
|
@ -2023,7 +1997,7 @@ _e_comp_wl_input_keymap_get(void)
|
|||
|
||||
if ((data) && (len > 0))
|
||||
{
|
||||
names.rules = strdup((const char *)data);
|
||||
names.rules = (char*)data;
|
||||
data += strlen((const char *)data) + 1;
|
||||
if (!names.model)
|
||||
names.model = strdup((const char *)data);
|
||||
|
@ -2032,6 +2006,7 @@ _e_comp_wl_input_keymap_get(void)
|
|||
names.layout = strdup((const char *)data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
printf("Keymap\n");
|
||||
printf("\tRules: %s\n", names.rules);
|
||||
|
@ -2306,50 +2281,17 @@ _e_comp_wl_pointer_configure(E_Wayland_Surface *ews, Evas_Coord x, Evas_Coord y,
|
|||
/* do we have a focused surface ? */
|
||||
if (!input->wl.seat.pointer->focus) return;
|
||||
|
||||
if ((focus = wl_resource_get_user_data(input->wl.seat.pointer->focus)))
|
||||
{
|
||||
/* NB: Ideally, I wanted to use the e_pointer methods here so that
|
||||
* the cursor would match the E theme, however Wayland currently
|
||||
* provides NO Method to get the cursor name :( so we are stuck
|
||||
* using the pixels from their cursor surface */
|
||||
focus = wl_resource_get_user_data(input->wl.seat.pointer->focus);
|
||||
if (!focus) return;
|
||||
/* NB: Ideally, I wanted to use the e_pointer methods here so that
|
||||
* the cursor would match the E theme, however Wayland currently
|
||||
* provides NO Method to get the cursor name :( so we are stuck
|
||||
* using the pixels from their cursor surface */
|
||||
|
||||
/* is it mapped ? */
|
||||
if ((focus->mapped) && (focus->ee))
|
||||
{
|
||||
Ecore_Window win;
|
||||
|
||||
/* try to get the ecore_window */
|
||||
if ((win = ecore_evas_window_get(focus->ee)))
|
||||
{
|
||||
E_Wayland_Buffer_Reference *ref;
|
||||
struct wl_shm_buffer *shm_buffer;
|
||||
void *pixels;
|
||||
|
||||
ref = &ews->buffer_reference;
|
||||
|
||||
shm_buffer = wl_shm_buffer_get(ref->buffer->wl.resource);
|
||||
|
||||
/* grab the pixels from the cursor surface */
|
||||
if ((pixels = wl_shm_buffer_get_data(shm_buffer)))
|
||||
{
|
||||
Ecore_X_Cursor cur;
|
||||
|
||||
/* create the new X cursor with this image */
|
||||
cur = ecore_x_cursor_new(win, pixels, w, h,
|
||||
input->pointer.hot.x,
|
||||
input->pointer.hot.y);
|
||||
|
||||
/* set the cursor on this window */
|
||||
ecore_x_window_cursor_set(win, cur);
|
||||
|
||||
/* free the cursor */
|
||||
ecore_x_cursor_free(cur);
|
||||
}
|
||||
else
|
||||
ecore_x_window_cursor_set(win, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
/* is it mapped ? */
|
||||
if ((!focus->mapped) || (!focus->ec)) return;
|
||||
e_pixmap_dirty(ews->pixmap);
|
||||
e_pointer_image_set(focus->ec->comp->pointer, ews->pixmap, w, h, input->pointer.hot.x, input->pointer.hot.y);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -2430,7 +2372,11 @@ _e_comp_wl_pointer_cb_cursor_set(struct wl_client *client, struct wl_resource *r
|
|||
input->pointer.surface = ews;
|
||||
|
||||
/* if we don't have a pointer surface, we are done here */
|
||||
if (!ews) return;
|
||||
if (!ews)
|
||||
{
|
||||
e_pointer_hide(e_comp_get(NULL)->pointer);
|
||||
return;
|
||||
}
|
||||
|
||||
/* set the destroy listener */
|
||||
wl_signal_add(&ews->wl.destroy_signal,
|
||||
|
@ -2566,6 +2512,7 @@ _e_comp_wl_surface_buffer_reference(E_Wayland_Buffer_Reference *ref, E_Wayland_B
|
|||
wl_signal_add(&buffer->wl.destroy_signal, &ref->destroy_listener);
|
||||
}
|
||||
|
||||
//INF("CURRENT BUFFER SWAP: %p->%p", ref->buffer, buffer);
|
||||
ref->buffer = buffer;
|
||||
ref->destroy_listener.notify =
|
||||
_e_comp_wl_surface_buffer_reference_cb_destroy;
|
||||
|
@ -2611,12 +2558,32 @@ _e_comp_wl_surface_buffer_resource(struct wl_resource *resource)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_comp_wl_surface_buffer_cb_destroy(struct wl_listener *listener, void *data EINA_UNUSED)
|
||||
_e_comp_wl_surface_buffer_cb_destroy(struct wl_listener *listener, void *data)
|
||||
{
|
||||
E_Wayland_Buffer *buffer;
|
||||
|
||||
buffer = container_of(listener, E_Wayland_Buffer, wl.destroy_listener);
|
||||
|
||||
wl_signal_emit(&buffer->wl.destroy_signal, buffer);
|
||||
if (buffer->ews)
|
||||
{
|
||||
if (buffer->ews->ec && buffer->ews->pixmap && (e_pixmap_resource_get(buffer->ews->pixmap) == data) &&
|
||||
evas_object_visible_get(buffer->ews->ec->frame))
|
||||
{
|
||||
//INF("DESTROYED CURRENT BUFFER: %s", e_pixmap_dirty_get(buffer->ews->pixmap) ? "DIRTY" : "CLEAN");
|
||||
e_pixmap_usable_set(buffer->ews->pixmap, 0);
|
||||
if (!e_pixmap_image_exists(buffer->ews->pixmap))
|
||||
{
|
||||
e_pixmap_image_refresh(buffer->ews->pixmap);
|
||||
}
|
||||
|
||||
e_pixmap_image_clear(buffer->ews->pixmap, 0);
|
||||
e_comp_object_damage(buffer->ews->ec->frame, 0, 0, buffer->ews->ec->client.w, buffer->ews->ec->client.h);
|
||||
e_comp_object_render(buffer->ews->ec->frame);
|
||||
e_comp_object_render_update_del(buffer->ews->ec->frame);
|
||||
}
|
||||
buffer->ews->buffers = eina_inlist_remove(buffer->ews->buffers, EINA_INLIST_GET(buffer));
|
||||
}
|
||||
E_FREE(buffer);
|
||||
}
|
||||
|
||||
|
@ -2637,10 +2604,27 @@ _e_comp_wl_surface_cb_attach(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
if (!(ews = wl_resource_get_user_data(resource))) return;
|
||||
|
||||
if (buffer_resource)
|
||||
buffer = _e_comp_wl_surface_buffer_resource(buffer_resource);
|
||||
{
|
||||
buffer = _e_comp_wl_surface_buffer_resource(buffer_resource);
|
||||
if (ews->ec && (!ews->buffer_reference.buffer))
|
||||
{
|
||||
e_pixmap_usable_set(ews->pixmap, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* reference any existing buffers */
|
||||
_e_comp_wl_surface_buffer_reference(&ews->buffer_reference, buffer);
|
||||
if (buffer)
|
||||
{
|
||||
if (!buffer->ews)
|
||||
ews->buffers = eina_inlist_append(ews->buffers, EINA_INLIST_GET(buffer));
|
||||
buffer->ews = ews;
|
||||
}
|
||||
//INF("ATTACHED NEW BUFFER");
|
||||
e_pixmap_dirty(ews->pixmap);
|
||||
//if (ews->ec)
|
||||
//e_comp_object_damage(ews->ec->frame, 0, 0, ews->ec->client.w, ews->ec->client.h);
|
||||
|
||||
|
||||
/* if we are setting a null buffer, then unmap the surface */
|
||||
if (!buffer)
|
||||
|
@ -2674,6 +2658,7 @@ _e_comp_wl_surface_cb_damage(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
|
||||
/* try to cast the resource data to our surface structure */
|
||||
if (!(ews = wl_resource_get_user_data(resource))) return;
|
||||
e_pixmap_image_clear(ews->pixmap, 1);
|
||||
|
||||
/* tell pixman to add this damage to pending */
|
||||
pixman_region32_union_rect(&ews->pending.damage, &ews->pending.damage,
|
||||
|
@ -2787,42 +2772,10 @@ _e_comp_wl_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
if (ews->unmap) ews->unmap(ews);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ews->obj)
|
||||
{
|
||||
E_Wayland_Buffer *buff;
|
||||
struct wl_shm_buffer *shm_buffer;
|
||||
void *data;
|
||||
|
||||
buff = ews->pending.buffer;
|
||||
|
||||
shm_buffer = wl_shm_buffer_get(buff->wl.resource);
|
||||
|
||||
bw = wl_shm_buffer_get_width(shm_buffer);
|
||||
bh = wl_shm_buffer_get_height(shm_buffer);
|
||||
|
||||
/* grab the pixel data from the buffer */
|
||||
data = wl_shm_buffer_get_data(shm_buffer);
|
||||
|
||||
/* send the pixel data to the smart object */
|
||||
e_surface_image_set(ews->obj, bw, bh, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* if we have a reference to a buffer, get it's size */
|
||||
if (&ews->buffer_reference)
|
||||
{
|
||||
E_Wayland_Buffer *buff;
|
||||
struct wl_shm_buffer *shm_buffer;
|
||||
|
||||
buff = ews->buffer_reference.buffer;
|
||||
|
||||
shm_buffer = wl_shm_buffer_get(buff->wl.resource);
|
||||
bw = wl_shm_buffer_get_width(shm_buffer);
|
||||
bh = wl_shm_buffer_get_height(shm_buffer);
|
||||
}
|
||||
e_pixmap_dirty(ews->pixmap);
|
||||
e_pixmap_refresh(ews->pixmap);
|
||||
e_pixmap_size_get(ews->pixmap, &bw, &bh);
|
||||
|
||||
/* if we have a new pending buffer, call configure */
|
||||
if ((ews->configure) && (ews->pending.new_buffer))
|
||||
|
@ -2849,15 +2802,18 @@ _e_comp_wl_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
pixman_region32_init(&ews->pending.damage);
|
||||
|
||||
/* get the extent of the damage region */
|
||||
rects = pixman_region32_rectangles(&ews->region.damage, &n);
|
||||
while (n--)
|
||||
if (ews->ec)
|
||||
{
|
||||
pixman_box32_t *r;
|
||||
rects = pixman_region32_rectangles(&ews->region.damage, &n);
|
||||
while (n--)
|
||||
{
|
||||
pixman_box32_t *r;
|
||||
|
||||
r = &rects[n];
|
||||
r = &rects[n];
|
||||
|
||||
/* send damages to the image */
|
||||
e_surface_damage_add(ews->obj, r->x1, r->y1, r->x2, r->y2);
|
||||
/* send damages to the image */
|
||||
e_comp_object_damage(ews->ec->frame, r->x1, r->y1, r->x2, r->y2);
|
||||
}
|
||||
}
|
||||
|
||||
/* tell pixman we are finished with this region */
|
||||
|
@ -2898,9 +2854,9 @@ _e_comp_wl_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
rects = pixman_region32_extents(&ews->region.input);
|
||||
|
||||
/* update the smart object's input region */
|
||||
if (ews->obj)
|
||||
e_surface_input_set(ews->obj, rects->x1, rects->y1,
|
||||
rects->x2, rects->y2);
|
||||
if (ews->ec)
|
||||
e_comp_object_input_area_set(ews->ec->frame, rects->x1, rects->y1,
|
||||
rects->x2, rects->y2);
|
||||
}
|
||||
|
||||
/* put any pending frame callbacks into active list */
|
||||
|
@ -2909,6 +2865,10 @@ _e_comp_wl_surface_cb_commit(struct wl_client *client EINA_UNUSED, struct wl_res
|
|||
/* clear list of pending frame callbacks */
|
||||
wl_list_init(&ews->pending.frames);
|
||||
|
||||
ews->updates = 1;
|
||||
|
||||
_e_wl_comp->surfaces = eina_inlist_promote(_e_wl_comp->surfaces, EINA_INLIST_GET(ews));
|
||||
|
||||
/* TODO: schedule repaint ?? */
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
# define E_COMP_WL_H
|
||||
|
||||
# define WL_HIDE_DEPRECATED
|
||||
|
||||
# include <pixman.h>
|
||||
# include <wayland-server.h>
|
||||
# include <xkbcommon/xkbcommon.h>
|
||||
|
@ -253,6 +252,7 @@ struct _E_Wayland_Surface_Frame_Callback
|
|||
|
||||
struct _E_Wayland_Buffer
|
||||
{
|
||||
EINA_INLIST;
|
||||
struct
|
||||
{
|
||||
struct wl_resource *resource;
|
||||
|
@ -267,6 +267,7 @@ struct _E_Wayland_Buffer
|
|||
|
||||
int w, h;
|
||||
unsigned int busy_count;
|
||||
E_Wayland_Surface *ews;
|
||||
};
|
||||
|
||||
struct _E_Wayland_Buffer_Reference
|
||||
|
@ -281,6 +282,7 @@ struct _E_Wayland_Surface
|
|||
Ecore_Window id;
|
||||
struct
|
||||
{
|
||||
struct wl_client *client;
|
||||
struct wl_resource *surface;
|
||||
struct wl_signal destroy_signal;
|
||||
struct wl_list link, frames;
|
||||
|
@ -311,18 +313,13 @@ struct _E_Wayland_Surface
|
|||
pixman_region32_t damage, clip;
|
||||
} region;
|
||||
|
||||
/* smart object for this surface */
|
||||
Evas_Object *obj;
|
||||
|
||||
Ecore_Evas *ee;
|
||||
Ecore_X_Window evas_win;
|
||||
Evas *evas;
|
||||
|
||||
E_Border *bd;
|
||||
Eina_List *bd_hooks;
|
||||
E_Client *ec;
|
||||
E_Pixmap *pixmap;
|
||||
Eina_Inlist *buffers;
|
||||
|
||||
E_Wayland_Shell_Surface *shell_surface;
|
||||
Eina_Bool mapped : 1;
|
||||
Eina_Bool updates : 1; //surface has render updates
|
||||
|
||||
E_Wayland_Input *input;
|
||||
|
||||
|
@ -367,7 +364,7 @@ struct _E_Wayland_Shell_Surface
|
|||
E_Wayland_Surface *surface, *parent;
|
||||
E_Wayland_Shell_Surface_Type type, next_type;
|
||||
|
||||
char *title, *clas;
|
||||
Eina_Stringshare *title, *clas;
|
||||
|
||||
Eina_Bool active : 1;
|
||||
|
||||
|
@ -476,6 +473,15 @@ struct _E_Wayland_Compositor
|
|||
|
||||
E_Wayland_Shell_Interface shell_interface;
|
||||
|
||||
#ifdef WAYLAND_ONLY
|
||||
Eina_Bool focus : 1;
|
||||
|
||||
unsigned int output_pool;
|
||||
|
||||
struct xkb_rule_names xkb_names;
|
||||
struct xkb_context *xkb_context;
|
||||
#endif
|
||||
|
||||
Ecore_Event_Handler *kbd_handler;
|
||||
Ecore_Fd_Handler *fd_handler;
|
||||
Ecore_Idler *idler;
|
||||
|
@ -485,8 +491,6 @@ struct _E_Wayland_Compositor
|
|||
Eina_Inlist *surfaces;
|
||||
Eina_List *seats;
|
||||
|
||||
struct wl_list outputs;
|
||||
|
||||
void (*ping_cb) (E_Wayland_Surface *ews, unsigned int serial);
|
||||
};
|
||||
|
||||
|
@ -585,12 +589,12 @@ struct _E_Wayland_Plane
|
|||
/* external variables */
|
||||
extern EAPI E_Wayland_Compositor *_e_wl_comp;
|
||||
|
||||
EINTERN Eina_Bool e_comp_wl_init(void);
|
||||
EAPI Eina_Bool e_comp_wl_init(void);
|
||||
EINTERN void e_comp_wl_shutdown(void);
|
||||
|
||||
EAPI void e_comp_wl_border_surface_add(Ecore_Window win, const E_Border *bd);
|
||||
EAPI void e_comp_wl_border_surface_del(Ecore_Window win);
|
||||
EAPI E_Border *e_comp_wl_border_surface_find(Ecore_Window win);
|
||||
#ifdef WAYLAND_ONLY
|
||||
EAPI int e_comp_wl_input_read(int fd EINA_UNUSED, unsigned int mask EINA_UNUSED, void *data);
|
||||
#endif
|
||||
|
||||
EAPI void wl_seat_init(struct wl_seat *seat);
|
||||
EAPI void wl_seat_release(struct wl_seat *seat);
|
||||
|
@ -621,5 +625,8 @@ EAPI void wl_seat_set_selection(struct wl_seat *seat, struct wl_data_source *sou
|
|||
EAPI unsigned int e_comp_wl_time_get(void);
|
||||
EAPI void e_comp_wl_input_modifiers_update(unsigned int serial);
|
||||
|
||||
EAPI void e_comp_wl_mouse_button(struct wl_resource *resource, uint32_t serial, uint32_t timestamp, uint32_t button, uint32_t state_w);
|
||||
EAPI Eina_Bool e_comp_wl_cb_keymap_changed(void *data EINA_UNUSED, int type EINA_UNUSED, void *event EINA_UNUSED);
|
||||
|
||||
# endif
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,113 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
# include <Ecore_X.h>
|
||||
# include "e_atoms.h"
|
||||
# include "e_hints.h"
|
||||
# include "e_randr.h"
|
||||
|
||||
#else
|
||||
# ifndef E_COMP_X_H
|
||||
# define E_COMP_X_H
|
||||
# include <Ecore_X.h>
|
||||
# include "e_atoms.h"
|
||||
# include "e_hints.h"
|
||||
# include "e_randr.h"
|
||||
|
||||
struct _E_Comp_Client_Data
|
||||
{
|
||||
Ecore_X_Window lock_win;
|
||||
|
||||
Ecore_X_Damage damage; // damage region
|
||||
Ecore_X_Visual vis; // window visual
|
||||
Ecore_X_Colormap cmap; // colormap of window
|
||||
|
||||
#if 0 //NOT USED
|
||||
Ecore_X_Pixmap cache_pixmap; // the cached pixmap (1/nth the dimensions)
|
||||
int cache_w, cache_h; // cached pixmap size
|
||||
#endif
|
||||
|
||||
Ecore_X_Image *xim; // x image - software fallback
|
||||
Ecore_X_Sync_Alarm alarm;
|
||||
Ecore_X_Sync_Counter sync_counter; // netwm sync counter
|
||||
|
||||
unsigned char misses; // number of sync misses
|
||||
|
||||
Ecore_X_Window_Attributes initial_attributes;
|
||||
|
||||
unsigned int move_counter; //reduce X calls when moving a window
|
||||
unsigned int internal_props_set; //don't need to refetch our own internal props
|
||||
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char conformant : 1;
|
||||
} fetch;
|
||||
unsigned char conformant : 1;
|
||||
} conformant;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
struct
|
||||
{
|
||||
unsigned int major : 1;
|
||||
unsigned int minor : 1;
|
||||
} priority;
|
||||
unsigned char quickpanel : 1;
|
||||
unsigned char zone : 1;
|
||||
} fetch;
|
||||
Ecore_X_Illume_Quickpanel_State state;
|
||||
struct
|
||||
{
|
||||
unsigned int major : 1;
|
||||
unsigned int minor : 1;
|
||||
} priority;
|
||||
unsigned char quickpanel : 1;
|
||||
int zone;
|
||||
} quickpanel;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char drag : 1;
|
||||
unsigned char locked : 1;
|
||||
} fetch;
|
||||
unsigned char drag : 1;
|
||||
unsigned char locked : 1;
|
||||
} drag;
|
||||
struct
|
||||
{
|
||||
struct
|
||||
{
|
||||
unsigned char state : 1;
|
||||
} fetch;
|
||||
Ecore_X_Illume_Window_State state;
|
||||
} win_state;
|
||||
} illume;
|
||||
|
||||
Eina_Bool moving : 1;
|
||||
Eina_Bool first_map : 1;
|
||||
Eina_Bool change_icon : 1;
|
||||
Eina_Bool need_reparent : 1;
|
||||
Eina_Bool reparented : 1;
|
||||
Eina_Bool deleted : 1;
|
||||
Eina_Bool button_grabbed : 1;
|
||||
Eina_Bool fetch_exe : 1;
|
||||
Eina_Bool set_win_type : 1;
|
||||
Eina_Bool frame_update : 1;
|
||||
|
||||
#ifdef COMP_X_SHAPE_INPUT_ERROR_CATCH
|
||||
double last_input_time;
|
||||
unsigned last_input_within_10;
|
||||
#endif
|
||||
};
|
||||
|
||||
EINTERN Eina_Bool e_comp_x_init(void);
|
||||
EINTERN void e_comp_x_shutdown(void);
|
||||
|
||||
EAPI void e_alert_composite_win(Ecore_X_Window root, Ecore_X_Window win);
|
||||
# endif
|
||||
#endif
|
|
@ -1,6 +1,6 @@
|
|||
#include "e.h"
|
||||
|
||||
#if ((E18_PROFILE >= LOWRES_PDA) && (E18_PROFILE <= HIRES_PDA))
|
||||
#if ((E19_PROFILE >= LOWRES_PDA) && (E19_PROFILE <= HIRES_PDA))
|
||||
#define DEF_MENUCLICK 1.25
|
||||
#else
|
||||
#define DEF_MENUCLICK 0.25
|
||||
|
@ -173,7 +173,8 @@ _e_config_edd_init(Eina_Bool old)
|
|||
#define D _e_config_shelf_edd
|
||||
E_CONFIG_VAL(D, T, name, STR);
|
||||
E_CONFIG_VAL(D, T, id, INT);
|
||||
E_CONFIG_VAL(D, T, container, INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(D, T, "container", manager, EET_T_INT);
|
||||
E_CONFIG_VAL(D, T, manager /*container */, INT);
|
||||
E_CONFIG_VAL(D, T, zone, INT);
|
||||
E_CONFIG_VAL(D, T, layer, INT);
|
||||
E_CONFIG_VAL(D, T, popup, UCHAR);
|
||||
|
@ -202,7 +203,8 @@ _e_config_edd_init(Eina_Bool old)
|
|||
#undef D
|
||||
#define T E_Config_Desktop_Background
|
||||
#define D _e_config_desktop_bg_edd
|
||||
E_CONFIG_VAL(D, T, container, INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(D, T, "container", manager, EET_T_INT);
|
||||
E_CONFIG_VAL(D, T, manager /*container */, INT);
|
||||
E_CONFIG_VAL(D, T, zone, INT);
|
||||
E_CONFIG_VAL(D, T, desk_x, INT);
|
||||
E_CONFIG_VAL(D, T, desk_y, INT);
|
||||
|
@ -213,7 +215,8 @@ _e_config_edd_init(Eina_Bool old)
|
|||
#undef D
|
||||
#define T E_Config_Desktop_Name
|
||||
#define D _e_config_desktop_name_edd
|
||||
E_CONFIG_VAL(D, T, container, INT);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(D, T, "container", manager, EET_T_INT);
|
||||
E_CONFIG_VAL(D, T, manager /*container */, INT);
|
||||
E_CONFIG_VAL(D, T, zone, INT);
|
||||
E_CONFIG_VAL(D, T, desk_x, INT);
|
||||
E_CONFIG_VAL(D, T, desk_y, INT);
|
||||
|
@ -224,7 +227,7 @@ _e_config_edd_init(Eina_Bool old)
|
|||
#undef D
|
||||
#define T E_Config_Desktop_Window_Profile
|
||||
#define D _e_config_desktop_window_profile_edd
|
||||
E_CONFIG_VAL(D, T, container, INT);
|
||||
E_CONFIG_VAL(D, T, manager, INT);
|
||||
E_CONFIG_VAL(D, T, zone, INT);
|
||||
E_CONFIG_VAL(D, T, desk_x, INT);
|
||||
E_CONFIG_VAL(D, T, desk_y, INT);
|
||||
|
@ -237,14 +240,6 @@ _e_config_edd_init(Eina_Bool old)
|
|||
#define D _e_config_path_append_edd
|
||||
E_CONFIG_VAL(D, T, dir, STR);
|
||||
|
||||
_e_config_theme_edd = E_CONFIG_DD_NEW("E_Config_Theme", E_Config_Theme);
|
||||
#undef T
|
||||
#undef D
|
||||
#define T E_Config_Theme
|
||||
#define D _e_config_theme_edd
|
||||
E_CONFIG_VAL(D, T, category, STR);
|
||||
E_CONFIG_VAL(D, T, file, STR);
|
||||
|
||||
_e_config_module_edd = E_CONFIG_DD_NEW("E_Config_Module", E_Config_Module);
|
||||
#undef T
|
||||
#undef D
|
||||
|
@ -427,7 +422,6 @@ _e_config_edd_init(Eina_Bool old)
|
|||
E_CONFIG_VAL(D, T, config_version, INT); /**/
|
||||
E_CONFIG_VAL(D, T, config_type, UINT); /**/
|
||||
E_CONFIG_VAL(D, T, show_splash, INT); /**/
|
||||
E_CONFIG_VAL(D, T, init_default_theme, STR); /**/
|
||||
E_CONFIG_VAL(D, T, desktop_default_background, STR); /**/
|
||||
E_CONFIG_VAL(D, T, desktop_default_name, STR); /**/
|
||||
E_CONFIG_VAL(D, T, desktop_default_window_profile, STR); /**/
|
||||
|
@ -458,7 +452,6 @@ _e_config_edd_init(Eina_Bool old)
|
|||
EET_DATA_DESCRIPTOR_ADD_LIST_STRING(D, T, "bad_modules", bad_modules);
|
||||
E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); /**/
|
||||
E_CONFIG_LIST(D, T, font_defaults, _e_config_font_default_edd); /**/
|
||||
E_CONFIG_LIST(D, T, themes, _e_config_theme_edd); /**/
|
||||
E_CONFIG_LIST(D, T, mouse_bindings, _e_config_bindings_mouse_edd); /**/
|
||||
E_CONFIG_LIST(D, T, key_bindings, _e_config_bindings_key_edd); /**/
|
||||
E_CONFIG_LIST(D, T, edge_bindings, _e_config_bindings_edge_edd); /**/
|
||||
|
@ -468,7 +461,6 @@ _e_config_edd_init(Eina_Bool old)
|
|||
E_CONFIG_LIST(D, T, path_append_data, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_images, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_fonts, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_themes, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_init, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_icons, _e_config_path_append_edd); /**/
|
||||
E_CONFIG_LIST(D, T, path_append_modules, _e_config_path_append_edd); /**/
|
||||
|
@ -565,8 +557,8 @@ _e_config_edd_init(Eina_Bool old)
|
|||
E_CONFIG_LIST(D, T, gadcons, _e_config_gadcon_edd);
|
||||
E_CONFIG_LIST(D, T, shelves, _e_config_shelf_edd);
|
||||
E_CONFIG_VAL(D, T, font_hinting, INT); /**/
|
||||
E_CONFIG_VAL(D, T, desklock_personal_passwd, STR);
|
||||
E_CONFIG_VAL(D, T, desklock_background, STR);
|
||||
E_CONFIG_VAL(D, T, desklock_passwd, INT);
|
||||
E_CONFIG_VAL(D, T, desklock_pin, INT);
|
||||
E_CONFIG_LIST(D, T, desklock_backgrounds, _e_config_desklock_bg_edd); /**/
|
||||
E_CONFIG_VAL(D, T, desklock_auth_method, INT);
|
||||
E_CONFIG_VAL(D, T, desklock_login_box_zone, INT);
|
||||
|
@ -1232,29 +1224,35 @@ e_config_load(void)
|
|||
break;
|
||||
}
|
||||
}
|
||||
CONFIG_VERSION_CHECK(13)
|
||||
CONFIG_VERSION_CHECK(14)
|
||||
{
|
||||
E_Config_Theme *et;
|
||||
E_Path_Dir *epd;
|
||||
char buf[PATH_MAX], buf2[PATH_MAX], *f;
|
||||
Eina_List *files;
|
||||
Eina_List *files, *l;
|
||||
Eina_Bool fail = EINA_FALSE;
|
||||
E_Config_Shelf *cf_es;
|
||||
E_Remember *rem;
|
||||
char buf[PATH_MAX], buf2[PATH_MAX], *f;
|
||||
|
||||
CONFIG_VERSION_UPDATE_INFO(13);
|
||||
// empty out theme elements of config
|
||||
eina_stringshare_del(e_config->init_default_theme);
|
||||
e_config->init_default_theme = NULL;
|
||||
EINA_LIST_FREE(e_config->themes, et)
|
||||
CONFIG_VERSION_UPDATE_INFO(14);
|
||||
|
||||
EINA_LIST_FOREACH(e_config->shelves, l, cf_es)
|
||||
{
|
||||
if (et->category) eina_stringshare_del(et->category);
|
||||
if (et->file) eina_stringshare_del(et->file);
|
||||
E_FREE(et);
|
||||
}
|
||||
EINA_LIST_FREE(e_config->path_append_themes, epd)
|
||||
{
|
||||
if (epd->dir) eina_stringshare_del(epd->dir);
|
||||
E_FREE(epd);
|
||||
if (cf_es->popup)
|
||||
{
|
||||
if (cf_es->layer)
|
||||
cf_es->layer = E_LAYER_CLIENT_ABOVE;
|
||||
else
|
||||
cf_es->layer = E_LAYER_CLIENT_DESKTOP;
|
||||
}
|
||||
else if (!cf_es->layer)
|
||||
cf_es->layer = E_LAYER_DESKTOP; //redundant, but whatever
|
||||
cf_es->popup = 0;
|
||||
}
|
||||
|
||||
/* E19 layer values are higher */
|
||||
EINA_LIST_FOREACH(e_config->remembers, l, rem)
|
||||
if (rem->apply & E_REMEMBER_APPLY_LAYER)
|
||||
rem->prop.layer += 100;
|
||||
|
||||
// copy all of ~/.e/e/themes/* into ~/.elementary/themes
|
||||
// and delete original data in ~/.e/e/themes
|
||||
ecore_file_mkpath(elm_theme_user_dir_get());
|
||||
|
@ -1274,6 +1272,32 @@ e_config_load(void)
|
|||
ecore_file_recursive_rm(buf);
|
||||
}
|
||||
}
|
||||
CONFIG_VERSION_CHECK(15)
|
||||
{
|
||||
E_Config_Module *em;
|
||||
Eina_List *l;
|
||||
Eina_Bool found = EINA_FALSE;
|
||||
|
||||
CONFIG_VERSION_UPDATE_INFO(15);
|
||||
if (e_config->desklock_use_custom_desklock)
|
||||
e_config->desklock_auth_method = E_DESKLOCK_AUTH_METHOD_EXTERNAL;
|
||||
|
||||
EINA_LIST_FOREACH(e_config->modules, l, em)
|
||||
if (!strcmp(em->name, "lokker"))
|
||||
{
|
||||
found = EINA_TRUE;
|
||||
break;
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
/* add new desklock module */
|
||||
em = E_NEW(E_Config_Module, 1);
|
||||
em->name = eina_stringshare_add("lokker");
|
||||
em->enabled = 1;
|
||||
em->delayed = 0;
|
||||
e_config->modules = eina_list_append(e_config->modules, em);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!e_config->remember_internal_fm_windows)
|
||||
e_config->remember_internal_fm_windows = !!(e_config->remember_internal_windows & E_REMEMBER_INTERNAL_FM_WINS);
|
||||
|
@ -1458,11 +1482,6 @@ e_config_load(void)
|
|||
|
||||
/* FIXME: disabled auto apply because it causes problems */
|
||||
e_config->cfgdlg_auto_apply = 0;
|
||||
/* FIXME: desklock personalized password id disabled for security reasons */
|
||||
e_config->desklock_auth_method = 0;
|
||||
if (e_config->desklock_personal_passwd)
|
||||
eina_stringshare_del(e_config->desklock_personal_passwd);
|
||||
e_config->desklock_personal_passwd = NULL;
|
||||
|
||||
ecore_event_add(E_EVENT_CONFIG_LOADED, NULL, NULL, NULL);
|
||||
}
|
||||
|
@ -1697,38 +1716,34 @@ e_config_domain_system_load(const char *domain, E_Config_DD *edd)
|
|||
static void
|
||||
_e_config_mv_error(const char *from, const char *to)
|
||||
{
|
||||
if (!_e_config_error_dialog)
|
||||
{
|
||||
E_Dialog *dia;
|
||||
E_Dialog *dia;
|
||||
char buf[8192];
|
||||
|
||||
dia = e_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
"E", "_sys_error_logout_slow");
|
||||
if (dia)
|
||||
{
|
||||
char buf[8192];
|
||||
if (_e_config_error_dialog) return;
|
||||
|
||||
e_dialog_title_set(dia, _("Enlightenment Settings Write Problems"));
|
||||
e_dialog_icon_set(dia, "dialog-error", 64);
|
||||
snprintf(buf, sizeof(buf),
|
||||
_("Enlightenment has had an error while moving config files<br>"
|
||||
"from:<br>"
|
||||
"%s<br>"
|
||||
"<br>"
|
||||
"to:<br>"
|
||||
"%s<br>"
|
||||
"<br>"
|
||||
"The rest of the write has been aborted for safety.<br>"),
|
||||
from, to);
|
||||
e_dialog_text_set(dia, buf);
|
||||
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
|
||||
e_dialog_button_focus_num(dia, 0);
|
||||
e_win_centered_set(dia->win, 1);
|
||||
e_object_del_attach_func_set(E_OBJECT(dia),
|
||||
_e_config_error_dialog_cb_delete);
|
||||
e_dialog_show(dia);
|
||||
_e_config_error_dialog = dia;
|
||||
}
|
||||
}
|
||||
dia = e_dialog_new(NULL, "E", "_sys_error_logout_slow");
|
||||
EINA_SAFETY_ON_NULL_RETURN(dia);
|
||||
|
||||
e_dialog_title_set(dia, _("Enlightenment Settings Write Problems"));
|
||||
e_dialog_icon_set(dia, "dialog-error", 64);
|
||||
snprintf(buf, sizeof(buf),
|
||||
_("Enlightenment has had an error while moving config files<br>"
|
||||
"from:<br>"
|
||||
"%s<br>"
|
||||
"<br>"
|
||||
"to:<br>"
|
||||
"%s<br>"
|
||||
"<br>"
|
||||
"The rest of the write has been aborted for safety.<br>"),
|
||||
from, to);
|
||||
e_dialog_text_set(dia, buf);
|
||||
e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
|
||||
e_dialog_button_focus_num(dia, 0);
|
||||
e_win_centered_set(dia->win, 1);
|
||||
e_object_del_attach_func_set(E_OBJECT(dia),
|
||||
_e_config_error_dialog_cb_delete);
|
||||
e_dialog_show(dia);
|
||||
_e_config_error_dialog = dia;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
|
@ -2090,7 +2105,6 @@ _e_config_free(E_Config *ecf)
|
|||
E_Font_Fallback *eff;
|
||||
E_Config_Module *em;
|
||||
E_Font_Default *efd;
|
||||
E_Config_Theme *et;
|
||||
E_Color_Class *cc;
|
||||
E_Path_Dir *epd;
|
||||
E_Remember *rem;
|
||||
|
@ -2132,12 +2146,6 @@ _e_config_free(E_Config *ecf)
|
|||
if (efd->font) eina_stringshare_del(efd->font);
|
||||
E_FREE(efd);
|
||||
}
|
||||
EINA_LIST_FREE(ecf->themes, et)
|
||||
{
|
||||
if (et->category) eina_stringshare_del(et->category);
|
||||
if (et->file) eina_stringshare_del(et->file);
|
||||
E_FREE(et);
|
||||
}
|
||||
EINA_LIST_FREE(ecf->path_append_data, epd)
|
||||
{
|
||||
if (epd->dir) eina_stringshare_del(epd->dir);
|
||||
|
@ -2153,11 +2161,6 @@ _e_config_free(E_Config *ecf)
|
|||
if (epd->dir) eina_stringshare_del(epd->dir);
|
||||
E_FREE(epd);
|
||||
}
|
||||
EINA_LIST_FREE(ecf->path_append_themes, epd)
|
||||
{
|
||||
if (epd->dir) eina_stringshare_del(epd->dir);
|
||||
E_FREE(epd);
|
||||
}
|
||||
EINA_LIST_FREE(ecf->path_append_init, epd)
|
||||
{
|
||||
if (epd->dir) eina_stringshare_del(epd->dir);
|
||||
|
@ -2205,7 +2208,6 @@ _e_config_free(E_Config *ecf)
|
|||
if (cc->name) eina_stringshare_del(cc->name);
|
||||
E_FREE(cc);
|
||||
}
|
||||
if (ecf->init_default_theme) eina_stringshare_del(ecf->init_default_theme);
|
||||
if (ecf->desktop_default_background) eina_stringshare_del(ecf->desktop_default_background);
|
||||
if (ecf->desktop_default_name) eina_stringshare_del(ecf->desktop_default_name);
|
||||
if (ecf->desktop_default_window_profile) eina_stringshare_del(ecf->desktop_default_window_profile);
|
||||
|
@ -2223,8 +2225,6 @@ _e_config_free(E_Config *ecf)
|
|||
if (ecf->transition_change) eina_stringshare_del(ecf->transition_change);
|
||||
if (ecf->input_method) eina_stringshare_del(ecf->input_method);
|
||||
if (ecf->exebuf_term_cmd) eina_stringshare_del(ecf->exebuf_term_cmd);
|
||||
if (ecf->desklock_personal_passwd) eina_stringshare_del(ecf->desklock_personal_passwd);
|
||||
if (ecf->desklock_background) eina_stringshare_del(ecf->desklock_background);
|
||||
if (ecf->icon_theme) eina_stringshare_del(ecf->icon_theme);
|
||||
if (ecf->wallpaper_import_last_dev) eina_stringshare_del(ecf->wallpaper_import_last_dev);
|
||||
if (ecf->wallpaper_import_last_path) eina_stringshare_del(ecf->wallpaper_import_last_path);
|
||||
|
@ -2362,8 +2362,7 @@ _e_config_eet_close_handle(Eet_File *ef, char *file)
|
|||
{
|
||||
E_Dialog *dia;
|
||||
|
||||
dia = e_dialog_new(e_container_current_get(e_manager_current_get()),
|
||||
"E", "_sys_error_logout_slow");
|
||||
dia = e_dialog_new(NULL, "E", "_sys_error_logout_slow");
|
||||
if (dia)
|
||||
{
|
||||
char buf[8192];
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -4,7 +4,6 @@
|
|||
|
||||
typedef struct _E_Config E_Config;
|
||||
typedef struct _E_Config_Module E_Config_Module;
|
||||
typedef struct _E_Config_Theme E_Config_Theme;
|
||||
typedef struct _E_Config_Binding_Mouse E_Config_Binding_Mouse;
|
||||
typedef struct _E_Config_Binding_Key E_Config_Binding_Key;
|
||||
typedef struct _E_Config_Binding_Edge E_Config_Binding_Edge;
|
||||
|
@ -48,7 +47,7 @@ typedef enum
|
|||
/* increment this whenever a new set of config values are added but the users
|
||||
* config doesn't need to be wiped - simply new values need to be put in
|
||||
*/
|
||||
#define E_CONFIG_FILE_GENERATION 13
|
||||
#define E_CONFIG_FILE_GENERATION 15
|
||||
#define E_CONFIG_FILE_VERSION ((E_CONFIG_FILE_EPOCH * 1000000) + E_CONFIG_FILE_GENERATION)
|
||||
|
||||
#define E_CONFIG_BINDINGS_VERSION 0 // DO NOT INCREMENT UNLESS YOU WANT TO WIPE ALL BINDINGS!!!!!
|
||||
|
@ -58,7 +57,6 @@ struct _E_Config
|
|||
int config_version; // INTERNAL
|
||||
E_Config_Profile_Type config_type; // INTERNAL
|
||||
int show_splash; // GUI
|
||||
const char *init_default_theme; // GUI
|
||||
const char *desktop_default_background; // GUI
|
||||
Eina_List *desktop_backgrounds; // GUI
|
||||
const char *desktop_default_name;
|
||||
|
@ -89,7 +87,6 @@ struct _E_Config
|
|||
Eina_List *bad_modules; // GUI
|
||||
Eina_List *font_fallbacks; // GUI
|
||||
Eina_List *font_defaults; // GUI
|
||||
Eina_List *themes; // GUI
|
||||
|
||||
/* NO LONGER SAVED WITH THIS STRUCT */
|
||||
Eina_List *mouse_bindings; // GUI
|
||||
|
@ -102,7 +99,6 @@ struct _E_Config
|
|||
Eina_List *path_append_data; // GUI
|
||||
Eina_List *path_append_images; // GUI
|
||||
Eina_List *path_append_fonts; // GUI
|
||||
Eina_List *path_append_themes; // GUI
|
||||
Eina_List *path_append_init; // GUI
|
||||
Eina_List *path_append_icons; // GUI
|
||||
Eina_List *path_append_modules; // GUI
|
||||
|
@ -206,8 +202,8 @@ struct _E_Config
|
|||
Eina_List *shelves; // GUI
|
||||
int font_hinting; // GUI
|
||||
|
||||
const char *desklock_personal_passwd; // GUI
|
||||
const char *desklock_background; // OLD DON'T USE
|
||||
int desklock_passwd; // GUI // hashed
|
||||
int desklock_pin; // GUI // hashed
|
||||
Eina_List *desklock_backgrounds; // GUI
|
||||
int desklock_auth_method; // GUI
|
||||
int desklock_login_box_zone; // GUI
|
||||
|
@ -478,12 +474,6 @@ struct _E_Config_Module
|
|||
int priority;
|
||||
};
|
||||
|
||||
struct _E_Config_Theme
|
||||
{
|
||||
const char *category;
|
||||
const char *file;
|
||||
};
|
||||
|
||||
struct _E_Config_Binding_Mouse
|
||||
{
|
||||
int context;
|
||||
|
@ -546,7 +536,7 @@ struct _E_Config_Binding_Acpi
|
|||
|
||||
struct _E_Config_Desktop_Background
|
||||
{
|
||||
int container;
|
||||
int manager;
|
||||
int zone;
|
||||
int desk_x;
|
||||
int desk_y;
|
||||
|
@ -555,7 +545,7 @@ struct _E_Config_Desktop_Background
|
|||
|
||||
struct _E_Config_Desktop_Name
|
||||
{
|
||||
int container;
|
||||
int manager;
|
||||
int zone;
|
||||
int desk_x;
|
||||
int desk_y;
|
||||
|
@ -564,7 +554,7 @@ struct _E_Config_Desktop_Name
|
|||
|
||||
struct _E_Config_Desktop_Window_Profile
|
||||
{
|
||||
int container;
|
||||
int manager;
|
||||
int zone;
|
||||
int desk_x;
|
||||
int desk_y;
|
||||
|
@ -603,9 +593,9 @@ struct _E_Config_Shelf
|
|||
{
|
||||
const char *name;
|
||||
int id;
|
||||
int container, zone;
|
||||
int layer;
|
||||
unsigned char popup;
|
||||
int manager, zone;
|
||||
int layer; //E_Layer
|
||||
unsigned char popup; //DEAD
|
||||
int orient;
|
||||
unsigned char fit_along;
|
||||
unsigned char fit_size;
|
||||
|
|
|
@ -21,7 +21,7 @@ static Eina_List *_e_config_dialog_list = NULL;
|
|||
/**
|
||||
* Creates a new dialog
|
||||
*
|
||||
* @param con the container the dialog will be added too
|
||||
* @param c the compositor the dialog will be added to
|
||||
* @param title to display for the dialog
|
||||
* @param name the name used to register the window in e
|
||||
* @param class the call used to register the window in e
|
||||
|
@ -32,14 +32,14 @@ static Eina_List *_e_config_dialog_list = NULL;
|
|||
* @return returns the created dialog. Null on failure
|
||||
*/
|
||||
EAPI E_Config_Dialog *
|
||||
e_config_dialog_new(E_Container *con, const char *title, const char *name, const char *class, const char *icon, int icon_size, E_Config_Dialog_View *view, void *data)
|
||||
e_config_dialog_new(E_Comp *c, const char *title, const char *name, const char *class, const char *icon, int icon_size, E_Config_Dialog_View *view, void *data)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
|
||||
cfd = E_OBJECT_ALLOC(E_Config_Dialog, E_CONFIG_DIALOG_TYPE,
|
||||
_e_config_dialog_free);
|
||||
cfd->view = view;
|
||||
cfd->con = con;
|
||||
cfd->comp = c;
|
||||
cfd->title = eina_stringshare_add(title);
|
||||
cfd->name = eina_stringshare_add(name);
|
||||
cfd->class = eina_stringshare_add(class);
|
||||
|
@ -106,22 +106,21 @@ e_config_dialog_find(const char *name, const char *class)
|
|||
E_Zone *z;
|
||||
|
||||
z = e_util_zone_current_get(e_manager_current_get());
|
||||
e_border_uniconify(cfd->dia->win->border);
|
||||
e_client_uniconify(cfd->dia->win->client);
|
||||
e_win_raise(cfd->dia->win);
|
||||
if (z->container == cfd->dia->win->border->zone->container)
|
||||
e_border_desk_set(cfd->dia->win->border, e_desk_current_get(z));
|
||||
if (z->comp == cfd->dia->win->client->zone->comp)
|
||||
e_client_desk_set(cfd->dia->win->client, e_desk_current_get(z));
|
||||
else
|
||||
{
|
||||
if (!cfd->dia->win->border->sticky)
|
||||
e_desk_show(cfd->dia->win->border->desk);
|
||||
ecore_x_pointer_warp(cfd->dia->win->border->zone->container->win,
|
||||
cfd->dia->win->border->zone->x + (cfd->dia->win->border->zone->w / 2),
|
||||
cfd->dia->win->border->zone->y + (cfd->dia->win->border->zone->h / 2));
|
||||
if (!cfd->dia->win->client->sticky)
|
||||
e_desk_show(cfd->dia->win->client->desk);
|
||||
e_util_pointer_center(cfd->dia->win->client);
|
||||
}
|
||||
e_border_unshade(cfd->dia->win->border, cfd->dia->win->border->shade.dir);
|
||||
if (cfd->dia->win->client->shaded || cfd->dia->win->client->shading)
|
||||
e_client_unshade(cfd->dia->win->client, cfd->dia->win->client->shade_dir);
|
||||
if ((e_config->focus_setting == E_FOCUS_NEW_DIALOG) ||
|
||||
(e_config->focus_setting == E_FOCUS_NEW_WINDOW))
|
||||
e_border_focus_set(cfd->dia->win->border, 1, 1);
|
||||
evas_object_focus_set(cfd->dia->win->client->frame, 1);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
@ -192,9 +191,9 @@ _e_config_dialog_go(E_Config_Dialog *cfd, E_Config_Dialog_CFData_Type type)
|
|||
if (!pdia) /* creating window for the first time */
|
||||
{
|
||||
if ((cfd->view->normal_win) || (e_config->cfgdlg_normal_wins))
|
||||
cfd->dia = e_dialog_normal_win_new(cfd->con, cfd->name, buf);
|
||||
cfd->dia = e_dialog_normal_win_new(cfd->comp, cfd->name, buf);
|
||||
else
|
||||
cfd->dia = e_dialog_new(cfd->con, cfd->name, buf);
|
||||
cfd->dia = e_dialog_new(cfd->comp, cfd->name, buf);
|
||||
e_object_del_attach_func_set(E_OBJECT(cfd->dia),
|
||||
_e_config_dialog_cb_dialog_del);
|
||||
} /* window was created before - deleting content only */
|
||||
|
|
|
@ -41,7 +41,7 @@ struct _E_Config_Dialog
|
|||
E_Config_Dialog_CFData_Type view_type;
|
||||
E_Config_Dialog_View *view;
|
||||
E_Config_Dialog_Data *cfdata;
|
||||
E_Container *con;
|
||||
E_Comp *comp;
|
||||
const char *title;
|
||||
const char *icon;
|
||||
const char *name;
|
||||
|
@ -55,7 +55,7 @@ struct _E_Config_Dialog
|
|||
unsigned char cfg_changed_auto : 1;
|
||||
};
|
||||
|
||||
EAPI E_Config_Dialog *e_config_dialog_new(E_Container *con, const char *title, const char *name, const char *class, const char *icon, int icon_size, E_Config_Dialog_View *view, void *data);
|
||||
EAPI E_Config_Dialog *e_config_dialog_new(E_Comp *c, const char *title, const char *name, const char *class, const char *icon, int icon_size, E_Config_Dialog_View *view, void *data);
|
||||
EAPI int e_config_dialog_find(const char *name, const char *class);
|
||||
EAPI E_Config_Dialog *e_config_dialog_get(const char *name, const char *class);
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ static void _e_configure_menu_add(void *data, E_Menu *m);
|
|||
static void _e_configure_efreet_desktop_cleanup(void);
|
||||
static void _e_configure_efreet_desktop_update(void);
|
||||
static Eina_Bool _e_configure_cb_efreet_desktop_cache_update(void *data, int type, void *event);
|
||||
static void _e_configure_registry_item_full_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Container * con, const char *params), void (*generic_func)(E_Container *con, const char *params), Efreet_Desktop *desktop, const char *params);
|
||||
static void _e_configure_registry_item_full_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Comp *c, const char *params), void (*generic_func)(E_Comp *c, const char *params), Efreet_Desktop *desktop, const char *params);
|
||||
static void _e_configure_registry_item_free(E_Configure_It *eci);
|
||||
|
||||
static void _configure_job(void *data);
|
||||
|
@ -19,7 +19,7 @@ static Ecore_Job *update_job = NULL;
|
|||
|
||||
static struct
|
||||
{
|
||||
void (*func)(const void *data, E_Container *con, const char *params, Efreet_Desktop *desktop);
|
||||
void (*func)(const void *data, E_Comp *c, const char *params, Efreet_Desktop *desktop);
|
||||
const char *data;
|
||||
} custom_desktop_exec = { NULL, NULL };
|
||||
|
||||
|
@ -41,7 +41,7 @@ e_configure_init(void)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_configure_registry_call(const char *path, E_Container *con, const char *params)
|
||||
e_configure_registry_call(const char *path, E_Comp *c, const char *params)
|
||||
{
|
||||
E_Configure_Cat *ecat;
|
||||
Eina_List *l;
|
||||
|
@ -52,7 +52,7 @@ e_configure_registry_call(const char *path, E_Container *con, const char *params
|
|||
cat = ecore_file_dir_get(path);
|
||||
if (!cat) return;
|
||||
item = ecore_file_file_get(path);
|
||||
if (!con) con = e_container_current_get(e_manager_current_get());
|
||||
if (!c) c = e_comp_get(NULL);
|
||||
EINA_LIST_FOREACH(e_configure_registry, l, ecat)
|
||||
if (!strcmp(cat, ecat->cat))
|
||||
{
|
||||
|
@ -64,16 +64,16 @@ e_configure_registry_call(const char *path, E_Container *con, const char *params
|
|||
{
|
||||
if (!params) params = eci->params;
|
||||
|
||||
if (eci->func) eci->func(con, params);
|
||||
if (eci->func) eci->func(c, params);
|
||||
else if (eci->generic_func)
|
||||
eci->generic_func(con, params);
|
||||
eci->generic_func(c, params);
|
||||
else if (eci->desktop)
|
||||
{
|
||||
if (custom_desktop_exec.func)
|
||||
custom_desktop_exec.func(custom_desktop_exec.data,
|
||||
con, params, eci->desktop);
|
||||
c, params, eci->desktop);
|
||||
else
|
||||
e_exec(e_util_zone_current_get(con->manager),
|
||||
e_exec(e_util_zone_current_get(c->man),
|
||||
eci->desktop, NULL, NULL, "config");
|
||||
}
|
||||
break;
|
||||
|
@ -84,27 +84,27 @@ e_configure_registry_call(const char *path, E_Container *con, const char *params
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_configure_registry_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Container * con, const char *params))
|
||||
e_configure_registry_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Comp *c, const char *params))
|
||||
{
|
||||
_e_configure_registry_item_full_add(path, pri, label, icon_file, icon, func, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_configure_registry_generic_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, void (*generic_func)(E_Container *con, const char *params))
|
||||
e_configure_registry_generic_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, void (*generic_func)(E_Comp *c, const char *params))
|
||||
{
|
||||
_e_configure_registry_item_full_add(path, pri, label, icon_file, icon, NULL, generic_func, NULL, NULL);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_configure_registry_item_params_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Container * con, const char *params), const char *params)
|
||||
e_configure_registry_item_params_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Comp *c, const char *params), const char *params)
|
||||
{
|
||||
_e_configure_registry_item_full_add(path, pri, label, icon_file, icon, func, NULL, NULL, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete an item in the configuration panel.
|
||||
*Delete an item in the configuration panel.
|
||||
*
|
||||
* @param path location the item to delete
|
||||
*@param path location the item to delete
|
||||
*/
|
||||
EAPI void
|
||||
e_configure_registry_item_del(const char *path)
|
||||
|
@ -139,14 +139,14 @@ e_configure_registry_item_del(const char *path)
|
|||
}
|
||||
|
||||
/**
|
||||
* Add a category to the configuration panel.
|
||||
*Add a category to the configuration panel.
|
||||
*
|
||||
* @param path location the new category
|
||||
* @param pri the priority for sorting the category in the category list
|
||||
* @param label the name the user will see in configuration panel
|
||||
* @param icon_file the edje file that holds the icon for the category.
|
||||
* Can be null to use current theme.
|
||||
* @param icon the name of the edje group to use as icon
|
||||
*@param path location the new category
|
||||
*@param pri the priority for sorting the category in the category list
|
||||
*@param label the name the user will see in configuration panel
|
||||
*@param icon_file the edje file that holds the icon for the category.
|
||||
*Can be null to use current theme.
|
||||
*@param icon the name of the edje group to use as icon
|
||||
*/
|
||||
static int
|
||||
_E_configure_category_pri_cb(E_Configure_Cat *ecat, E_Configure_Cat *ecat2)
|
||||
|
@ -181,9 +181,9 @@ e_configure_registry_category_add(const char *path, int pri, const char *label,
|
|||
}
|
||||
|
||||
/**
|
||||
* Delete a category in the configuration panel.
|
||||
*Delete a category in the configuration panel.
|
||||
*
|
||||
* @param path location the category to delete
|
||||
*@param path location the category to delete
|
||||
*/
|
||||
EAPI void
|
||||
e_configure_registry_category_del(const char *path)
|
||||
|
@ -210,19 +210,19 @@ e_configure_registry_category_del(const char *path)
|
|||
}
|
||||
|
||||
/**
|
||||
* Add a item to the configuration panel.
|
||||
*Add a item to the configuration panel.
|
||||
*
|
||||
* @param path location the location to place configuration item
|
||||
* @param pri the priority for sorting the item in the category list
|
||||
* @param label the name the user will see in configuration panel
|
||||
* @param icon_file the edje file that holds the icon for the category.
|
||||
* Can be null to use current theme.
|
||||
* @param icon the name of the edje group to use as icon
|
||||
* @param func the callback to use when the configuration item is clicked
|
||||
*@param path location the location to place configuration item
|
||||
*@param pri the priority for sorting the item in the category list
|
||||
*@param label the name the user will see in configuration panel
|
||||
*@param icon_file the edje file that holds the icon for the category.
|
||||
*Can be null to use current theme.
|
||||
*@param icon the name of the edje group to use as icon
|
||||
*@param func the callback to use when the configuration item is clicked
|
||||
*/
|
||||
|
||||
EAPI void
|
||||
e_configure_registry_custom_desktop_exec_callback_set(void (*func)(const void *data, E_Container *con, const char *params, Efreet_Desktop *desktop), const void *data)
|
||||
e_configure_registry_custom_desktop_exec_callback_set(void (*func)(const void *data, E_Comp *c, const char *params, Efreet_Desktop *desktop), const void *data)
|
||||
{
|
||||
custom_desktop_exec.func = func;
|
||||
custom_desktop_exec.data = data;
|
||||
|
@ -268,7 +268,7 @@ e_configure_registry_exists(const char *path)
|
|||
static void
|
||||
_e_configure_menu_module_item_cb(void *data __UNUSED__, E_Menu *m, E_Menu_Item *mi __UNUSED__)
|
||||
{
|
||||
e_int_config_modules(m->zone->container, NULL);
|
||||
e_int_config_modules(m->zone->comp, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -461,7 +461,7 @@ _e_configure_compare_pri_cb(E_Configure_It *eci, E_Configure_It *eci2)
|
|||
}
|
||||
|
||||
static void
|
||||
_e_configure_registry_item_full_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Container * con, const char *params), void (*generic_func)(E_Container *con, const char *params), Efreet_Desktop *desktop, const char *params)
|
||||
_e_configure_registry_item_full_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func)(E_Comp *c, const char *params), void (*generic_func)(E_Comp *c, const char *params), Efreet_Desktop *desktop, const char *params)
|
||||
{
|
||||
Eina_List *l;
|
||||
char *cat;
|
||||
|
|
|
@ -25,20 +25,20 @@ struct _E_Configure_It
|
|||
const char *icon_file;
|
||||
const char *icon;
|
||||
const char *params;
|
||||
E_Config_Dialog *(*func) (E_Container *con, const char *params);
|
||||
void (*generic_func) (E_Container *con, const char *params);
|
||||
E_Config_Dialog *(*func) (E_Comp *c, const char *params);
|
||||
void (*generic_func) (E_Comp *c, const char *params);
|
||||
Efreet_Desktop *desktop;
|
||||
};
|
||||
|
||||
EAPI void e_configure_registry_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func) (E_Container *con, const char *params));
|
||||
EAPI void e_configure_registry_item_params_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func) (E_Container *con, const char *params), const char *params);
|
||||
EAPI void e_configure_registry_generic_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, void (*generic_func) (E_Container *con, const char *params));
|
||||
EAPI void e_configure_registry_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func) (E_Comp *c, const char *params));
|
||||
EAPI void e_configure_registry_item_params_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, E_Config_Dialog *(*func) (E_Comp *c, const char *params), const char *params);
|
||||
EAPI void e_configure_registry_generic_item_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon, void (*generic_func) (E_Comp *c, const char *params));
|
||||
EAPI void e_configure_registry_item_del(const char *path);
|
||||
EAPI void e_configure_registry_category_add(const char *path, int pri, const char *label, const char *icon_file, const char *icon);
|
||||
EAPI void e_configure_registry_category_del(const char *path);
|
||||
EAPI void e_configure_registry_call(const char *path, E_Container *con, const char *params);
|
||||
EAPI void e_configure_registry_call(const char *path, E_Comp *c, const char *params);
|
||||
EAPI int e_configure_registry_exists(const char *path);
|
||||
EAPI void e_configure_registry_custom_desktop_exec_callback_set(void (*func) (const void *data, E_Container *con, const char *params, Efreet_Desktop *desktop), const void *data);
|
||||
EAPI void e_configure_registry_custom_desktop_exec_callback_set(void (*func) (const void *data, E_Comp *c, const char *params, Efreet_Desktop *desktop), const void *data);
|
||||
EINTERN void e_configure_init(void);
|
||||
|
||||
extern EAPI Eina_List *e_configure_registry;
|
||||
|
|
|
@ -33,7 +33,7 @@ e_confirm_dialog_show(const char *title, const char *icon, const char *text,
|
|||
cd->del.func = del_func;
|
||||
cd->del.data = del_data;
|
||||
|
||||
dia = e_dialog_new(e_container_current_get(e_manager_current_get()), "E", "_confirm_dialog");
|
||||
dia = e_dialog_new(NULL, "E", "_confirm_dialog");
|
||||
if (!dia)
|
||||
{
|
||||
e_object_del(E_OBJECT(cd));
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,157 +0,0 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef enum _E_Container_Shape_Change
|
||||
{
|
||||
E_CONTAINER_SHAPE_ADD,
|
||||
E_CONTAINER_SHAPE_DEL,
|
||||
E_CONTAINER_SHAPE_SHOW,
|
||||
E_CONTAINER_SHAPE_HIDE,
|
||||
E_CONTAINER_SHAPE_MOVE,
|
||||
E_CONTAINER_SHAPE_RESIZE,
|
||||
E_CONTAINER_SHAPE_RECTS,
|
||||
E_CONTAINER_SHAPE_INPUT_RECTS
|
||||
} E_Container_Shape_Change;
|
||||
|
||||
typedef struct _E_Container E_Container;
|
||||
typedef struct _E_Border_List E_Border_List;
|
||||
typedef struct _E_Container_Shape E_Container_Shape;
|
||||
typedef struct _E_Container_Shape_Callback E_Container_Shape_Callback;
|
||||
typedef struct _E_Event_Container_Resize E_Event_Container_Resize;
|
||||
|
||||
typedef void (*E_Container_Shape_Cb)(void *data, E_Container_Shape *es, E_Container_Shape_Change ch);
|
||||
|
||||
#else
|
||||
#ifndef E_CONTAINER_H
|
||||
#define E_CONTAINER_H
|
||||
|
||||
#define E_CONTAINER_TYPE (int) 0xE0b01003
|
||||
#define E_CONTAINER_SHAPE_TYPE (int) 0xE0b01004
|
||||
|
||||
#define E_CONTAINER_LAYER_COUNT 12
|
||||
|
||||
struct _E_Container
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
Ecore_X_Window win;
|
||||
int x, y, w, h;
|
||||
char visible : 1;
|
||||
E_Manager *manager;
|
||||
|
||||
unsigned int num;
|
||||
const char *name;
|
||||
|
||||
Ecore_Evas *bg_ecore_evas;
|
||||
Evas *bg_evas;
|
||||
Evas_Object *bg_blank_object;
|
||||
Ecore_X_Window bg_win;
|
||||
Ecore_X_Window event_win;
|
||||
|
||||
Eina_List *shapes;
|
||||
Eina_List *shape_change_cb;
|
||||
Eina_List *zones;
|
||||
|
||||
unsigned int clients;
|
||||
struct {
|
||||
Ecore_X_Window win;
|
||||
Eina_List *clients; /* E_Border */
|
||||
} layers[E_CONTAINER_LAYER_COUNT];
|
||||
|
||||
Ecore_X_Window scratch_win;
|
||||
};
|
||||
|
||||
struct _E_Border_List
|
||||
{
|
||||
E_Container *container;
|
||||
Eina_Array client_array;
|
||||
int pos;
|
||||
};
|
||||
|
||||
struct _E_Container_Shape
|
||||
{
|
||||
E_Object e_obj_inherit;
|
||||
|
||||
E_Container *con;
|
||||
E_Comp_Win *comp_win;
|
||||
int x, y, w, h;
|
||||
unsigned char visible : 1;
|
||||
struct {
|
||||
int x, y, w, h;
|
||||
} solid_rect;
|
||||
int shape_rects_num;
|
||||
Eina_Rectangle *shape_rects;
|
||||
int shape_input_rects_num;
|
||||
Eina_Rectangle *shape_input_rects;
|
||||
};
|
||||
|
||||
struct _E_Container_Shape_Callback
|
||||
{
|
||||
E_Container_Shape_Cb func;
|
||||
void *data;
|
||||
};
|
||||
|
||||
struct _E_Event_Container_Resize
|
||||
{
|
||||
E_Container *container;
|
||||
};
|
||||
|
||||
EINTERN int e_container_init(void);
|
||||
EINTERN int e_container_shutdown(void);
|
||||
|
||||
EAPI E_Container *e_container_new(E_Manager *man);
|
||||
EAPI void e_container_show(E_Container *con);
|
||||
EAPI void e_container_hide(E_Container *con);
|
||||
EAPI E_Container *e_container_current_get(E_Manager *man);
|
||||
EAPI E_Container *e_container_number_get(E_Manager *man, int num);
|
||||
EAPI void e_container_move(E_Container *con, int x, int y);
|
||||
EAPI void e_container_resize(E_Container *con, int w, int h);
|
||||
EAPI void e_container_move_resize(E_Container *con, int x, int y, int w, int h);
|
||||
EAPI void e_container_raise(E_Container *con);
|
||||
EAPI void e_container_lower(E_Container *con);
|
||||
|
||||
EAPI E_Border_List *e_container_border_list_first(E_Container *con);
|
||||
EAPI E_Border_List *e_container_border_list_last(E_Container *con);
|
||||
EAPI E_Border *e_container_border_list_next(E_Border_List *list);
|
||||
EAPI E_Border *e_container_border_list_prev(E_Border_List *list);
|
||||
EAPI void e_container_border_list_free(E_Border_List *list);
|
||||
|
||||
EAPI E_Zone *e_container_zone_at_point_get(E_Container *con, int x, int y);
|
||||
EAPI E_Zone *e_container_zone_number_get(E_Container *con, int num);
|
||||
EAPI E_Zone *e_container_zone_id_get(E_Container *con, int id);
|
||||
|
||||
EAPI E_Desk *e_container_desk_window_profile_get(E_Container *con, const char *profile);
|
||||
|
||||
EAPI E_Container_Shape *e_container_shape_add(E_Container *con);
|
||||
EAPI void e_container_shape_show(E_Container_Shape *es);
|
||||
EAPI void e_container_shape_hide(E_Container_Shape *es);
|
||||
EAPI void e_container_shape_move(E_Container_Shape *es, int x, int y);
|
||||
EAPI void e_container_shape_resize(E_Container_Shape *es, int w, int h);
|
||||
EAPI Eina_List *e_container_shape_list_get(E_Container *con);
|
||||
EAPI void e_container_shape_geometry_get(E_Container_Shape *es, int *x, int *y, int *w, int *h);
|
||||
EAPI E_Container *e_container_shape_container_get(E_Container_Shape *es);
|
||||
EAPI void e_container_shape_change_callback_add(E_Container *con, E_Container_Shape_Cb func, void *data);
|
||||
EAPI void e_container_shape_change_callback_del(E_Container *con, E_Container_Shape_Cb func, void *data);
|
||||
EAPI void e_container_shape_rects_set(E_Container_Shape *es, Eina_Rectangle *rects, int num);
|
||||
EAPI void e_container_shape_input_rects_set(E_Container_Shape *es, Eina_Rectangle *rects, int num);
|
||||
EAPI void e_container_shape_solid_rect_set(E_Container_Shape *es, int x, int y, int w, int h);
|
||||
EAPI void e_container_shape_solid_rect_get(E_Container_Shape *es, int *x, int *y, int *w, int *h);
|
||||
|
||||
EAPI int e_container_borders_count(E_Container *con);
|
||||
EAPI void e_container_border_add(E_Border *bd);
|
||||
EAPI void e_container_border_remove(E_Border *bd);
|
||||
EAPI void e_container_window_raise(E_Container *con, Ecore_X_Window win, E_Layer layer);
|
||||
EAPI void e_container_window_lower(E_Container *con, Ecore_X_Window win, E_Layer layer);
|
||||
EAPI E_Border *e_container_border_raise(E_Border *bd);
|
||||
EAPI E_Border *e_container_border_lower(E_Border *bd);
|
||||
EAPI void e_container_border_stack_above(E_Border *bd, E_Border *above);
|
||||
EAPI void e_container_border_stack_below(E_Border *bd, E_Border *below);
|
||||
|
||||
EAPI void e_container_all_freeze(void);
|
||||
EAPI void e_container_all_thaw(void);
|
||||
|
||||
EAPI E_Container *e_container_evas_object_container_get(Evas_Object *obj);
|
||||
|
||||
extern EAPI int E_EVENT_CONTAINER_RESIZE;
|
||||
|
||||
#endif
|
||||
#endif
|
445
src/bin/e_desk.c
445
src/bin/e_desk.c
|
@ -13,10 +13,11 @@ static void _e_desk_event_desk_deskshow_free(void *data, void *ev);
|
|||
static void _e_desk_event_desk_name_change_free(void *data, void *ev);
|
||||
static void _e_desk_show_begin(E_Desk *desk, int dx, int dy);
|
||||
static void _e_desk_hide_begin(E_Desk *desk, int dx, int dy);
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
static void _e_desk_event_desk_window_profile_change_free(void *data, void *ev);
|
||||
static void _e_desk_window_profile_change_protocol_set(void);
|
||||
#endif
|
||||
|
||||
static E_Desk_Flip_Cb _e_desk_flip_cb = NULL;
|
||||
static void *_e_desk_flip_data = NULL;
|
||||
|
||||
EAPI int E_EVENT_DESK_SHOW = 0;
|
||||
EAPI int E_EVENT_DESK_BEFORE_SHOW = 0;
|
||||
|
@ -49,9 +50,7 @@ e_desk_new(E_Zone *zone, int x, int y)
|
|||
E_Desk *desk;
|
||||
Eina_List *l;
|
||||
E_Config_Desktop_Name *cfname;
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
E_Config_Desktop_Window_Profile *cfprof;
|
||||
#endif
|
||||
char name[40];
|
||||
int ok = 0;
|
||||
|
||||
|
@ -68,8 +67,8 @@ e_desk_new(E_Zone *zone, int x, int y)
|
|||
/* Get current desktop's name */
|
||||
EINA_LIST_FOREACH(e_config->desktop_names, l, cfname)
|
||||
{
|
||||
if ((cfname->container >= 0) &&
|
||||
((int)zone->container->num != cfname->container)) continue;
|
||||
if ((cfname->manager >= 0) &&
|
||||
((int)zone->comp->num != cfname->manager)) continue;
|
||||
if ((cfname->zone >= 0) &&
|
||||
((int)zone->num != cfname->zone)) continue;
|
||||
if ((cfname->desk_x != desk->x) || (cfname->desk_y != desk->y))
|
||||
|
@ -84,13 +83,12 @@ e_desk_new(E_Zone *zone, int x, int y)
|
|||
snprintf(name, sizeof(name), _(e_config->desktop_default_name), x, y);
|
||||
desk->name = eina_stringshare_add(name);
|
||||
}
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
/* Get window profile name for current desktop */
|
||||
ok = 0;
|
||||
EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
|
||||
{
|
||||
if ((cfprof->container >= 0) &&
|
||||
((int)zone->container->num != cfprof->container)) continue;
|
||||
if ((cfprof->manager >= 0) &&
|
||||
((int)zone->comp->num != cfprof->manager)) continue;
|
||||
if ((cfprof->zone >= 0) &&
|
||||
((int)zone->num != cfprof->zone)) continue;
|
||||
if ((cfprof->desk_x != desk->x) || (cfprof->desk_y != desk->y))
|
||||
|
@ -105,10 +103,22 @@ e_desk_new(E_Zone *zone, int x, int y)
|
|||
desk->window_profile = eina_stringshare_add
|
||||
(e_config->desktop_default_window_profile);
|
||||
}
|
||||
#endif
|
||||
return desk;
|
||||
}
|
||||
|
||||
EAPI E_Client *
|
||||
e_desk_client_top_visible_get(const E_Desk *desk)
|
||||
{
|
||||
E_Client *ec;
|
||||
|
||||
E_OBJECT_CHECK_RETURN(desk, NULL);
|
||||
E_OBJECT_TYPE_CHECK_RETURN(desk, E_DESK_TYPE, NULL);
|
||||
|
||||
E_CLIENT_REVERSE_FOREACH(e_comp_get(desk), ec)
|
||||
if (e_client_util_desk_visible(ec, desk) && evas_object_visible_get(ec->frame)) return ec;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_name_set(E_Desk *desk, const char *name)
|
||||
{
|
||||
|
@ -127,14 +137,14 @@ e_desk_name_set(E_Desk *desk, const char *name)
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_name_add(int container, int zone, int desk_x, int desk_y, const char *name)
|
||||
e_desk_name_add(int manager, int zone, int desk_x, int desk_y, const char *name)
|
||||
{
|
||||
E_Config_Desktop_Name *cfname;
|
||||
|
||||
e_desk_name_del(container, zone, desk_x, desk_y);
|
||||
e_desk_name_del(manager, zone, desk_x, desk_y);
|
||||
|
||||
cfname = E_NEW(E_Config_Desktop_Name, 1);
|
||||
cfname->container = container;
|
||||
cfname->manager = manager;
|
||||
cfname->zone = zone;
|
||||
cfname->desk_x = desk_x;
|
||||
cfname->desk_y = desk_y;
|
||||
|
@ -144,14 +154,14 @@ e_desk_name_add(int container, int zone, int desk_x, int desk_y, const char *nam
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_name_del(int container, int zone, int desk_x, int desk_y)
|
||||
e_desk_name_del(int manager, int zone, int desk_x, int desk_y)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
E_Config_Desktop_Name *cfname = NULL;
|
||||
|
||||
EINA_LIST_FOREACH(e_config->desktop_names, l, cfname)
|
||||
{
|
||||
if ((cfname->container == container) && (cfname->zone == zone) &&
|
||||
if ((cfname->manager == manager) && (cfname->zone == zone) &&
|
||||
(cfname->desk_x == desk_x) && (cfname->desk_y == desk_y))
|
||||
{
|
||||
e_config->desktop_names =
|
||||
|
@ -166,48 +176,44 @@ e_desk_name_del(int container, int zone, int desk_x, int desk_y)
|
|||
EAPI void
|
||||
e_desk_name_update(void)
|
||||
{
|
||||
Eina_List *m, *c, *z, *l;
|
||||
E_Manager *man;
|
||||
E_Container *con;
|
||||
const Eina_List *z, *l;
|
||||
E_Comp *c;
|
||||
E_Zone *zone;
|
||||
E_Desk *desk;
|
||||
E_Config_Desktop_Name *cfname;
|
||||
int d_x, d_y, ok;
|
||||
char name[40];
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), m, man)
|
||||
EINA_LIST_FOREACH(e_comp_list(), l, c)
|
||||
{
|
||||
EINA_LIST_FOREACH(man->containers, c, con)
|
||||
EINA_LIST_FOREACH(c->zones, z, zone)
|
||||
{
|
||||
EINA_LIST_FOREACH(con->zones, z, zone)
|
||||
for (d_x = 0; d_x < zone->desk_x_count; d_x++)
|
||||
{
|
||||
for (d_x = 0; d_x < zone->desk_x_count; d_x++)
|
||||
for (d_y = 0; d_y < zone->desk_y_count; d_y++)
|
||||
{
|
||||
for (d_y = 0; d_y < zone->desk_y_count; d_y++)
|
||||
desk = zone->desks[d_x + zone->desk_x_count * d_y];
|
||||
ok = 0;
|
||||
|
||||
EINA_LIST_FOREACH(e_config->desktop_names, l, cfname)
|
||||
{
|
||||
desk = zone->desks[d_x + zone->desk_x_count * d_y];
|
||||
ok = 0;
|
||||
if ((cfname->manager >= 0) &&
|
||||
((int)c->num != cfname->manager)) continue;
|
||||
if ((cfname->zone >= 0) &&
|
||||
((int)zone->num != cfname->zone)) continue;
|
||||
if ((cfname->desk_x != d_x) ||
|
||||
(cfname->desk_y != d_y)) continue;
|
||||
e_desk_name_set(desk, cfname->name);
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
EINA_LIST_FOREACH(e_config->desktop_names, l, cfname)
|
||||
{
|
||||
if ((cfname->container >= 0) &&
|
||||
((int)con->num != cfname->container)) continue;
|
||||
if ((cfname->zone >= 0) &&
|
||||
((int)zone->num != cfname->zone)) continue;
|
||||
if ((cfname->desk_x != d_x) ||
|
||||
(cfname->desk_y != d_y)) continue;
|
||||
e_desk_name_set(desk, cfname->name);
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
snprintf(name, sizeof(name),
|
||||
_(e_config->desktop_default_name),
|
||||
d_x, d_y);
|
||||
e_desk_name_set(desk, name);
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
snprintf(name, sizeof(name),
|
||||
_(e_config->desktop_default_name),
|
||||
d_x, d_y);
|
||||
e_desk_name_set(desk, name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -236,7 +242,6 @@ e_desk_show(E_Desk *desk)
|
|||
ecore_event_add(E_EVENT_DESK_BEFORE_SHOW, eev,
|
||||
_e_desk_event_desk_before_show_free, NULL);
|
||||
|
||||
ecore_x_window_shadow_tree_flush();
|
||||
for (x = 0; x < desk->zone->desk_x_count; x++)
|
||||
{
|
||||
for (y = 0; y < desk->zone->desk_y_count; y++)
|
||||
|
@ -328,8 +333,7 @@ e_desk_show(E_Desk *desk)
|
|||
EAPI void
|
||||
e_desk_deskshow(E_Zone *zone)
|
||||
{
|
||||
E_Border *bd;
|
||||
E_Border_List *bl;
|
||||
E_Client *ec;
|
||||
E_Desk *desk;
|
||||
E_Event_Desk_Show *ev;
|
||||
|
||||
|
@ -337,32 +341,28 @@ e_desk_deskshow(E_Zone *zone)
|
|||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||
|
||||
desk = e_desk_current_get(zone);
|
||||
bl = e_container_border_list_first(zone->container);
|
||||
ecore_x_window_shadow_tree_flush();
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
E_CLIENT_FOREACH(zone->comp, ec)
|
||||
{
|
||||
if (bd->desk == desk)
|
||||
if (e_client_util_ignored_get(ec)) continue;
|
||||
if (ec->desk != desk) continue;
|
||||
if (desk->deskshow_toggle)
|
||||
{
|
||||
if (desk->deskshow_toggle)
|
||||
if (ec->deskshow)
|
||||
{
|
||||
if (bd->deskshow)
|
||||
{
|
||||
bd->deskshow = 0;
|
||||
e_border_uniconify(bd);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bd->iconic) continue;
|
||||
if (bd->client.netwm.state.skip_taskbar) continue;
|
||||
if (bd->user_skip_winlist) continue;
|
||||
bd->deskshow = 1;
|
||||
e_border_iconify(bd);
|
||||
ec->deskshow = 0;
|
||||
e_client_uniconify(ec);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ec->iconic) continue;
|
||||
if (ec->netwm.state.skip_taskbar) continue;
|
||||
if (ec->user_skip_winlist) continue;
|
||||
ec->deskshow = 1;
|
||||
e_client_iconify(ec);
|
||||
}
|
||||
}
|
||||
desk->deskshow_toggle = desk->deskshow_toggle ? 0 : 1;
|
||||
e_container_border_list_free(bl);
|
||||
desk->deskshow_toggle = !desk->deskshow_toggle;
|
||||
ev = E_NEW(E_Event_Desk_Show, 1);
|
||||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
|
@ -370,40 +370,40 @@ e_desk_deskshow(E_Zone *zone)
|
|||
_e_desk_event_desk_deskshow_free, NULL);
|
||||
}
|
||||
|
||||
EAPI E_Border *
|
||||
EAPI E_Client *
|
||||
e_desk_last_focused_focus(E_Desk *desk)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
E_Border *bd, *bds = NULL;
|
||||
E_Client *ec, *ecs = NULL;
|
||||
|
||||
EINA_LIST_FOREACH(e_border_focus_stack_get(), l, bd)
|
||||
EINA_LIST_FOREACH(e_client_focus_stack_get(), l, ec)
|
||||
{
|
||||
if ((!bd->iconic) && (bd->visible) &&
|
||||
((bd->desk == desk) || ((bd->zone == desk->zone) && bd->sticky)) &&
|
||||
(bd->client.icccm.accepts_focus || bd->client.icccm.take_focus) &&
|
||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DOCK) &&
|
||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_TOOLBAR) &&
|
||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_MENU) &&
|
||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_SPLASH) &&
|
||||
(bd->client.netwm.type != ECORE_X_WINDOW_TYPE_DESKTOP))
|
||||
if ((!ec->iconic) && (ec->visible) &&
|
||||
((ec->desk == desk) || ((ec->zone == desk->zone) && ec->sticky)) &&
|
||||
(ec->icccm.accepts_focus || ec->icccm.take_focus) &&
|
||||
(ec->netwm.type != E_WINDOW_TYPE_DOCK) &&
|
||||
(ec->netwm.type != E_WINDOW_TYPE_TOOLBAR) &&
|
||||
(ec->netwm.type != E_WINDOW_TYPE_MENU) &&
|
||||
(ec->netwm.type != E_WINDOW_TYPE_SPLASH) &&
|
||||
(ec->netwm.type != E_WINDOW_TYPE_DESKTOP))
|
||||
{
|
||||
/* this was the window last focused in this desktop */
|
||||
if (!bd->lock_focus_out)
|
||||
if (!ec->lock_focus_out)
|
||||
{
|
||||
if (bd->sticky)
|
||||
if (ec->sticky)
|
||||
{
|
||||
bds = bd;
|
||||
ecs = ec;
|
||||
continue;
|
||||
}
|
||||
e_border_focus_set_with_pointer(bd);
|
||||
return bd;
|
||||
e_client_focus_set_with_pointer(ec);
|
||||
return ec;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bds)
|
||||
if (ecs)
|
||||
{
|
||||
e_border_focus_set_with_pointer(bds);
|
||||
return bds;
|
||||
e_client_focus_set_with_pointer(ecs);
|
||||
return ecs;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
@ -532,7 +532,6 @@ e_desk_prev(E_Zone *zone)
|
|||
e_desk_show(e_desk_at_xy_get(zone, x, y));
|
||||
}
|
||||
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
EAPI void
|
||||
e_desk_window_profile_set(E_Desk *desk,
|
||||
const char *profile)
|
||||
|
@ -552,7 +551,7 @@ e_desk_window_profile_set(E_Desk *desk,
|
|||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_window_profile_add(int container,
|
||||
e_desk_window_profile_add(int manager,
|
||||
int zone,
|
||||
int desk_x,
|
||||
int desk_y,
|
||||
|
@ -560,20 +559,19 @@ e_desk_window_profile_add(int container,
|
|||
{
|
||||
E_Config_Desktop_Window_Profile *cfprof;
|
||||
|
||||
e_desk_window_profile_del(container, zone, desk_x, desk_y);
|
||||
e_desk_window_profile_del(manager, zone, desk_x, desk_y);
|
||||
|
||||
cfprof = E_NEW(E_Config_Desktop_Window_Profile, 1);
|
||||
cfprof->container = container;
|
||||
cfprof->manager = manager;
|
||||
cfprof->zone = zone;
|
||||
cfprof->desk_x = desk_x;
|
||||
cfprof->desk_y = desk_y;
|
||||
if (profile) cfprof->profile = eina_stringshare_add(profile);
|
||||
else cfprof->profile = NULL;
|
||||
cfprof->profile = eina_stringshare_add(profile);
|
||||
e_config->desktop_window_profiles = eina_list_append(e_config->desktop_window_profiles, cfprof);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_window_profile_del(int container,
|
||||
e_desk_window_profile_del(int manager,
|
||||
int zone,
|
||||
int desk_x,
|
||||
int desk_y)
|
||||
|
@ -583,7 +581,7 @@ e_desk_window_profile_del(int container,
|
|||
|
||||
EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
|
||||
{
|
||||
if (!((cfprof->container == container) &&
|
||||
if (!((cfprof->manager == manager) &&
|
||||
(cfprof->zone == zone) &&
|
||||
(cfprof->desk_x == desk_x) &&
|
||||
(cfprof->desk_y == desk_y)))
|
||||
|
@ -591,8 +589,8 @@ e_desk_window_profile_del(int container,
|
|||
|
||||
e_config->desktop_window_profiles =
|
||||
eina_list_remove_list(e_config->desktop_window_profiles, l);
|
||||
if (cfprof->profile) eina_stringshare_del(cfprof->profile);
|
||||
E_FREE(cfprof);
|
||||
eina_stringshare_del(cfprof->profile);
|
||||
free(cfprof);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -600,9 +598,8 @@ e_desk_window_profile_del(int container,
|
|||
EAPI void
|
||||
e_desk_window_profile_update(void)
|
||||
{
|
||||
Eina_List *m, *c, *z, *l;
|
||||
E_Manager *man;
|
||||
E_Container *con;
|
||||
const Eina_List *z, *l;
|
||||
E_Comp *c;
|
||||
E_Zone *zone;
|
||||
E_Desk *desk;
|
||||
E_Config_Desktop_Window_Profile *cfprof;
|
||||
|
@ -613,37 +610,34 @@ e_desk_window_profile_update(void)
|
|||
if (!(e_config->use_desktop_window_profile))
|
||||
return;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), m, man)
|
||||
EINA_LIST_FOREACH(e_comp_list(), l, c)
|
||||
{
|
||||
EINA_LIST_FOREACH(man->containers, c, con)
|
||||
EINA_LIST_FOREACH(c->zones, z, zone)
|
||||
{
|
||||
EINA_LIST_FOREACH(con->zones, z, zone)
|
||||
for (d_x = 0; d_x < zone->desk_x_count; d_x++)
|
||||
{
|
||||
for (d_x = 0; d_x < zone->desk_x_count; d_x++)
|
||||
for (d_y = 0; d_y < zone->desk_y_count; d_y++)
|
||||
{
|
||||
for (d_y = 0; d_y < zone->desk_y_count; d_y++)
|
||||
desk = zone->desks[d_x + zone->desk_x_count * d_y];
|
||||
ok = 0;
|
||||
|
||||
EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
|
||||
{
|
||||
desk = zone->desks[d_x + zone->desk_x_count * d_y];
|
||||
ok = 0;
|
||||
if ((cfprof->manager >= 0) &&
|
||||
((int)c->num != cfprof->manager)) continue;
|
||||
if ((cfprof->zone >= 0) &&
|
||||
((int)zone->num != cfprof->zone)) continue;
|
||||
if ((cfprof->desk_x != d_x) ||
|
||||
(cfprof->desk_y != d_y)) continue;
|
||||
e_desk_window_profile_set(desk, cfprof->profile);
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
EINA_LIST_FOREACH(e_config->desktop_window_profiles, l, cfprof)
|
||||
{
|
||||
if ((cfprof->container >= 0) &&
|
||||
((int)con->num != cfprof->container)) continue;
|
||||
if ((cfprof->zone >= 0) &&
|
||||
((int)zone->num != cfprof->zone)) continue;
|
||||
if ((cfprof->desk_x != d_x) ||
|
||||
(cfprof->desk_y != d_y)) continue;
|
||||
e_desk_window_profile_set(desk, cfprof->profile);
|
||||
ok = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!ok)
|
||||
{
|
||||
e_desk_window_profile_set
|
||||
(desk, e_config->desktop_default_window_profile);
|
||||
}
|
||||
if (!ok)
|
||||
{
|
||||
e_desk_window_profile_set
|
||||
(desk, e_config->desktop_default_window_profile);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -651,7 +645,55 @@ e_desk_window_profile_update(void)
|
|||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
EAPI void
|
||||
e_desk_flip_cb_set(E_Desk_Flip_Cb cb, const void *data)
|
||||
{
|
||||
_e_desk_flip_cb = cb;
|
||||
_e_desk_flip_data = (void*)data;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_desk_flip_end(E_Desk *desk)
|
||||
{
|
||||
E_Event_Desk_After_Show *ev;
|
||||
E_Client *ec;
|
||||
|
||||
ev = E_NEW(E_Event_Desk_After_Show, 1);
|
||||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(ev->desk));
|
||||
ecore_event_add(E_EVENT_DESK_AFTER_SHOW, ev,
|
||||
_e_desk_event_desk_after_show_free, NULL);
|
||||
|
||||
e_comp_shape_queue(e_comp_get(desk));
|
||||
if (!e_config->focus_last_focused_per_desktop) return;
|
||||
if ((e_config->focus_policy == E_FOCUS_MOUSE) ||
|
||||
(e_config->focus_policy == E_FOCUS_SLOPPY))
|
||||
{
|
||||
ec = e_client_focused_get();
|
||||
/* only set focus/warp pointer if currently focused window
|
||||
* is on same screen (user hasn't switched screens during transition)
|
||||
*/
|
||||
if (ec && ec->desk && (ec->desk->zone != desk->zone))
|
||||
return;
|
||||
}
|
||||
ec = e_desk_last_focused_focus(desk);
|
||||
if ((e_config->focus_policy != E_FOCUS_MOUSE) && (!ec))
|
||||
{
|
||||
/* we didn't previously have a focused window on this desk
|
||||
* but we should, so this is probably the first time the
|
||||
* user has flipped to this desk. let's be helpful and
|
||||
* focus a random window!
|
||||
*/
|
||||
E_CLIENT_REVERSE_FOREACH(e_comp_get(desk), ec)
|
||||
{
|
||||
/* start with top and go down... */
|
||||
if (e_client_util_ignored_get(ec)) continue;
|
||||
if (!e_client_util_desk_visible(ec, desk)) continue;
|
||||
if (ec->iconic) continue;
|
||||
evas_object_focus_set(ec->frame, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_free(E_Desk *desk)
|
||||
|
@ -704,97 +746,61 @@ _e_desk_event_desk_deskshow_free(void *data __UNUSED__, void *event)
|
|||
static void
|
||||
_e_desk_event_desk_name_change_free(void *data __UNUSED__, void *event)
|
||||
{
|
||||
E_Event_Desk_Name_Change *ev;
|
||||
|
||||
ev = event;
|
||||
E_Event_Desk_Name_Change *ev = event;
|
||||
e_object_unref(E_OBJECT(ev->desk));
|
||||
free(ev);
|
||||
}
|
||||
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
static void
|
||||
_e_desk_event_desk_window_profile_change_free(void *data __UNUSED__, void *event)
|
||||
{
|
||||
E_Event_Desk_Window_Profile_Change *ev;
|
||||
ev = event;
|
||||
E_Event_Desk_Window_Profile_Change *ev = event;
|
||||
e_object_unref(E_OBJECT(ev->desk));
|
||||
E_FREE(ev);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static Eina_Bool
|
||||
_e_desk_transition_setup(E_Border *bd, int dx, int dy, int state)
|
||||
_e_desk_transition_setup(E_Client *ec, int dx, int dy, int state)
|
||||
{
|
||||
e_comp_win_effect_set(bd->cw, e_config->desk_flip_animate_type ?: "none");
|
||||
e_comp_object_effect_set(ec->frame, e_config->desk_flip_animate_type ?: "none");
|
||||
if (e_config->desk_flip_animate_type)
|
||||
{
|
||||
/* set geoms */
|
||||
e_comp_win_effect_params_set(bd->cw, 1, (int[]){bd->x - bd->zone->x, bd->y - bd->zone->y, bd->w, bd->h, bd->zone->w, bd->zone->h, dx, dy}, 8);
|
||||
e_comp_win_effect_params_set(bd->cw, 0, (int[]){state}, 1);
|
||||
e_comp_object_effect_params_set(ec->frame, 1, (int[]){ec->x - ec->zone->x, ec->y - ec->zone->y, ec->w, ec->h, ec->zone->w, ec->zone->h, dx, dy}, 8);
|
||||
e_comp_object_effect_params_set(ec->frame, 0, (int[]){state}, 1);
|
||||
}
|
||||
|
||||
return !!e_config->desk_flip_animate_type;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_end_serious(E_Desk *desk)
|
||||
{
|
||||
E_Event_Desk_After_Show *ev;
|
||||
|
||||
ev = E_NEW(E_Event_Desk_After_Show, 1);
|
||||
ev->desk = desk;
|
||||
e_object_ref(E_OBJECT(ev->desk));
|
||||
ecore_event_add(E_EVENT_DESK_AFTER_SHOW, ev,
|
||||
_e_desk_event_desk_after_show_free, NULL);
|
||||
|
||||
if (!e_config->focus_last_focused_per_desktop) return;
|
||||
if ((e_config->focus_policy == E_FOCUS_MOUSE) ||
|
||||
(e_config->focus_policy == E_FOCUS_SLOPPY))
|
||||
{
|
||||
E_Border *bd;
|
||||
|
||||
bd = e_border_focused_get();
|
||||
/* only set focus/warp pointer if currently focused window
|
||||
* is on same screen (user hasn't switched screens during transition)
|
||||
*/
|
||||
if (bd && bd->desk && (bd->desk->zone != desk->zone))
|
||||
return;
|
||||
}
|
||||
e_desk_last_focused_focus(desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
||||
{
|
||||
E_Border *bd = data;
|
||||
E_Client *ec = data;
|
||||
|
||||
bd->desk->animate_count--;
|
||||
e_border_comp_hidden_set(bd, bd->shaded);
|
||||
if (bd->desk != e_desk_current_get(bd->zone)) return;
|
||||
e_comp_win_effect_unclip(bd->cw);
|
||||
if (!bd->visible) e_border_show(bd);
|
||||
if (bd->desk->animate_count) return;
|
||||
_e_desk_show_end_serious(bd->desk);
|
||||
ec->desk->animate_count--;
|
||||
e_client_comp_hidden_set(ec, ec->shaded);
|
||||
e_comp_object_effect_unclip(ec->frame);
|
||||
ec->hidden = 0;
|
||||
if (!ec->visible) evas_object_show(ec->frame);
|
||||
if (ec->desk != e_desk_current_get(ec->zone)) return;
|
||||
if (!ec->desk->animate_count) e_desk_flip_end(ec->desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_end(void *data, Evas_Object *obj EINA_UNUSED, const char *emission EINA_UNUSED, const char *source EINA_UNUSED)
|
||||
{
|
||||
E_Border *bd = data;
|
||||
E_Client *ec = data;
|
||||
|
||||
bd->desk->animate_count--;
|
||||
e_border_comp_hidden_set(bd, bd->shaded);
|
||||
e_border_hide(bd, 2);
|
||||
if (bd->desk->animate_count) return;
|
||||
ecore_x_window_shadow_tree_flush();
|
||||
ec->desk->animate_count--;
|
||||
ec->hidden = 1;
|
||||
evas_object_hide(ec->frame);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_show_begin(E_Desk *desk, int dx, int dy)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
E_Client *ec;
|
||||
|
||||
if (dx < 0) dx = -1;
|
||||
if (dx > 0) dx = 1;
|
||||
|
@ -802,36 +808,43 @@ _e_desk_show_begin(E_Desk *desk, int dx, int dy)
|
|||
if (dy > 0) dy = 1;
|
||||
|
||||
desk->animate_count = 0;
|
||||
bl = e_container_border_list_first(desk->zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
if (_e_desk_flip_cb && e_config->desk_flip_animate_type)
|
||||
{
|
||||
if ((bd->desk->zone != desk->zone) || (bd->iconic)) continue;
|
||||
if (bd->moving)
|
||||
_e_desk_flip_cb(_e_desk_flip_data, desk, dx, dy, 1);
|
||||
return;
|
||||
}
|
||||
E_CLIENT_FOREACH(desk->zone->comp, ec)
|
||||
{
|
||||
if ((ec->desk->zone != desk->zone) || (ec->iconic) || e_client_util_ignored_get(ec)) continue;
|
||||
if (ec->moving)
|
||||
{
|
||||
e_border_desk_set(bd, desk);
|
||||
e_border_show(bd);
|
||||
e_client_desk_set(ec, desk);
|
||||
evas_object_show(ec->frame);
|
||||
continue;
|
||||
}
|
||||
if ((bd->desk != desk) || (bd->sticky)) continue;
|
||||
if (_e_desk_transition_setup(bd, dx, dy, 1))
|
||||
if ((ec->desk != desk) || (ec->sticky)) continue;
|
||||
if (starting)
|
||||
ec->hidden = 0;
|
||||
else if (_e_desk_transition_setup(ec, dx, dy, 1))
|
||||
{
|
||||
e_comp_win_effect_stop(bd->cw, _e_desk_hide_end);
|
||||
e_comp_win_effect_start(bd->cw, _e_desk_show_end, bd);
|
||||
e_comp_object_effect_stop(ec->frame, _e_desk_hide_end);
|
||||
e_comp_object_effect_start(ec->frame, _e_desk_show_end, ec);
|
||||
desk->animate_count++;
|
||||
e_border_comp_hidden_set(bd, EINA_TRUE);
|
||||
}
|
||||
e_border_show(bd);
|
||||
else
|
||||
ec->hidden = 0;
|
||||
|
||||
e_client_comp_hidden_set(ec, ec->hidden);
|
||||
evas_object_show(ec->frame);
|
||||
}
|
||||
if ((!e_config->desk_flip_animate_type) || (!desk->animate_count))
|
||||
_e_desk_show_end_serious(desk);
|
||||
e_container_border_list_free(bl);
|
||||
e_desk_flip_end(desk);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_desk_hide_begin(E_Desk *desk, int dx, int dy)
|
||||
{
|
||||
E_Border_List *bl;
|
||||
E_Border *bd;
|
||||
E_Client *ec;
|
||||
|
||||
if (dx < 0) dx = -1;
|
||||
if (dx > 0) dx = 1;
|
||||
|
@ -839,28 +852,31 @@ _e_desk_hide_begin(E_Desk *desk, int dx, int dy)
|
|||
if (dy > 0) dy = 1;
|
||||
|
||||
desk->animate_count = 0;
|
||||
bl = e_container_border_list_first(desk->zone->container);
|
||||
while ((bd = e_container_border_list_next(bl)))
|
||||
if (_e_desk_flip_cb && e_config->desk_flip_animate_type)
|
||||
{
|
||||
if ((bd->desk->zone != desk->zone) || (bd->iconic)) continue;
|
||||
if (bd->moving) continue;
|
||||
if ((bd->desk != desk) || (bd->sticky)) continue;
|
||||
if (_e_desk_transition_setup(bd, -dx, -dy, 0))
|
||||
_e_desk_flip_cb(_e_desk_flip_data, desk, dx, dy, 0);
|
||||
return;
|
||||
}
|
||||
E_CLIENT_FOREACH(desk->zone->comp, ec)
|
||||
{
|
||||
if ((ec->desk->zone != desk->zone) || (ec->iconic) || e_client_util_ignored_get(ec)) continue;
|
||||
if (ec->moving) continue;
|
||||
if ((ec->desk != desk) || (ec->sticky)) continue;
|
||||
if ((!starting) && _e_desk_transition_setup(ec, -dx, -dy, 0))
|
||||
{
|
||||
e_comp_win_effect_stop(bd->cw, _e_desk_show_end);
|
||||
e_comp_win_effect_start(bd->cw, _e_desk_hide_end, bd);
|
||||
e_comp_object_effect_stop(ec->frame, _e_desk_show_end);
|
||||
e_comp_object_effect_start(ec->frame, _e_desk_hide_end, ec);
|
||||
desk->animate_count++;
|
||||
e_border_comp_hidden_set(bd, EINA_TRUE);
|
||||
}
|
||||
else
|
||||
e_border_hide(bd, 2);
|
||||
{
|
||||
ec->hidden = 1;
|
||||
evas_object_hide(ec->frame);
|
||||
}
|
||||
e_client_comp_hidden_set(ec, EINA_TRUE);
|
||||
}
|
||||
if (!e_config->desk_flip_animate_type)
|
||||
ecore_x_window_shadow_tree_flush();
|
||||
e_container_border_list_free(bl);
|
||||
}
|
||||
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
static void
|
||||
_e_desk_window_profile_change_protocol_set(void)
|
||||
{
|
||||
|
@ -868,10 +884,5 @@ _e_desk_window_profile_change_protocol_set(void)
|
|||
E_Manager *man;
|
||||
|
||||
EINA_LIST_FOREACH(e_manager_list(), l, man)
|
||||
{
|
||||
ecore_x_e_window_profile_supported_set
|
||||
(man->root, e_config->use_desktop_window_profile);
|
||||
}
|
||||
ecore_x_e_window_profile_supported_set(man->root, e_config->use_desktop_window_profile);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,8 @@ typedef struct _E_Event_Desk_After_Show E_Event_Desk_After_Show;
|
|||
typedef struct _E_Event_Desk_Name_Change E_Event_Desk_Name_Change;
|
||||
typedef struct _E_Event_Desk_Window_Profile_Change E_Event_Desk_Window_Profile_Change;
|
||||
|
||||
typedef void (*E_Desk_Flip_Cb)(void *data, E_Desk *desk, int dx, int dy, Eina_Bool show);
|
||||
|
||||
#else
|
||||
#ifndef E_DESK_H
|
||||
#define E_DESK_H
|
||||
|
@ -30,7 +32,7 @@ struct _E_Desk
|
|||
int x, y;
|
||||
unsigned char visible : 1;
|
||||
unsigned int deskshow_toggle : 1;
|
||||
int fullscreen_borders;
|
||||
Eina_List *fullscreen_clients;
|
||||
|
||||
Evas_Object *bg_object;
|
||||
|
||||
|
@ -66,12 +68,13 @@ EINTERN int e_desk_init(void);
|
|||
EINTERN int e_desk_shutdown(void);
|
||||
EAPI E_Desk *e_desk_new(E_Zone *zone, int x, int y);
|
||||
EAPI void e_desk_name_set(E_Desk *desk, const char *name);
|
||||
EAPI void e_desk_name_add(int container, int zone, int desk_x, int desk_y, const char *name);
|
||||
EAPI void e_desk_name_del(int container, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_desk_name_add(int manager, int zone, int desk_x, int desk_y, const char *name);
|
||||
EAPI void e_desk_name_del(int manager, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_desk_name_update(void);
|
||||
EAPI void e_desk_show(E_Desk *desk);
|
||||
EAPI void e_desk_deskshow(E_Zone *zone);
|
||||
EAPI E_Border *e_desk_last_focused_focus(E_Desk *desk);
|
||||
EAPI E_Client *e_desk_last_focused_focus(E_Desk *desk);
|
||||
EAPI E_Client *e_desk_client_top_visible_get(const E_Desk *desk);
|
||||
EAPI E_Desk *e_desk_current_get(E_Zone *zone);
|
||||
EAPI E_Desk *e_desk_at_xy_get(E_Zone *zone, int x, int y);
|
||||
EAPI E_Desk *e_desk_at_pos_get(E_Zone *zone, int pos);
|
||||
|
@ -82,21 +85,20 @@ EAPI void e_desk_row_add(E_Zone *zone);
|
|||
EAPI void e_desk_row_remove(E_Zone *zone);
|
||||
EAPI void e_desk_col_add(E_Zone *zone);
|
||||
EAPI void e_desk_col_remove(E_Zone *zone);
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
EAPI void e_desk_window_profile_set(E_Desk *desk, const char *profile);
|
||||
EAPI void e_desk_window_profile_add(int container, int zone, int desk_x, int desk_y, const char *profile);
|
||||
EAPI void e_desk_window_profile_del(int container, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_desk_window_profile_add(int manager, int zone, int desk_x, int desk_y, const char *profile);
|
||||
EAPI void e_desk_window_profile_del(int manager, int zone, int desk_x, int desk_y);
|
||||
EAPI void e_desk_window_profile_update(void);
|
||||
#endif
|
||||
|
||||
EAPI void e_desk_flip_cb_set(E_Desk_Flip_Cb cb, const void *data);
|
||||
EAPI void e_desk_flip_end(E_Desk *desk);
|
||||
|
||||
extern EAPI int E_EVENT_DESK_SHOW;
|
||||
extern EAPI int E_EVENT_DESK_BEFORE_SHOW;
|
||||
extern EAPI int E_EVENT_DESK_AFTER_SHOW;
|
||||
extern EAPI int E_EVENT_DESK_DESKSHOW;
|
||||
extern EAPI int E_EVENT_DESK_NAME_CHANGE;
|
||||
#if (ECORE_VERSION_MAJOR > 1) || (ECORE_VERSION_MINOR >= 8)
|
||||
extern EAPI int E_EVENT_DESK_WINDOW_PROFILE_CHANGE;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
1004
src/bin/e_desklock.c
1004
src/bin/e_desklock.c
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,8 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
|
||||
typedef struct _E_Event_Desklock E_Event_Desklock;
|
||||
typedef Eina_Bool (*E_Desklock_Show_Cb)(void);
|
||||
typedef void (*E_Desklock_Hide_Cb)(void);
|
||||
|
||||
typedef enum _E_Desklock_Background_Method {
|
||||
E_DESKLOCK_BACKGROUND_METHOD_THEME_DESKLOCK = 0,
|
||||
|
@ -8,6 +10,15 @@ typedef enum _E_Desklock_Background_Method {
|
|||
E_DESKLOCK_BACKGROUND_METHOD_WALLPAPER,
|
||||
E_DESKLOCK_BACKGROUND_METHOD_CUSTOM,
|
||||
} E_Desklock_Background_Method;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
E_DESKLOCK_AUTH_METHOD_SYSTEM = 0,
|
||||
E_DESKLOCK_AUTH_METHOD_PERSONAL = 1,
|
||||
E_DESKLOCK_AUTH_METHOD_EXTERNAL = 2,
|
||||
E_DESKLOCK_AUTH_METHOD_PIN = 3,
|
||||
} E_Desklock_Auth_Method;
|
||||
|
||||
#else
|
||||
#ifndef E_DESKLOCK_H
|
||||
#define E_DESKLOCK_H
|
||||
|
@ -26,7 +37,33 @@ EAPI int e_desklock_show_autolocked(void);
|
|||
EAPI void e_desklock_hide(void);
|
||||
EAPI Eina_Bool e_desklock_state_get(void);
|
||||
|
||||
EAPI void e_desklock_create_callback_set(E_Desklock_Show_Cb cb);
|
||||
EAPI void e_desklock_destroy_callback_set(E_Desklock_Hide_Cb cb);
|
||||
EAPI Eina_Stringshare *e_desklock_user_wallpaper_get(E_Zone *zone);
|
||||
EAPI void e_desklock_show_hook_add(E_Desklock_Show_Cb cb);
|
||||
EAPI void e_desklock_show_hook_del(E_Desklock_Show_Cb cb);
|
||||
EAPI void e_desklock_hide_hook_add(E_Desklock_Hide_Cb cb);
|
||||
EAPI void e_desklock_hide_hook_del(E_Desklock_Hide_Cb cb);
|
||||
|
||||
extern EAPI int E_EVENT_DESKLOCK;
|
||||
|
||||
static inline Eina_Bool
|
||||
e_desklock_is_external(void)
|
||||
{
|
||||
return e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_EXTERNAL;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_desklock_is_personal(void)
|
||||
{
|
||||
return e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_PERSONAL;
|
||||
}
|
||||
|
||||
static inline Eina_Bool
|
||||
e_desklock_is_system(void)
|
||||
{
|
||||
return e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_SYSTEM;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
#include "e.h"
|
||||
|
||||
#define INTERNAL_ENTRY E_Smart_Data * sd; sd = evas_object_smart_data_get(obj); if (!sd) return;
|
||||
#define SMART_NAME "e_deskmirror"
|
||||
|
||||
#define INTERNAL_ENTRY E_Smart_Data *sd; sd = evas_object_smart_data_get(obj); if (!sd) return;
|
||||
|
||||
#define API_ENTRY(X) E_Smart_Data *sd; \
|
||||
sd = evas_object_smart_data_get(X); \
|
||||
if ((!X) || (!sd) || (e_util_strcmp(evas_object_type_get(X), SMART_NAME))) return
|
||||
|
||||
typedef struct E_Smart_Data
|
||||
{
|
||||
|
@ -30,10 +36,12 @@ typedef struct Mirror
|
|||
{
|
||||
EINA_INLIST;
|
||||
E_Smart_Data *sd;
|
||||
E_Comp_Win *cw;
|
||||
E_Client *ec;
|
||||
Evas_Object *comp_object;
|
||||
Evas_Object *mirror;
|
||||
int x, y, w, h;
|
||||
Eina_Bool frame : 1;
|
||||
Eina_Bool added : 1;
|
||||
} Mirror;
|
||||
|
||||
typedef struct Mirror_Border
|
||||
|
@ -44,17 +52,58 @@ typedef struct Mirror_Border
|
|||
Evas_Object *obj;
|
||||
} Mirror_Border;
|
||||
|
||||
/* local subsystem globals */
|
||||
static Evas_Smart *_e_deskmirror_smart = NULL;
|
||||
static Evas_Smart *_mirror_border_smart = NULL;
|
||||
static Evas_Smart *_mirror_client_smart = NULL;
|
||||
|
||||
static void _e_deskmirror_mirror_setup(Mirror *m);
|
||||
static void _comp_object_hide(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _comp_object_show(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
static void _comp_object_stack(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED);
|
||||
static void _comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED);
|
||||
|
||||
static Eina_Bool
|
||||
_e_deskmirror_visible_get(E_Smart_Data *sd, Mirror *m)
|
||||
{
|
||||
Eina_Bool visible = evas_object_visible_get(m->comp_object);
|
||||
if (m->ec)
|
||||
{
|
||||
visible = m->ec->visible;
|
||||
/* iconic flips meaning of visible flag at this point
|
||||
* where "this point" is defined as being during the show
|
||||
* callback for a client
|
||||
*/
|
||||
if (m->sd->handlers && m->ec->iconic)
|
||||
visible = !m->ec->visible;
|
||||
if (visible)
|
||||
{
|
||||
visible = (sd->desk == m->ec->desk) || (m->ec->sticky);
|
||||
if (sd->pager)
|
||||
visible = !m->ec->netwm.state.skip_pager;
|
||||
if (visible && sd->taskbar)
|
||||
visible = !m->ec->netwm.state.skip_taskbar;
|
||||
}
|
||||
}
|
||||
if ((m->w < 1) || (m->h < 1)) visible = EINA_FALSE;
|
||||
return visible;
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_visible_apply(Mirror *m)
|
||||
{
|
||||
if (_e_deskmirror_visible_get(m->sd, m))
|
||||
evas_object_show(m->mirror);
|
||||
else
|
||||
evas_object_hide(m->mirror);
|
||||
}
|
||||
|
||||
/* local subsystem functions */
|
||||
static void
|
||||
_mirror_scale_set(Mirror *m, float sc)
|
||||
{
|
||||
Edje_Message_Float_Set msg;
|
||||
Mirror_Border *mb;
|
||||
|
||||
/* FIXME: broken */
|
||||
return;
|
||||
if (!m->frame) return;
|
||||
|
||||
mb = evas_object_smart_data_get(m->mirror);
|
||||
|
@ -106,6 +155,7 @@ static void
|
|||
_e_deskmirror_smart_del(Evas_Object *obj)
|
||||
{
|
||||
INTERNAL_ENTRY;
|
||||
e_object_unref(E_OBJECT(sd->desk));
|
||||
if (sd->desk_delfn)
|
||||
{
|
||||
e_object_delfn_del(E_OBJECT(sd->desk), sd->desk_delfn);
|
||||
|
@ -114,6 +164,9 @@ _e_deskmirror_smart_del(Evas_Object *obj)
|
|||
}
|
||||
E_FREE_LIST(sd->handlers, ecore_event_handler_del);
|
||||
eina_hash_free(sd->mirror_hash);
|
||||
evas_object_del(sd->clip);
|
||||
evas_object_del(sd->bgpreview);
|
||||
evas_object_del(sd->layout);
|
||||
free(sd);
|
||||
}
|
||||
|
||||
|
@ -174,23 +227,41 @@ _e_deskmirror_smart_clip_unset(Evas_Object *obj)
|
|||
////////////////////////////////////////////////////////
|
||||
|
||||
static void
|
||||
_e_deskmirror_mirror_frame_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
_e_deskmirror_mirror_frame_recalc_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Mirror_Border *mb = data;
|
||||
Mirror *m = data;
|
||||
Mirror_Border *mb;
|
||||
|
||||
if (mb->m->cw->bd && (!e_object_is_del(E_OBJECT(mb->m->cw->bd))))
|
||||
|
||||
if (m->frame)
|
||||
{
|
||||
evas_object_smart_member_del(mb->mirror);
|
||||
mb->m->mirror = mb->mirror;
|
||||
mb->m->frame = 0;
|
||||
mb = evas_object_smart_data_get(m->mirror);
|
||||
if (mb->m->ec && (!e_object_is_del(E_OBJECT(mb->m->ec))))
|
||||
{
|
||||
if (e_comp_object_frame_exists(obj)) return;
|
||||
evas_object_smart_member_del(mb->mirror);
|
||||
mb->m->mirror = mb->mirror;
|
||||
mb->mirror = NULL;
|
||||
mb->m->frame = 0;
|
||||
}
|
||||
else
|
||||
mb->m->comp_object = NULL;
|
||||
evas_object_del(mb->obj);
|
||||
e_layout_pack(m->sd->layout, m->mirror);
|
||||
}
|
||||
else
|
||||
mb->m->cw = NULL;
|
||||
evas_object_del(mb->obj);
|
||||
{
|
||||
if (m->ec && (!e_object_is_del(E_OBJECT(m->ec))))
|
||||
{
|
||||
if (!e_comp_object_frame_exists(obj)) return;
|
||||
e_layout_unpack(m->mirror);
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_add(Evas_Object *obj)
|
||||
_mirror_client_smart_add(Evas_Object *obj)
|
||||
{
|
||||
Mirror_Border *mb;
|
||||
|
||||
|
@ -200,7 +271,7 @@ _mirror_border_smart_add(Evas_Object *obj)
|
|||
}
|
||||
|
||||
static void
|
||||
_mirror_border_signal_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *src)
|
||||
_mirror_client_signal_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *emission, const char *src)
|
||||
{
|
||||
Mirror_Border *mb = data;
|
||||
edje_object_signal_emit(mb->frame, emission, src);
|
||||
|
@ -209,19 +280,18 @@ _mirror_border_signal_cb(void *data, Evas_Object *obj EINA_UNUSED, const char *e
|
|||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_del(Evas_Object *obj)
|
||||
_mirror_client_smart_del(Evas_Object *obj)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
if (mb->m->cw && mb->m->cw->bd)
|
||||
{
|
||||
evas_object_event_callback_del_full(mb->m->cw->bd->bg_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_frame_del_cb, mb);
|
||||
edje_object_signal_callback_del_full(mb->m->cw->bd->bg_object, "*", "*", _mirror_border_signal_cb, mb);
|
||||
}
|
||||
if (mb->m->comp_object && mb->m->ec)
|
||||
e_comp_object_signal_callback_del_full(mb->m->ec->frame, "*", "*", _mirror_client_signal_cb, mb);
|
||||
evas_object_del(mb->frame);
|
||||
evas_object_del(mb->mirror);
|
||||
free(mb);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||
_mirror_client_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
|
||||
|
@ -229,64 +299,59 @@ _mirror_border_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
|||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
||||
_mirror_client_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_resize(mb->frame, w, h);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_show(Evas_Object *obj)
|
||||
_mirror_client_smart_show(Evas_Object *obj)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_show(mb->frame);
|
||||
evas_object_show(mb->mirror);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_hide(Evas_Object *obj)
|
||||
_mirror_client_smart_hide(Evas_Object *obj)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_hide(mb->frame);
|
||||
evas_object_hide(mb->mirror);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
|
||||
_mirror_client_smart_color_set(Evas_Object *obj, int r, int g, int b, int a)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_color_set(mb->frame, r, g, b, a);
|
||||
evas_object_color_set(mb->mirror, r, g, b, a);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
|
||||
_mirror_client_smart_clip_set(Evas_Object *obj, Evas_Object *clip)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_clip_set(mb->frame, clip);
|
||||
evas_object_clip_set(mb->mirror, clip);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_clip_unset(Evas_Object *obj)
|
||||
_mirror_client_smart_clip_unset(Evas_Object *obj)
|
||||
{
|
||||
Mirror_Border *mb = evas_object_smart_data_get(obj);
|
||||
evas_object_clip_unset(mb->frame);
|
||||
evas_object_clip_unset(mb->mirror);
|
||||
}
|
||||
|
||||
static void
|
||||
_mirror_border_smart_init(void)
|
||||
_mirror_client_smart_init(void)
|
||||
{
|
||||
static const Evas_Smart_Class sc =
|
||||
{
|
||||
"mirror_border", EVAS_SMART_CLASS_VERSION,
|
||||
_mirror_border_smart_add, _mirror_border_smart_del, _mirror_border_smart_move, _mirror_border_smart_resize,
|
||||
_mirror_border_smart_show, _mirror_border_smart_hide, _mirror_border_smart_color_set, _mirror_border_smart_clip_set,
|
||||
_mirror_border_smart_clip_unset, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
_mirror_client_smart_add, _mirror_client_smart_del, _mirror_client_smart_move, _mirror_client_smart_resize,
|
||||
_mirror_client_smart_show, _mirror_client_smart_hide, _mirror_client_smart_color_set, _mirror_client_smart_clip_set,
|
||||
_mirror_client_smart_clip_unset, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
};
|
||||
if (_mirror_border_smart) return;
|
||||
_mirror_border_smart = evas_smart_class_new(&sc);
|
||||
if (_mirror_client_smart) return;
|
||||
_mirror_client_smart = evas_smart_class_new(&sc);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -294,7 +359,7 @@ _e_deskmirror_smart_init(void)
|
|||
{
|
||||
static const Evas_Smart_Class sc =
|
||||
{
|
||||
"e_deskmirror", EVAS_SMART_CLASS_VERSION,
|
||||
SMART_NAME, EVAS_SMART_CLASS_VERSION,
|
||||
_e_deskmirror_smart_add, _e_deskmirror_smart_del, _e_deskmirror_smart_move, _e_deskmirror_smart_resize,
|
||||
_e_deskmirror_smart_show, _e_deskmirror_smart_hide, _e_deskmirror_smart_color_set, _e_deskmirror_smart_clip_set,
|
||||
_e_deskmirror_smart_clip_unset, NULL, NULL, NULL, NULL, NULL, NULL, NULL
|
||||
|
@ -311,27 +376,10 @@ _e_deskmirror_delfn(E_Smart_Data *sd, void *desk EINA_UNUSED)
|
|||
evas_object_del(sd->obj);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_e_deskmirror_win_visible_get(E_Smart_Data *sd, E_Comp_Win *cw)
|
||||
{
|
||||
Eina_Bool visible = cw->visible;
|
||||
if (cw->bd)
|
||||
{
|
||||
if (visible)
|
||||
{
|
||||
if (sd->pager)
|
||||
visible = !cw->bd->client.netwm.state.skip_pager;
|
||||
if (visible && sd->taskbar)
|
||||
visible = !cw->bd->client.netwm.state.skip_taskbar;
|
||||
}
|
||||
}
|
||||
return visible;
|
||||
}
|
||||
|
||||
static void
|
||||
_e_deskmirror_mirror_del(Mirror *m)
|
||||
{
|
||||
eina_hash_del_by_key(m->sd->mirror_hash, &m->cw);
|
||||
eina_hash_del_by_key(m->sd->mirror_hash, &m->comp_object);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -340,37 +388,19 @@ _e_deskmirror_mirror_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EI
|
|||
_e_deskmirror_mirror_del(data);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_deskmirror_mirror_del_hash(Mirror *m)
|
||||
{
|
||||
m->sd->mirrors = eina_inlist_remove(m->sd->mirrors, EINA_INLIST_GET(m));
|
||||
evas_object_event_callback_del_full(m->mirror, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
evas_object_del(m->mirror);
|
||||
free(m);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_deskmirror_mirror_geometry_get(Mirror *m)
|
||||
{
|
||||
if (m->cw->bd)
|
||||
{
|
||||
m->x = m->cw->bd->x;
|
||||
m->y = m->cw->bd->y;
|
||||
m->w = m->cw->bd->w;
|
||||
if (m->cw->bd->shaded)
|
||||
m->h = m->cw->bd->client_inset.t;
|
||||
else
|
||||
m->h = m->cw->bd->h;
|
||||
}
|
||||
else if (m->cw->not_in_layout)
|
||||
evas_object_geometry_get(m->cw->effect_obj, &m->x, &m->y, &m->w, &m->h);
|
||||
else
|
||||
e_layout_child_geometry_get(m->cw->effect_obj, &m->x, &m->y, &m->w, &m->h);
|
||||
E_Zone *zone;
|
||||
|
||||
evas_object_geometry_get(m->comp_object, &m->x, &m->y, &m->w, &m->h);
|
||||
zone = e_comp_object_util_zone_get(m->comp_object);
|
||||
if (zone)
|
||||
m->x -= zone->x, m->y -= zone->y;
|
||||
/* double check here if we get zeroes */
|
||||
if ((!m->w) || (!m->h))
|
||||
{
|
||||
m->w = m->cw->w, m->h = m->cw->h;
|
||||
m->x = m->cw->x, m->y = m->cw->y;
|
||||
ERR("ACK!");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -380,49 +410,64 @@ _e_deskmirror_mirror_reconfigure(Mirror *m)
|
|||
_e_deskmirror_mirror_geometry_get(m);
|
||||
e_layout_child_move(m->mirror, m->x, m->y);
|
||||
e_layout_child_resize(m->mirror, m->w, m->h);
|
||||
if (_e_deskmirror_win_visible_get(m->sd, m->cw) && m->w && m->h)
|
||||
evas_object_show(m->mirror);
|
||||
else
|
||||
evas_object_hide(m->mirror);
|
||||
_mirror_visible_apply(m);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_deskmirror_mirror_del_hash(Mirror *m)
|
||||
{
|
||||
m->sd->mirrors = eina_inlist_remove(m->sd->mirrors, EINA_INLIST_GET(m));
|
||||
evas_object_smart_callback_del_full(m->comp_object, "frame_recalc_done", _e_deskmirror_mirror_frame_recalc_cb, m);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
evas_object_del(m->mirror);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_SHOW, (Evas_Object_Event_Cb)_comp_object_show, m);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_HIDE, (Evas_Object_Event_Cb)_comp_object_hide, m);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESTACK, (Evas_Object_Event_Cb)_comp_object_stack, m);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_RESIZE, (Evas_Object_Event_Cb)_comp_object_configure, m);
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_MOVE, (Evas_Object_Event_Cb)_comp_object_configure, m);
|
||||
free(m);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_mirror_border_new(Mirror *m)
|
||||
_mirror_client_new(Mirror *m)
|
||||
{
|
||||
Evas_Object *o;
|
||||
Mirror_Border *mb;
|
||||
char buf[4096];
|
||||
|
||||
_mirror_border_smart_init();
|
||||
o = evas_object_smart_add(m->sd->e, _mirror_border_smart);
|
||||
_mirror_client_smart_init();
|
||||
o = evas_object_smart_add(m->sd->e, _mirror_client_smart);
|
||||
mb = evas_object_smart_data_get(o);
|
||||
mb->m = m;
|
||||
mb->frame = edje_object_add(m->sd->e);
|
||||
evas_object_name_set(mb->frame, "mirror_border");
|
||||
snprintf(buf, sizeof(buf), "e/deskmirror/frame/%s", m->cw->bd->client.border.name);
|
||||
snprintf(buf, sizeof(buf), "e/deskmirror/frame/%s", m->ec->border.name);
|
||||
e_theme_edje_object_set(mb->frame, "base/theme/borders", buf);
|
||||
if (e_util_border_shadow_state_get(m->cw->bd))
|
||||
if (e_util_client_shadow_state_get(m->ec))
|
||||
edje_object_signal_emit(mb->frame, "e,state,shadow,on", "e");
|
||||
else
|
||||
edje_object_signal_emit(mb->frame, "e,state,shadow,off", "e");
|
||||
edje_object_signal_callback_add(mb->m->cw->bd->bg_object, "*", "*", _mirror_border_signal_cb, mb);
|
||||
if (e_border_focused_get() == mb->m->cw->bd)
|
||||
if (m->comp_object)
|
||||
{
|
||||
e_comp_object_signal_callback_add(mb->m->comp_object, "*", "*", _mirror_client_signal_cb, mb);
|
||||
evas_object_event_callback_add(m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
}
|
||||
if (mb->m->ec->focused)
|
||||
edje_object_signal_emit(mb->frame, "e,state,focused", "e");
|
||||
if (mb->m->cw->bd->shaded)
|
||||
if (mb->m->ec->shaded)
|
||||
edje_object_signal_emit(mb->frame, "e,state,shaded", "e");
|
||||
if (mb->m->cw->bd->maximized)
|
||||
if (mb->m->ec->maximized)
|
||||
edje_object_signal_emit(mb->frame, "e,action,maximize", "e");
|
||||
if (mb->m->cw->bd->sticky)
|
||||
if (mb->m->ec->sticky)
|
||||
edje_object_signal_emit(mb->frame, "e,state,sticky", "e");
|
||||
|
||||
mb->mirror = m->mirror;
|
||||
evas_object_smart_member_add(mb->frame, o);
|
||||
evas_object_name_set(mb->mirror, "mirror");
|
||||
evas_object_smart_member_add(mb->mirror, o);
|
||||
edje_object_part_swallow(mb->frame, "e.swallow.client", m->mirror);
|
||||
edje_object_part_text_set(mb->frame, "e.text.title", m->cw->bd->client.netwm.name ?: m->cw->bd->client.icccm.name);
|
||||
_mirror_scale_set(m, (double)m->sd->h / (double)m->sd->desk->zone->h);
|
||||
evas_object_event_callback_add(m->cw->bd->bg_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_frame_del_cb, mb);
|
||||
edje_object_part_text_set(mb->frame, "e.text.title", e_client_name_get(m->ec));
|
||||
if (m->sd->h)
|
||||
_mirror_scale_set(m, (double)m->sd->h / (double)m->sd->desk->zone->h);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -430,151 +475,207 @@ static void
|
|||
_e_deskmirror_mirror_setup(Mirror *m)
|
||||
{
|
||||
if (!m->mirror) return;
|
||||
if (m->cw->bd && m->cw->bd->bg_object)
|
||||
evas_object_event_callback_del_full(m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
if (m->ec && e_comp_object_frame_exists(m->comp_object))
|
||||
{
|
||||
m->mirror = _mirror_border_new(m);
|
||||
m->mirror = _mirror_client_new(m);
|
||||
m->frame = 1;
|
||||
}
|
||||
else
|
||||
evas_object_pass_events_set(m->mirror, 1);
|
||||
{
|
||||
evas_object_pass_events_set(m->mirror, !m->ec);
|
||||
evas_object_event_callback_add(m->comp_object, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
}
|
||||
if (m->ec) evas_object_data_set(m->mirror, "E_Client", m->ec);
|
||||
evas_object_precise_is_inside_set(m->mirror, m->ec && m->ec->shaped);
|
||||
e_layout_pack(m->sd->layout, m->mirror);
|
||||
evas_object_event_callback_add(m->mirror, EVAS_CALLBACK_DEL, _e_deskmirror_mirror_del_cb, m);
|
||||
_e_deskmirror_mirror_reconfigure(m);
|
||||
if (m->sd->handlers) // no handlers = we're setting up = there's no possible listeners
|
||||
{
|
||||
_comp_object_stack(m, NULL, m->comp_object, NULL);
|
||||
if (!m->added)
|
||||
evas_object_smart_callback_call(m->sd->obj, "mirror_add", m->mirror);
|
||||
}
|
||||
m->added = 1;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_comp_object_check(Mirror *m)
|
||||
{
|
||||
int w, h;
|
||||
|
||||
evas_object_geometry_get(m->comp_object, NULL, NULL, &w, &h);
|
||||
if ((w < 2) || (h < 2)) return EINA_FALSE;
|
||||
m->mirror = e_comp_object_util_mirror_add(m->comp_object);
|
||||
if (m->mirror) evas_object_layer_set(m->mirror, evas_object_layer_get(m->comp_object));
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_comp_object_hide(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_mirror_visible_apply(m);
|
||||
}
|
||||
|
||||
static void
|
||||
_comp_object_show(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
if (!m->mirror)
|
||||
{
|
||||
if (!_comp_object_check(m)) return;
|
||||
}
|
||||
_mirror_visible_apply(m);
|
||||
}
|
||||
|
||||
static void
|
||||
_comp_object_stack(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Evas_Object *comp_object;
|
||||
|
||||
if (!m->mirror)
|
||||
{
|
||||
if (!_comp_object_check(m)) return;
|
||||
}
|
||||
comp_object = evas_object_below_get(obj);
|
||||
while (comp_object)
|
||||
{
|
||||
Mirror *m2;
|
||||
|
||||
m2 = eina_hash_find(m->sd->mirror_hash, &comp_object);
|
||||
if (m2 && m2->mirror)
|
||||
{
|
||||
e_layout_child_raise_above(m->mirror, m2->mirror);
|
||||
return;
|
||||
}
|
||||
comp_object = evas_object_below_get(comp_object);
|
||||
}
|
||||
e_layout_child_lower(m->mirror);
|
||||
}
|
||||
|
||||
static void
|
||||
_comp_object_configure(Mirror *m, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
if (!m->mirror)
|
||||
{
|
||||
if (!_comp_object_check(m)) return;
|
||||
}
|
||||
_e_deskmirror_mirror_reconfigure(m);
|
||||
}
|
||||
|
||||
static Mirror *
|
||||
_e_deskmirror_mirror_add(E_Smart_Data *sd, E_Comp_Win *cw)
|
||||
_e_deskmirror_mirror_add(E_Smart_Data *sd, Evas_Object *obj)
|
||||
{
|
||||
Mirror *m;
|
||||
Evas_Object *o = NULL;
|
||||
E_Client *ec;
|
||||
int w, h;
|
||||
|
||||
if (cw->bd)
|
||||
if (sd->desk->zone != e_comp_object_util_zone_get(obj)) return NULL;
|
||||
|
||||
ec = e_comp_object_client_get(obj);
|
||||
if (ec)
|
||||
{
|
||||
if ((cw->bd->zone != sd->desk->zone) || ((cw->bd->desk != sd->desk) && (!cw->bd->sticky)))
|
||||
if ((ec->desk != sd->desk) && (!ec->sticky))
|
||||
return NULL;
|
||||
if (ec->input_only || ec->ignored)
|
||||
return NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
int x, y;
|
||||
E_Shelf *es;
|
||||
|
||||
if (!sd->desk->visible) return NULL;
|
||||
if (cw->not_in_layout)
|
||||
evas_object_geometry_get(cw->effect_obj, &x, &y, NULL, NULL);
|
||||
if (sd->pager || sd->taskbar) return NULL;
|
||||
es = evas_object_data_get(obj, "E_Shelf");
|
||||
if (es)
|
||||
{
|
||||
if (!e_shelf_desk_visible(es, sd->desk)) return NULL;
|
||||
}
|
||||
else
|
||||
e_layout_child_geometry_get(cw->effect_obj, &x, &y, NULL, NULL);
|
||||
if (!E_INSIDE(x, y, sd->desk->zone->x, sd->desk->zone->y, sd->desk->zone->w, sd->desk->zone->h)) return NULL;
|
||||
{
|
||||
if (sd->desk != e_desk_current_get(sd->desk->zone)) return NULL;
|
||||
}
|
||||
}
|
||||
if ((cw->w > 1) && (cw->h > 1))
|
||||
evas_object_geometry_get(obj, NULL, NULL, &w, &h);
|
||||
if ((w > 1) && (h > 1))
|
||||
{
|
||||
o = e_comp_win_image_mirror_add(cw);
|
||||
if (!o) return NULL;
|
||||
o = e_comp_object_util_mirror_add(obj);
|
||||
}
|
||||
m = calloc(1, sizeof(Mirror));
|
||||
m->cw = cw;
|
||||
m->comp_object = obj;
|
||||
m->ec = ec;
|
||||
m->sd = sd;
|
||||
m->mirror = o;
|
||||
if (o) evas_object_layer_set(o, evas_object_layer_get(obj));
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_SHOW, (Evas_Object_Event_Cb)_comp_object_show, m);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_HIDE, (Evas_Object_Event_Cb)_comp_object_hide, m);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESTACK, (Evas_Object_Event_Cb)_comp_object_stack, m);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_RESIZE, (Evas_Object_Event_Cb)_comp_object_configure, m);
|
||||
evas_object_event_callback_add(obj, EVAS_CALLBACK_MOVE, (Evas_Object_Event_Cb)_comp_object_configure, m);
|
||||
evas_object_smart_callback_add(obj, "frame_recalc_done", _e_deskmirror_mirror_frame_recalc_cb, m);
|
||||
sd->mirrors = eina_inlist_append(sd->mirrors, EINA_INLIST_GET(m));
|
||||
eina_hash_direct_add(sd->mirror_hash, &m->cw, m);
|
||||
eina_hash_add(sd->mirror_hash, &obj, m);
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
return m;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_comp_source_add(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Comp *ev)
|
||||
_comp_object_add(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Comp_Object *ev)
|
||||
{
|
||||
if (eina_hash_find(sd->mirror_hash, &ev->cw)) return ECORE_CALLBACK_RENEW;
|
||||
_e_deskmirror_mirror_add(sd, ev->cw);
|
||||
if (eina_hash_find(sd->mirror_hash, &ev->comp_object)) return ECORE_CALLBACK_RENEW;
|
||||
_e_deskmirror_mirror_add(sd, ev->comp_object);
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_comp_source_visible(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Comp *ev)
|
||||
_client_desk_set(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Client_Desk_Set *ev)
|
||||
{
|
||||
Mirror *m;
|
||||
|
||||
m = eina_hash_find(sd->mirror_hash, &ev->cw);
|
||||
if (!m) return ECORE_CALLBACK_RENEW;
|
||||
if (!m->mirror)
|
||||
{
|
||||
if ((m->cw->w < 2) || (m->cw->h < 2)) return ECORE_CALLBACK_RENEW;
|
||||
m->mirror = e_comp_win_image_mirror_add(m->cw);
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
}
|
||||
if (_e_deskmirror_win_visible_get(m->sd, m->cw))
|
||||
evas_object_show(m->mirror);
|
||||
else
|
||||
evas_object_hide(m->mirror);
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_comp_source_stack(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Comp *ev)
|
||||
{
|
||||
Mirror *m, *m2;
|
||||
E_Comp_Win *cw;
|
||||
|
||||
m = eina_hash_find(sd->mirror_hash, &ev->cw);
|
||||
if (!m) return ECORE_CALLBACK_RENEW;
|
||||
if (!m->mirror)
|
||||
{
|
||||
if ((m->cw->w < 2) || (m->cw->h < 2)) return ECORE_CALLBACK_RENEW;
|
||||
m->mirror = e_comp_win_image_mirror_add(m->cw);
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
}
|
||||
if (!EINA_INLIST_GET(ev->cw)->next)
|
||||
e_layout_child_raise(m->mirror);
|
||||
else if (!EINA_INLIST_GET(ev->cw)->prev)
|
||||
e_layout_child_lower(m->mirror);
|
||||
else
|
||||
{
|
||||
EINA_INLIST_FOREACH(EINA_INLIST_GET(ev->cw)->next, cw)
|
||||
{
|
||||
m2 = eina_hash_find(sd->mirror_hash, &cw);
|
||||
if ((!m2) || (!m2->mirror)) continue;
|
||||
e_layout_child_lower_below(m->mirror, m2->mirror);
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
e_layout_child_raise(m->mirror);
|
||||
}
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_comp_source_configure(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Comp *ev)
|
||||
{
|
||||
Mirror *m;
|
||||
|
||||
m = eina_hash_find(sd->mirror_hash, &ev->cw);
|
||||
m = eina_hash_find(sd->mirror_hash, &ev->ec->frame);
|
||||
if (m)
|
||||
{
|
||||
if (!m->mirror)
|
||||
{
|
||||
if ((m->cw->w < 2) || (m->cw->h < 2)) return ECORE_CALLBACK_RENEW;
|
||||
m->mirror = e_comp_win_image_mirror_add(m->cw);
|
||||
_e_deskmirror_mirror_setup(m);
|
||||
}
|
||||
_e_deskmirror_mirror_reconfigure(m);
|
||||
/* ev->desk is previous desk */
|
||||
if ((ev->desk == sd->desk) && (!ev->ec->sticky))
|
||||
eina_hash_del_by_key(sd->mirror_hash, &ev->ec->frame);
|
||||
}
|
||||
if (sd->desk == ev->ec->desk)
|
||||
_e_deskmirror_mirror_add(sd, ev->ec->frame);
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_client_property(E_Smart_Data *sd, int type EINA_UNUSED, E_Event_Client_Property *ev)
|
||||
{
|
||||
Mirror *m;
|
||||
|
||||
if (!(ev->property & E_CLIENT_PROPERTY_NETWM_STATE)) return ECORE_CALLBACK_RENEW;
|
||||
|
||||
m = eina_hash_find(sd->mirror_hash, &ev->ec->frame);
|
||||
if (m) _mirror_visible_apply(m);
|
||||
return ECORE_CALLBACK_RENEW;
|
||||
}
|
||||
|
||||
/* externally accessible functions */
|
||||
EAPI Evas_Object *
|
||||
e_deskmirror_add(E_Desk *desk)
|
||||
e_deskmirror_add(E_Desk *desk, Eina_Bool pager, Eina_Bool taskbar)
|
||||
{
|
||||
E_Smart_Data *sd;
|
||||
Evas_Object *o;
|
||||
Evas_Object *o, *l;
|
||||
Evas *e;
|
||||
E_Comp_Win *cw;
|
||||
|
||||
e = e_comp_get(desk)->evas;
|
||||
_e_deskmirror_smart_init();
|
||||
o = evas_object_smart_add(e, _e_deskmirror_smart);
|
||||
e_object_ref(E_OBJECT(desk));
|
||||
sd = evas_object_smart_data_get(o);
|
||||
sd->pager = !!pager;
|
||||
sd->taskbar = !!taskbar;
|
||||
sd->desk = desk;
|
||||
sd->mirror_hash = eina_hash_pointer_new((Eina_Free_Cb)_e_deskmirror_mirror_del_hash);
|
||||
sd->desk_delfn = e_object_delfn_add(E_OBJECT(desk), (Ecore_End_Cb)_e_deskmirror_delfn, sd);
|
||||
sd->bgpreview = e_widget_bgpreview_desk_add(e, desk->zone, desk->x, desk->y);
|
||||
evas_object_pass_events_set(sd->bgpreview, 1);
|
||||
evas_object_clip_set(sd->bgpreview, sd->clip);
|
||||
evas_object_smart_member_add(sd->bgpreview, o);
|
||||
evas_object_show(sd->bgpreview);
|
||||
|
@ -584,25 +685,78 @@ e_deskmirror_add(E_Desk *desk)
|
|||
evas_object_smart_member_add(sd->layout, o);
|
||||
evas_object_show(sd->layout);
|
||||
|
||||
e_comp_object_util_center_on(o, sd->desk->zone->bg_clip_object);
|
||||
|
||||
e_layout_freeze(sd->layout);
|
||||
|
||||
EINA_INLIST_FOREACH(e_comp_get(desk)->wins, cw)
|
||||
l = evas_object_bottom_get(e_comp_get(desk)->evas);
|
||||
do
|
||||
{
|
||||
Mirror *m;
|
||||
|
||||
m = _e_deskmirror_mirror_add(sd, cw);
|
||||
if (m) e_layout_child_raise(m->mirror);
|
||||
}
|
||||
if (evas_object_data_get(l, "comp_object"))
|
||||
_e_deskmirror_mirror_add(sd, l);
|
||||
l = evas_object_above_get(l);
|
||||
} while (l);
|
||||
|
||||
e_layout_thaw(sd->layout);
|
||||
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_SOURCE_ADD, _comp_source_add, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_SOURCE_CONFIGURE, _comp_source_configure, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_SOURCE_STACK, _comp_source_stack, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_SOURCE_VISIBILITY, _comp_source_visible, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_COMP_OBJECT_ADD, (Ecore_Event_Handler_Cb)_comp_object_add, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_CLIENT_PROPERTY, (Ecore_Event_Handler_Cb)_client_property, sd);
|
||||
E_LIST_HANDLER_APPEND(sd->handlers, E_EVENT_CLIENT_DESK_SET, (Ecore_Event_Handler_Cb)_client_desk_set, sd);
|
||||
return o;
|
||||
}
|
||||
|
||||
EAPI Evas_Object *
|
||||
e_deskmirror_mirror_find(Evas_Object *deskmirror, Evas_Object *comp_object)
|
||||
{
|
||||
Mirror *m;
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(deskmirror, NULL);
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(comp_object, NULL);
|
||||
API_ENTRY(deskmirror) NULL;
|
||||
|
||||
m = eina_hash_find(sd->mirror_hash, &comp_object);
|
||||
return m ? m->mirror : NULL;
|
||||
}
|
||||
|
||||
EAPI Eina_List *
|
||||
e_deskmirror_mirror_list(Evas_Object *deskmirror)
|
||||
{
|
||||
Eina_List *l = NULL;
|
||||
Mirror *m;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(deskmirror, NULL);
|
||||
API_ENTRY(deskmirror) NULL;
|
||||
|
||||
EINA_INLIST_FOREACH(sd->mirrors, m)
|
||||
{
|
||||
if (m->mirror)
|
||||
l = eina_list_append(l, m->mirror);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_deskmirror_coord_canvas_to_virtual(Evas_Object *obj, Evas_Coord cx, Evas_Coord cy, Evas_Coord *vx, Evas_Coord *vy)
|
||||
{
|
||||
API_ENTRY(obj);
|
||||
|
||||
e_layout_coord_canvas_to_virtual(sd->layout, cx, cy, vx, vy);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_deskmirror_coord_virtual_to_canvas(Evas_Object *obj, Evas_Coord vx, Evas_Coord vy, Evas_Coord *cx, Evas_Coord *cy)
|
||||
{
|
||||
API_ENTRY(obj);
|
||||
|
||||
e_layout_coord_virtual_to_canvas(sd->layout, vx, vy, cx, cy);
|
||||
}
|
||||
|
||||
EAPI E_Desk *
|
||||
e_deskmirror_desk_get(Evas_Object *obj)
|
||||
{
|
||||
API_ENTRY(obj) NULL;
|
||||
return sd->desk;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
e_deskmirror_util_wins_print(Evas_Object *obj)
|
||||
{
|
||||
|
@ -613,15 +767,14 @@ e_deskmirror_util_wins_print(Evas_Object *obj)
|
|||
sd = evas_object_smart_data_get(obj);
|
||||
EINA_INLIST_FOREACH(sd->mirrors, m)
|
||||
{
|
||||
if (m->cw->bd)
|
||||
fprintf(stderr, "MIRROR BD: %p - %u '%s:%s'\n", m->cw, m->cw->win, m->cw->bd->client.icccm.name, m->cw->bd->client.icccm.class);
|
||||
else if (m->cw->pop)
|
||||
fprintf(stderr, "MIRROR POP: %p - %s\n", m->cw, m->cw->pop->name);
|
||||
else if (m->cw->menu)
|
||||
fprintf(stderr, "MIRROR MENU: %p - %s\n", m->cw, m->cw->menu->header.title);
|
||||
else if (m->cw->real_obj)
|
||||
fprintf(stderr, "MIRROR OBJ: %p - %s\n", m->cw, evas_object_name_get(m->cw->obj));
|
||||
if (m->ec)
|
||||
{
|
||||
if (m->ec->override)
|
||||
fprintf(stderr, "MIRROR OVERRIDE: %p - %p%s\n", m->comp_object, m->ec, m->ec->input_only ? " INPUT" : "");
|
||||
else
|
||||
fprintf(stderr, "MIRROR EC: %p - %p '%s:%s'\n", m->comp_object, m->ec, m->ec->icccm.name, m->ec->icccm.class);
|
||||
}
|
||||
else
|
||||
fprintf(stderr, "MIRROR WIN: %p - %u%s\n", m->cw, m->cw->win, m->cw->input_only ? " INPUT" : "");
|
||||
fprintf(stderr, "MIRROR OBJ: %p\n", m->comp_object);
|
||||
}
|
||||
}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue