patches that i said were in - commit. (see my reply emails)
also finish off a TODO item or 2 SVN revision: 23267
This commit is contained in:
parent
a69bc7767c
commit
97eec41ad9
25
TODO
25
TODO
|
@ -8,6 +8,11 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
BUGS / FIXES
|
BUGS / FIXES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
* BUG: change exe name in basic mode in eap editor and icon vanishes (don't
|
||||||
|
extract existing icon and write out to tmp .png while rebuilding).
|
||||||
|
* BUG: resolution (xrandr) changes seem to screw the shelf up a bit.
|
||||||
|
* BUG: openoffice2's impress presentation fullscreen has sizing and
|
||||||
|
configuration issues.
|
||||||
* BUG: ghost windows happen if windows close when on another desktop or if
|
* BUG: ghost windows happen if windows close when on another desktop or if
|
||||||
windows are very short-lived
|
windows are very short-lived
|
||||||
* BUG: k3b has minimization issues when burning cds (it tries to unminimize
|
* BUG: k3b has minimization issues when burning cds (it tries to unminimize
|
||||||
|
@ -40,6 +45,19 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
ESSENTIAL FEATURES
|
ESSENTIAL FEATURES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
* on xrandr screen res change e moves and resizes windows to fit in the new
|
||||||
|
resolution. this is good and bad. if some other app temporarily changes
|
||||||
|
res this means everything gets squeezed. we need a "temporary resize due to
|
||||||
|
res change" geometry state for apps where they get resized to a new pos/size
|
||||||
|
and the old size/pos stored. on a move or resize etc. by a user this old
|
||||||
|
geom is freed, but on a res change, e takes the old geom, if there, and
|
||||||
|
tries to use it (then limiting geom to the new screen res as it cuurently
|
||||||
|
does) otherwise it creates a new saved geom for the cur geom before
|
||||||
|
limiting it. maximized windows are reset to their old size/pos then
|
||||||
|
re-maximized too. old szie from unmaximize needs to have this check too
|
||||||
|
on unmaximize as do fullscreen windows. NB: what if app moves/resizes
|
||||||
|
itself during this - i assume for now all bets are off with prior geometry
|
||||||
|
then.
|
||||||
* language packs: need to have a tool to load/setup a language pack (which
|
* language packs: need to have a tool to load/setup a language pack (which
|
||||||
means .mo compiled files from a .po, an optional font and a config file that
|
means .mo compiled files from a .po, an optional font and a config file that
|
||||||
specifies the locale and font) and then install the font(s) either as a user
|
specifies the locale and font) and then install the font(s) either as a user
|
||||||
|
@ -78,20 +96,17 @@ Some of the things (in very short form) that need to be done to E17...
|
||||||
"NICE TO HAVE" FEATURES
|
"NICE TO HAVE" FEATURES
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
* option to allow flipping desktops to wrap at virtual desktop grid edges
|
|
||||||
* winlist and exebuf can let the mouse select items
|
* winlist and exebuf can let the mouse select items
|
||||||
* option to NOT raise on focus in click to focus
|
|
||||||
* switch to desktop of a new window if it opens on another desktop than the
|
* switch to desktop of a new window if it opens on another desktop than the
|
||||||
current one
|
current one (optional too)
|
||||||
* emit signal to submenu entries if they have a submenu shown for them or not
|
* emit signal to submenu entries if they have a submenu shown for them or not
|
||||||
* setup configs for gnome and kde (as options) if they are installed (eg
|
* setup configs for gnome and kde (as options) if they are installed (eg
|
||||||
run gnome-settings-daemon).
|
run gnome-settings-daemon).
|
||||||
* check engine can work on a given screen before using it
|
* check evas engine can work on a given screen before using it
|
||||||
* non opaque move/resize
|
* non opaque move/resize
|
||||||
* add "osd" subsystem for things like volume controls on keybboards, etc.
|
* add "osd" subsystem for things like volume controls on keybboards, etc.
|
||||||
that overlay the screen
|
that overlay the screen
|
||||||
* file icons on the desktop (people ask for it) - xdnd for these
|
* file icons on the desktop (people ask for it) - xdnd for these
|
||||||
* "disable this gadget" menu option on gadcon clients
|
|
||||||
* improve drag/resize of gadget items
|
* improve drag/resize of gadget items
|
||||||
* pager should be able to be configured to control more than the current zone
|
* pager should be able to be configured to control more than the current zone
|
||||||
(select which zone they control)
|
(select which zone they control)
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||||
<HTML>
|
<html>
|
||||||
<HEAD>
|
<head>
|
||||||
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
|
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8">
|
||||||
<TITLE>Enlightenment Developer Documentation</TITLE>
|
<title>Enlightenment Developer Documentation</title>
|
||||||
<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.1.3 (Linux)">
|
<meta name="GENERATOR" content="OpenOffice.org 1.1.3 (Linux)">
|
||||||
<META NAME="CREATED" CONTENT="20041227;10170000">
|
<meta name="CREATED" content="20041227;10170000">
|
||||||
<META NAME="CHANGED" CONTENT="20041227;10253900">
|
<meta name="CHANGED" content="20041227;10253900">
|
||||||
<STYLE>
|
<style>
|
||||||
<!--
|
<!--
|
||||||
@page { size: 8.5in 11in }
|
@page { size: 8.5in 11in }
|
||||||
TD P.western { font-size: 8pt }
|
TD P.western { font-size: 8pt }
|
||||||
|
@ -20,44 +20,52 @@
|
||||||
A.sdendnotesym-western { font-size: 8pt }
|
A.sdendnotesym-western { font-size: 8pt }
|
||||||
A.sdendnotesym-cjk { font-family: "Bitstream Vera Sans"; font-size: 8pt }
|
A.sdendnotesym-cjk { font-family: "Bitstream Vera Sans"; font-size: 8pt }
|
||||||
-->
|
-->
|
||||||
</STYLE>
|
</style>
|
||||||
</HEAD>
|
</head>
|
||||||
<BODY LANG="en-US" DIR="LTR">
|
<body dir="ltr" lang="en-US">
|
||||||
<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0 STYLE="page-break-before: always">
|
<table style="page-break-before: always;" border="0" cellpadding="0"
|
||||||
<COL WIDTH=256*>
|
cellspacing="0" width="100%">
|
||||||
<TR>
|
<col width="256*"> <tbody>
|
||||||
<TD WIDTH=100% VALIGN=TOP>
|
<tr>
|
||||||
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0in"><IMG SRC="enlightenment.png" NAME="Graphic1" ALIGN=LEFT WIDTH=320 HEIGHT=320 BORDER=0><FONT FACE="Bitstream Vera Sans"><FONT SIZE=5><B>Enlightenment</B></FONT></FONT></P>
|
<td valign="top" width="100%">
|
||||||
<P CLASS="western" STYLE="margin-bottom: 0in"><BR>
|
<p class="western" style="margin-bottom: 0in;" align="center"><img
|
||||||
</P>
|
src="enlightenment.png" name="Graphic1" align="left" border="0"
|
||||||
<P CLASS="western" ALIGN=CENTER STYLE="margin-bottom: 0in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 6pt">Version
|
height="320" width="320"><font face="Bitstream Vera Sans"><font
|
||||||
0.17.0 </FONT></FONT>
|
size="5"><b>Enlightenment</b></font></font></p>
|
||||||
</P>
|
<p class="western" style="margin-bottom: 0in;"><br>
|
||||||
<P CLASS="western" STYLE="margin-bottom: 0in"><BR>
|
</p>
|
||||||
</P>
|
<p class="western" style="margin-bottom: 0in;" align="center"><font
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>What
|
style="font-size: 6pt; font-family: sans-serif;">Version
|
||||||
is Enlightenment?</B> </FONT></FONT>
|
0.17.0</font><big><big><big><font face="Bitstream Vera Sans"><font
|
||||||
</P>
|
style="font-size: 6pt;" size="1"><big><big><big><big> </big></big></big></big></font></font>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Enlightenment
|
</big></big></big></p>
|
||||||
is a Window Manager for X11. This is the latest incarnation of
|
<p class="western" style="margin-bottom: 0in;"><br>
|
||||||
code of the Enlightenment window manager (often referred to in
|
</p>
|
||||||
short as WM). This WM is built on the EFL (Enlightenment
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Foundation Libraries) that have been worked on very hard over the
|
style="font-size: 8pt;"><b>What is Enlightenment?</b> </font> </p>
|
||||||
last few years. These libraries provide a sound base on which to
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
build the WM and related tools, utilities, and applications.</FONT></FONT></P>
|
style="font-size: 8pt;">Enlightenment is a Window
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Right
|
Manager for X11. This is the latest incarnation of code of the
|
||||||
now if you are just a "user" this code is NOT for you.
|
Enlightenment window manager (often referred to in short as WM). This
|
||||||
You're on your own. If you are a developer wanting to work on the
|
WM is built on the EFL (Enlightenment Foundation Libraries) that have
|
||||||
code - read on. But first we should take a break for some
|
been worked on very hard over the last few years. These libraries
|
||||||
history... </FONT></FONT>
|
provide a sound base on which to build the WM and related tools,
|
||||||
</P>
|
utilities, and applications.</font></p>
|
||||||
</TD>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
</TR>
|
style="font-size: 8pt;">Right now if you are just a
|
||||||
</TABLE>
|
"user" this code is NOT for you. You're on your own. If you are a
|
||||||
<HR>
|
developer wanting to work on the code - read on. But first we should
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>A
|
take a break for some history... </font> </p>
|
||||||
Brief History of Time... err Enlightenment</B></FONT></FONT></P>
|
</td>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">In
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<hr style="font-family: sans-serif;">
|
||||||
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
|
style="font-size: 8pt;"><b>A
|
||||||
|
Brief History of Time... err Enlightenment</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">In
|
||||||
the past E has undergone 1 major rewrite since release DR
|
the past E has undergone 1 major rewrite since release DR
|
||||||
(Development Release) 0.1. This rewrite occurred for DR 0.14). DR
|
(Development Release) 0.1. This rewrite occurred for DR 0.14). DR
|
||||||
0.17 heralds another major rewrite. We have to be honest here. The
|
0.17 heralds another major rewrite. We have to be honest here. The
|
||||||
|
@ -76,8 +84,9 @@ and we are proud enough to probably say it's some of the better API's
|
||||||
and code of any available in the world or used in any application or
|
and code of any available in the world or used in any application or
|
||||||
WM. It's not the best, but it's pretty good. In doing this rewrite
|
WM. It's not the best, but it's pretty good. In doing this rewrite
|
||||||
and split, we aim to not make those mistakes again that happened
|
and split, we aim to not make those mistakes again that happened
|
||||||
before DR 0.17.0.</FONT></FONT></P>
|
before DR 0.17.0.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">With
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">With
|
||||||
Enlightenment and EFL's massive break-up into smaller sized chunks,
|
Enlightenment and EFL's massive break-up into smaller sized chunks,
|
||||||
many users will complain about “how hard it is to install”
|
many users will complain about “how hard it is to install”
|
||||||
because there are so many libraries and inter-dependencies to handle.
|
because there are so many libraries and inter-dependencies to handle.
|
||||||
|
@ -95,64 +104,72 @@ existing infrastructures - or extend them cleanly as needed. Just
|
||||||
because an infrastructure or system doesn't provide an accessor or
|
because an infrastructure or system doesn't provide an accessor or
|
||||||
way of doing something does NOT mean you can't or chouldn't add it.
|
way of doing something does NOT mean you can't or chouldn't add it.
|
||||||
Choose a clean “correct” implementation over a nasty hack, all
|
Choose a clean “correct” implementation over a nasty hack, all
|
||||||
the time. You get the idea. Now, on to the style guide.</FONT></FONT></P>
|
the time. You get the idea. Now, on to the style guide.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Enlightenment
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Stylin' straight from the top of ma dome</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Enlightenment
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Firstly
|
Stylin' straight from the top of ma dome</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Firstly
|
||||||
comes naming. All functions are name spaced. The EFL libraries begin
|
comes naming. All functions are name spaced. The EFL libraries begin
|
||||||
with library_something_something. It is object oriented naming so you
|
with library_something_something. It is object oriented naming so you
|
||||||
will have system_subsystem_subsystem_object_verb() as a name. For
|
will have system_subsystem_subsystem_object_verb() as a name. For
|
||||||
example: e_config_load() or e_border_move() etc. All functions are
|
example: e_config_load() or e_border_move() etc. All functions are
|
||||||
all lower-case with underscores between "words". All
|
all lower-case with underscores between "words". All
|
||||||
functions that are accessed outside a file must have a prototype in
|
functions that are accessed outside a file must have a prototype in
|
||||||
the file's header. All files have their code file (e_file.c) and a
|
the file's header. All files have their code file (e_file.c) and a
|
||||||
header (e_file.h). The main "master" header (e.h) includes
|
header (e_file.h). The main "master" header (e.h) includes
|
||||||
all the smaller ones. All functions within that file are the same
|
all the smaller ones. All functions within that file are the same
|
||||||
name as the file. i.e. e_frog.c contains functions called
|
name as the file. i.e. e_frog.c contains functions called
|
||||||
e_frog_something(). All internal functions only used within that file
|
e_frog_something(). All internal functions only used within that file
|
||||||
should be declared as static and should begin with an underscore.
|
should be declared as static and should begin with an underscore.
|
||||||
i.e. _e_frog_something(). All "local" globals (global to
|
i.e. _e_frog_something(). All "local" globals (global to
|
||||||
that file only) should be declared static and beginning with _e_frog
|
that file only) should be declared static and beginning with _e_frog
|
||||||
just like functions. All static local functions should be at the end
|
just like functions. All static local functions should be at the end
|
||||||
of the file. All static function prototypes should be first at the
|
of the file. All static function prototypes should be first at the
|
||||||
top of each file. All static local variables should come next, then
|
top of each file. All static local variables should come next, then
|
||||||
followed by the accessible functions. Any system that has "state"
|
followed by the accessible functions. Any system that has "state"
|
||||||
should have an init and shutdown function. The init and shutdown
|
should have an init and shutdown function. The init and shutdown
|
||||||
functions should be called from e_main.c during startup and shutdown
|
functions should be called from e_main.c during startup and shutdown
|
||||||
of the WM. It is encouraged that even systems that do not have state
|
of the WM. It is encouraged that even systems that do not have state
|
||||||
have an init and shutdown call pair, just in case in future they will
|
have an init and shutdown call pair, just in case in future they will
|
||||||
gain state internally.</FONT></FONT></P>
|
gain state internally.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Any
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Any
|
||||||
system that returns objects (allocated structures) should probably
|
system that returns objects (allocated structures) should probably
|
||||||
use the E_Object system as a parent. See examples on its use in the
|
use the E_Object system as a parent. See examples on its use in the
|
||||||
code. E_Object provides a simple object wrapper with reference
|
code. E_Object provides a simple object wrapper with reference
|
||||||
counting, object pointer and type checking and safety that should,
|
counting, object pointer and type checking and safety that should,
|
||||||
runtime, trap a lot of potential problems and let the programmer know
|
runtime, trap a lot of potential problems and let the programmer know
|
||||||
about them. Use the object type checking macros for checking if an
|
about them. Use the object type checking macros for checking if an
|
||||||
object passed into a function as a parameter is a valid object.</FONT></FONT></P>
|
object passed into a function as a parameter is a valid object.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Keep
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Keep
|
||||||
to the indentation and spacing style thats there - it makes it easier
|
to the indentation and spacing style thats there - it makes it easier
|
||||||
to read if all the code matches. All functions called as "callbacks"
|
to read if all the code matches. All functions called as "callbacks"
|
||||||
should be called _e_system_cb_something. The "cb" denotes
|
should be called _e_system_cb_something. The "cb" denotes
|
||||||
that that function may get called by other code, maybe unpredictably,
|
that that function may get called by other code, maybe unpredictably,
|
||||||
at any time in response to an event, timer, or something mostly out
|
at any time in response to an event, timer, or something mostly out
|
||||||
of the control of the program itself. Functions such as the free
|
of the control of the program itself. Functions such as the free
|
||||||
function for an object aren't the same kind of callback, since they
|
function for an object aren't the same kind of callback, since they
|
||||||
are predictable and controllable, so they do not get "cb"
|
are predictable and controllable, so they do not get "cb"
|
||||||
in their name.</FONT></FONT></P>
|
in their name.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">So
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">So
|
||||||
that's the quick rundown on basic coding style. More will likely be
|
that's the quick rundown on basic coding style. More will likely be
|
||||||
added to this list, but the best way to put it all is "look at
|
added to this list, but the best way to put it all is "look at
|
||||||
what's there and follow the same style".</FONT></FONT></P>
|
what's there and follow the same style".</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Tree
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Layout</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Tree
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The
|
Layout</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">The
|
||||||
E17 source tree is well structured, with a location for everything.
|
E17 source tree is well structured, with a location for everything.
|
||||||
In the top-level directory you will find a src directory that is the
|
In the top-level directory you will find a src directory that is the
|
||||||
master directory for all the C source code for the WM and components.
|
master directory for all the C source code for the WM and components.
|
||||||
You will also find a doc and data directories. The doc directory
|
You will also find a doc and data directories. The doc directory
|
||||||
contains all documentation (this document for example).</FONT></FONT></P>
|
contains all documentation (this document for example).</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">The
|
||||||
data directory contains all cross-platform data needed for the WM to
|
data directory contains all cross-platform data needed for the WM to
|
||||||
run as well as a basic default theme that it also needs to run.
|
run as well as a basic default theme that it also needs to run.
|
||||||
Currently the default theme is not complete at all and is no
|
Currently the default theme is not complete at all and is no
|
||||||
|
@ -161,8 +178,9 @@ only just enough to make it work and demonstrate an example of how to
|
||||||
make a theme. There is also other data used for things like low-level
|
make a theme. There is also other data used for things like low-level
|
||||||
error dialogs (used for example if the theme doesn't work) as well as
|
error dialogs (used for example if the theme doesn't work) as well as
|
||||||
a default font and other system data such as data for the splash
|
a default font and other system data such as data for the splash
|
||||||
screen displayed while Enlightenment starts up.</FONT></FONT></P>
|
screen displayed while Enlightenment starts up.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">The
|
||||||
src directory contains 3 main repositories of code. They are bin, lib
|
src directory contains 3 main repositories of code. They are bin, lib
|
||||||
and modules. The bin directory contains all the source code for the
|
and modules. The bin directory contains all the source code for the
|
||||||
WM itself and any primary executables it uses during execution. The
|
WM itself and any primary executables it uses during execution. The
|
||||||
|
@ -175,10 +193,12 @@ Enlightenment too, so if a feature isn't used it doesn't have to use
|
||||||
any resources at all. Each module lives in its own subdirectory with
|
any resources at all. Each module lives in its own subdirectory with
|
||||||
the code and special module specific data like images, Edje .eet
|
the code and special module specific data like images, Edje .eet
|
||||||
files etc. that are specific to that module. See further on for more
|
files etc. that are specific to that module. See further on for more
|
||||||
information on modules.</FONT></FONT></P>
|
information on modules.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Design
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Ethos</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Design
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">As
|
Ethos</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">As
|
||||||
for design, Enlightenment doesn't strictly follow a conservative WM
|
for design, Enlightenment doesn't strictly follow a conservative WM
|
||||||
design. It does some things quite differently, with the aim of
|
design. It does some things quite differently, with the aim of
|
||||||
providing more features with simpler internal design to achieve more
|
providing more features with simpler internal design to achieve more
|
||||||
|
@ -198,9 +218,11 @@ seamlessly and all in sync by using window gravity and resizing of
|
||||||
the virtual root container. It also allows the WM to simulate
|
the virtual root container. It also allows the WM to simulate
|
||||||
different resolutions very easily since it can control the virtual
|
different resolutions very easily since it can control the virtual
|
||||||
root window, which is not normally possible to do with the real root
|
root window, which is not normally possible to do with the real root
|
||||||
window.</FONT></FONT></P>
|
window.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Managers</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Managers
|
style="font-size: 8pt;"><b>Managers</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Managers
|
||||||
are the basic unit of window management. One Manager object is
|
are the basic unit of window management. One Manager object is
|
||||||
created per root window to manage. For more people, even if they run
|
created per root window to manage. For more people, even if they run
|
||||||
Xinerama across multiple screens, there is only 1 root window, and
|
Xinerama across multiple screens, there is only 1 root window, and
|
||||||
|
@ -214,9 +236,11 @@ client gets to perform them, thus enabling it to be a WM. A Manager
|
||||||
object actually creates a window the size of the root window it
|
object actually creates a window the size of the root window it
|
||||||
manages and covers the root window up completely. Each Manager object
|
manages and covers the root window up completely. Each Manager object
|
||||||
may contain 1 or more Container objects which in-turn create their
|
may contain 1 or more Container objects which in-turn create their
|
||||||
own child windows of the Manager window.</FONT></FONT></P>
|
own child windows of the Manager window.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Containers</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Container
|
style="font-size: 8pt;"><b>Containers</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Container
|
||||||
objects create their own windows to CONTAIN managed window frames,
|
objects create their own windows to CONTAIN managed window frames,
|
||||||
the desktop window (the desktop background is actually just a big
|
the desktop window (the desktop background is actually just a big
|
||||||
window that is always kept below all frame windows that contains a
|
window that is always kept below all frame windows that contains a
|
||||||
|
@ -234,8 +258,9 @@ using an EDJE object for the background, the desktop wallpaper can be
|
||||||
animated, react to events and input, scale intelligently (not just
|
animated, react to events and input, scale intelligently (not just
|
||||||
“stretch” or “tile”), where the desktop wallpaper designer
|
“stretch” or “tile”), where the desktop wallpaper designer
|
||||||
can specify what elements of the wallpaper scale, align, where and
|
can specify what elements of the wallpaper scale, align, where and
|
||||||
how, if they tile, overlay, underlay each other, and how.</FONT></FONT></P>
|
how, if they tile, overlay, underlay each other, and how.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Currently
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Currently
|
||||||
the Container only responds to configuration change events to change
|
the Container only responds to configuration change events to change
|
||||||
the background, which needs to be a path to an Edje .eet file that
|
the background, which needs to be a path to an Edje .eet file that
|
||||||
contains a Edje group of the key “desktop/background”. It will
|
contains a Edje group of the key “desktop/background”. It will
|
||||||
|
@ -251,22 +276,27 @@ convert into a Edje .eet file, which now retains the scaling, tiling
|
||||||
and other preferences the user selected within the file. The user can
|
and other preferences the user selected within the file. The user can
|
||||||
now give this file to others and it will retain the same information,
|
now give this file to others and it will retain the same information,
|
||||||
without them needing to know if the wallpaper needs to tile as a
|
without them needing to know if the wallpaper needs to tile as a
|
||||||
pattern, stretch etc.</FONT></FONT></P>
|
pattern, stretch etc.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">The
|
||||||
desktop canvas is also shared by many modules that may display things
|
desktop canvas is also shared by many modules that may display things
|
||||||
like battery meters, cpu load, launcher bars, drop shadows etc. on
|
like battery meters, cpu load, launcher bars, drop shadows etc. on
|
||||||
the desktop background. The desktop canvas lets this be a bit more
|
the desktop background. The desktop canvas lets this be a bit more
|
||||||
organized than it would be with a “free for all” drawing to the
|
organized than it would be with a “free for all” drawing to the
|
||||||
root window under more conservative WM's.</FONT></FONT></P>
|
root window under more conservative WM's.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Borders</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Borders
|
style="font-size: 8pt;"><b>Borders</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Borders
|
||||||
are the frame outside an application window that is controlled by the
|
are the frame outside an application window that is controlled by the
|
||||||
WM and that holds the application window within, and allows users to
|
WM and that holds the application window within, and allows users to
|
||||||
move, resize, shade, lower, close and otherwise control windows. This
|
move, resize, shade, lower, close and otherwise control windows. This
|
||||||
is currently buggy and not very useful and needs work in combination
|
is currently buggy and not very useful and needs work in combination
|
||||||
with the Manager system.</FONT></FONT></P>
|
with the Manager system.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Menus</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Enlightenment
|
style="font-size: 8pt;"><b>Menus</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Enlightenment
|
||||||
has its own Menu widget code to allow for highly themable menus that
|
has its own Menu widget code to allow for highly themable menus that
|
||||||
match your WM's theme. These menus are intended to act as ways to
|
match your WM's theme. These menus are intended to act as ways to
|
||||||
launch programs, select actions to perform with context sensitive
|
launch programs, select actions to perform with context sensitive
|
||||||
|
@ -277,9 +307,11 @@ let the user navigate with the keyboard, mouse wheel or mouse. It
|
||||||
currently needs work to support shaped menu windows, be able to add,
|
currently needs work to support shaped menu windows, be able to add,
|
||||||
delete and modify menu items while the item is still realized, and a
|
delete and modify menu items while the item is still realized, and a
|
||||||
set of other things listed in the TODO list at the top of the
|
set of other things listed in the TODO list at the top of the
|
||||||
e_menu.c source file.</FONT></FONT></P>
|
e_menu.c source file.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Modules</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Modules
|
style="font-size: 8pt;"><b>Modules</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Modules
|
||||||
are a new and powerful way to extend E17 by being able to load and
|
are a new and powerful way to extend E17 by being able to load and
|
||||||
execute code during runtime that may be shipped with E17 or even
|
execute code during runtime that may be shipped with E17 or even
|
||||||
developed after installation as enhancements and additions. This
|
developed after installation as enhancements and additions. This
|
||||||
|
@ -289,10 +321,12 @@ loaded etc. It is possible to have “dormant” modules that are
|
||||||
loaded but not enabled. They will use memory and resources for the
|
loaded but not enabled. They will use memory and resources for the
|
||||||
module entry and the binary executable code loaded into memory, but
|
module entry and the binary executable code loaded into memory, but
|
||||||
nothing else. An enabled module will also use resources for objects,
|
nothing else. An enabled module will also use resources for objects,
|
||||||
images, etc. etc.</FONT></FONT></P>
|
images, etc. etc.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Dropshadow
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Module</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Dropshadow
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
Module</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
module demonstrates the Container shape system allowing a module to
|
module demonstrates the Container shape system allowing a module to
|
||||||
monitor obscuring shapes in a container. This lets the module, in
|
monitor obscuring shapes in a container. This lets the module, in
|
||||||
this case, draw soft shadows under these obscuring shapes. It is a
|
this case, draw soft shadows under these obscuring shapes. It is a
|
||||||
|
@ -301,10 +335,12 @@ visible elements on the screen you can click on or control directly
|
||||||
with the mouse or keyboard. It could do with some optimization work
|
with the mouse or keyboard. It could do with some optimization work
|
||||||
with the blur algorithm, like clipping out the obscuring shape
|
with the blur algorithm, like clipping out the obscuring shape
|
||||||
entirely from the blurring algorithm, and perhaps finding a way of
|
entirely from the blurring algorithm, and perhaps finding a way of
|
||||||
blurring using a Gaussian blur that is faster.</FONT></FONT></P>
|
blurring using a Gaussian blur that is faster.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>IBar
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Module</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>IBar
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">The
|
Module</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">The
|
||||||
IBar module is a template for doing a “launcher panel” in E17. It
|
IBar module is a template for doing a “launcher panel” in E17. It
|
||||||
allows the user to manage a list of frequently used applications to
|
allows the user to manage a list of frequently used applications to
|
||||||
go into the IBar's panel. It is an attempt to unify the configuration
|
go into the IBar's panel. It is an attempt to unify the configuration
|
||||||
|
@ -317,8 +353,9 @@ in the list. It uses the Application interface to fetch a list of
|
||||||
applications and monitor this list for changes on disk. The IBar also
|
applications and monitor this list for changes on disk. The IBar also
|
||||||
allows itself to be resized and dragged around the edges of the
|
allows itself to be resized and dragged around the edges of the
|
||||||
screen, set to fill a edge, auto-size to fit its contents, or be a
|
screen, set to fill a edge, auto-size to fit its contents, or be a
|
||||||
fixed size.</FONT></FONT></P>
|
fixed size.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">It
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">It
|
||||||
needs work to be done on auto hide and auto show, so on an auto show
|
needs work to be done on auto hide and auto show, so on an auto show
|
||||||
it could signal other parts of E17, for example, to slide all windows
|
it could signal other parts of E17, for example, to slide all windows
|
||||||
out of the way, or other such features. It needs work to display
|
out of the way, or other such features. It needs work to display
|
||||||
|
@ -326,15 +363,19 @@ application names, descriptions and other such information as well.
|
||||||
It also needs to support the icon size changing on the fly as well as
|
It also needs to support the icon size changing on the fly as well as
|
||||||
saving and loading its configuration, On of the largest pieces of
|
saving and loading its configuration, On of the largest pieces of
|
||||||
work is to support subdirectories in the bar's application list. How
|
work is to support subdirectories in the bar's application list. How
|
||||||
best to do this is still up in the air. For now this isn't supported.</FONT></FONT></P>
|
best to do this is still up in the air. For now this isn't supported.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Test
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Module</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Test
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
Module</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
is just a test module for playing with new module features. It will
|
is just a test module for playing with new module features. It will
|
||||||
not make its way into a final E17 release, but can be used as a bare
|
not make its way into a final E17 release, but can be used as a bare
|
||||||
skeleton for building a new module.</FONT></FONT></P>
|
skeleton for building a new module.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Applications</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Applications</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
subsystem is responsible for being able to list applications held in
|
subsystem is responsible for being able to list applications held in
|
||||||
E17 specific application directories. This system can inform other
|
E17 specific application directories. This system can inform other
|
||||||
parts of E17 and modules of changes, such as an application being
|
parts of E17 and modules of changes, such as an application being
|
||||||
|
@ -342,8 +383,9 @@ deleted or added, its name or icon changed, the order of applications
|
||||||
in a directory changing, an application being executed or displaying
|
in a directory changing, an application being executed or displaying
|
||||||
its window, or finishing execution. It can share the application
|
its window, or finishing execution. It can share the application
|
||||||
lists between multiple systems to save RAM and CPU and I/O in loading
|
lists between multiple systems to save RAM and CPU and I/O in loading
|
||||||
them multiple times.</FONT></FONT></P>
|
them multiple times.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">It
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">It
|
||||||
may be of surprise to find E17 is not loading the XML, .desktop
|
may be of surprise to find E17 is not loading the XML, .desktop
|
||||||
entries etc. etc. than KDE and GNOME use. In all honesty that system
|
entries etc. etc. than KDE and GNOME use. In all honesty that system
|
||||||
is a little overcomplicated and hard to keep up with. It also is not
|
is a little overcomplicated and hard to keep up with. It also is not
|
||||||
|
@ -354,9 +396,11 @@ fully scalable and animated icons as well, with excellent compression
|
||||||
abilities. The intent is to have external tools that can import and
|
abilities. The intent is to have external tools that can import and
|
||||||
create such files FROM existing system databases of applications and
|
create such files FROM existing system databases of applications and
|
||||||
monitor these for changes, reflecting those changes in Enlightenments
|
monitor these for changes, reflecting those changes in Enlightenments
|
||||||
application directories.</FONT></FONT></P>
|
application directories.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>IPC</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">IPC
|
style="font-size: 8pt;"><b>IPC</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">IPC
|
||||||
(inter process communication) is provided in E17 as a mechanism for
|
(inter process communication) is provided in E17 as a mechanism for
|
||||||
another application to send commands and requests to Enlightenment
|
another application to send commands and requests to Enlightenment
|
||||||
and receive responses with information. This mechanism is intended to
|
and receive responses with information. This mechanism is intended to
|
||||||
|
@ -365,69 +409,89 @@ things via a communications channel built into the WM. E17 uses the
|
||||||
Ecore IPC system to do this. So far it support no commands at all,
|
Ecore IPC system to do this. So far it support no commands at all,
|
||||||
but will accept clients connecting. Many commands need to be
|
but will accept clients connecting. Many commands need to be
|
||||||
implemented here, such as being able to ask E17 to load or unload a
|
implemented here, such as being able to ask E17 to load or unload a
|
||||||
module, change background, change focus mode, theme, restart etc.</FONT></FONT></P>
|
module, change background, change focus mode, theme, restart etc.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Objects</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Objects</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
provides a basic Object Oriented handling system for E17. Any major
|
provides a basic Object Oriented handling system for E17. Any major
|
||||||
“object” in E17 should use this system for handling reference
|
“object” in E17 should use this system for handling reference
|
||||||
counting, destruction and creation of objects, as it provides safety
|
counting, destruction and creation of objects, as it provides safety
|
||||||
mechanisms to check if an object has accidentally been destroyed and
|
mechanisms to check if an object has accidentally been destroyed and
|
||||||
still has a pointer to it, keep references on objects intact etc.
|
still has a pointer to it, keep references on objects intact etc.
|
||||||
This should be used as much as possible, as well as the macros it
|
This should be used as much as possible, as well as the macros it
|
||||||
provides for checking on entry points into subsystem functions etc.</FONT></FONT></P>
|
provides for checking on entry points into subsystem functions etc.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Pointers</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Pointers</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
subsystem handles setting of X mouse cursors in an abstract fashion.
|
subsystem handles setting of X mouse cursors in an abstract fashion.
|
||||||
In theory E just looks at a cursor as RGBA pixel data. In future
|
In theory E just looks at a cursor as RGBA pixel data. In future
|
||||||
Ecore will be expanded to be able to set full color cursors in X as
|
Ecore will be expanded to be able to set full color cursors in X as
|
||||||
well as monochrome versions of them. Currently it is very simplistic
|
well as monochrome versions of them. Currently it is very simplistic
|
||||||
loading a fixed PNG as a cursor. This needs to be improved.</FONT></FONT></P>
|
loading a fixed PNG as a cursor. This needs to be improved.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Box</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Box</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
is a basic Evas Smart Object that acts as a horizontal or vertical
|
is a basic Evas Smart Object that acts as a horizontal or vertical
|
||||||
box layout container. It needs more features for layout, like better
|
box layout container. It needs more features for layout, like better
|
||||||
non homogeneous layout. This is a handy object that is sued by menus
|
non homogeneous layout. This is a handy object that is sued by menus
|
||||||
and the IBar module for starters.</FONT></FONT></P>
|
and the IBar module for starters.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Icons</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Icons</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
is an Evas Smart Object that creates a icon display object That
|
is an Evas Smart Object that creates a icon display object That
|
||||||
handles scaling the icon sensibly within the object bounds, so the
|
handles scaling the icon sensibly within the object bounds, so the
|
||||||
application doesn't have to handle trying to retain aspect ratio for
|
application doesn't have to handle trying to retain aspect ratio for
|
||||||
the object. This is a simple smart object and indicative of possibly
|
the object. This is a simple smart object and indicative of possibly
|
||||||
more in future to go into E17's code to save time and effort.</FONT></FONT></P>
|
more in future to go into E17's code to save time and effort.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Paths</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
style="font-size: 8pt;"><b>Paths</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
helps E17 find files in a list of paths/directories. There isn't a
|
helps E17 find files in a list of paths/directories. There isn't a
|
||||||
lot to say about this except that it works and may need some minimal
|
lot to say about this except that it works and may need some minimal
|
||||||
expansion in future.</FONT></FONT></P>
|
expansion in future.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>User
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Information</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>User
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
Information</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
returns information about a user such as their home directory. This
|
returns information about a user such as their home directory. This
|
||||||
will expand in future.</FONT></FONT></P>
|
will expand in future.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Virtual
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
and Multiple Desktops</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Virtual
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
and Multiple Desktops</b></font></p>
|
||||||
is not implemented yet.</FONT></FONT></P>
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Error
|
style="font-size: 8pt;">This
|
||||||
Dialogs</B></FONT></FONT></P>
|
is not implemented yet.</font></p>
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
|
style="font-size: 8pt;"><b>Error
|
||||||
|
Dialogs</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
displays very basic error dialogs right now, either as text in the
|
displays very basic error dialogs right now, either as text in the
|
||||||
console if E17 isn't ready to run graphically yet, or as text in a
|
console if E17 isn't ready to run graphically yet, or as text in a
|
||||||
graphical dialog box. This needs to be made more robust, so it can
|
graphical dialog box. This needs to be made more robust, so it can
|
||||||
display errors if it cannot find the font and images for the basic
|
display errors if it cannot find the font and images for the basic
|
||||||
error dialog. It should also be expanded to support fully themed
|
error dialog. It should also be expanded to support fully themed
|
||||||
dialogs if the theme loads properly and properly supports theming of
|
dialogs if the theme loads properly and properly supports theming of
|
||||||
dialogs, so dialogs look good.</FONT></FONT></P>
|
dialogs, so dialogs look good.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Initialization
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Splash Screen</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Initialization
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">This
|
Splash Screen</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">This
|
||||||
keeps the user amused while E17 starts up and launches all programs.
|
keeps the user amused while E17 starts up and launches all programs.
|
||||||
For now it is artificially fixed to stay up for 4 seconds so you can
|
For now it is artificially fixed to stay up for 4 seconds so you can
|
||||||
enjoy its radiant splendor, as E17 starts so quickly you'd never see
|
enjoy its radiant splendor, as E17 starts so quickly you'd never see
|
||||||
it, but in future it will stay up until the WM is all ready to go.</FONT></FONT></P>
|
it, but in future it will stay up until the WM is all ready to go.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Configuration</B></FONT></FONT></P>
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Loading
|
style="font-size: 8pt;"><b>Configuration</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Loading
|
||||||
and saving configuration is a big task. E17 uses EET directly as its
|
and saving configuration is a big task. E17 uses EET directly as its
|
||||||
underlying layer for saving and loading configuration. The E17 Config
|
underlying layer for saving and loading configuration. The E17 Config
|
||||||
system simply loads all the initial configuration values, and saves
|
system simply loads all the initial configuration values, and saves
|
||||||
|
@ -438,18 +502,22 @@ listener (the number of listeners needs to be reduced), so maybe
|
||||||
loading config values in sections/groups and deferring a reload in a
|
loading config values in sections/groups and deferring a reload in a
|
||||||
Ecore Job would limit the reloading effects. Also declaring config
|
Ecore Job would limit the reloading effects. Also declaring config
|
||||||
values and how to load and declare them is required. Maybe a big
|
values and how to load and declare them is required. Maybe a big
|
||||||
table with default values, min, max, step, descriptions etc.</FONT></FONT></P>
|
table with default values, min, max, step, descriptions etc.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>File
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Operations</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>File
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Files
|
Operations</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Files
|
||||||
need to be accessed, listed, found, examined as part of E17 running.
|
need to be accessed, listed, found, examined as part of E17 running.
|
||||||
This file has simplified, easy-to-use functions for doing anything
|
This file has simplified, easy-to-use functions for doing anything
|
||||||
related to files. This file will expand over time as more file
|
related to files. This file will expand over time as more file
|
||||||
operations are needed.</FONT></FONT></P>
|
operations are needed.</font></p>
|
||||||
<P CLASS="western"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt"><B>Miscellaneous
|
<p style="font-family: sans-serif;" class="western"><font
|
||||||
Utilities</B></FONT></FONT></P>
|
style="font-size: 8pt;"><b>Miscellaneous
|
||||||
<P CLASS="western" STYLE="margin-left: 0.79in"><FONT FACE="Bitstream Vera Sans"><FONT SIZE=1 STYLE="font-size: 8pt">Things
|
Utilities</b></font></p>
|
||||||
|
<p class="western" style="margin-left: 0.79in; font-family: sans-serif;"><font
|
||||||
|
style="font-size: 8pt;">Things
|
||||||
that are useful in many places but do not have enough scope to have a
|
that are useful in many places but do not have enough scope to have a
|
||||||
file of their own go into this file.</FONT></FONT></P>
|
file of their own go into this file.</font></p>
|
||||||
</BODY>
|
</body>
|
||||||
</HTML>
|
</html>
|
||||||
|
|
|
@ -1035,6 +1035,42 @@ ACT_FN_GO(zone_desk_linear_flip_to)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/***************************************************************************/
|
||||||
|
ACT_FN_GO(zone_deskshow_toggle)
|
||||||
|
{
|
||||||
|
E_Border *bd;
|
||||||
|
E_Border_List *bl;
|
||||||
|
E_Zone *zone;
|
||||||
|
|
||||||
|
zone = _e_actions_zone_get(obj);
|
||||||
|
if (!zone) zone = e_util_zone_current_get(e_manager_current_get());
|
||||||
|
if (zone)
|
||||||
|
{
|
||||||
|
bl = e_container_border_list_first(zone->container);
|
||||||
|
while ((bd = e_container_border_list_next(bl)))
|
||||||
|
{
|
||||||
|
if (bd->desk == e_desk_current_get(bd->zone))
|
||||||
|
{
|
||||||
|
if (zone->deskshow_toggle)
|
||||||
|
{
|
||||||
|
if (bd->deskshow) e_border_uniconify(bd);
|
||||||
|
bd->deskshow = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (bd->iconic) continue;
|
||||||
|
if (bd->client.netwm.state.skip_taskbar) continue;
|
||||||
|
if (bd->user_skip_winlist) continue;
|
||||||
|
e_border_iconify(bd);
|
||||||
|
bd->deskshow = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
zone->deskshow_toggle = zone->deskshow_toggle ? 0 : 1;
|
||||||
|
e_container_border_list_free(bl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/***************************************************************************/
|
/***************************************************************************/
|
||||||
static void
|
static void
|
||||||
_e_actions_cb_menu_end(void *data, E_Menu *m)
|
_e_actions_cb_menu_end(void *data, E_Menu *m)
|
||||||
|
@ -1602,10 +1638,10 @@ e_actions_init(void)
|
||||||
|
|
||||||
/* zone_deskshow_toggle */
|
/* zone_deskshow_toggle */
|
||||||
ACT_GO(zone_deskshow_toggle);
|
ACT_GO(zone_deskshow_toggle);
|
||||||
e_register_action_predef_name(_("Desktop"), _("Show the desktop"),
|
e_register_action_predef_name(_("Desktop"), _("Show The Desktop"),
|
||||||
"zone_deskshow_toggle", NULL,
|
"zone_deskshow_toggle", NULL,
|
||||||
EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 0);
|
EDIT_RESTRICT_ACTION | EDIT_RESTRICT_PARAMS, 0);
|
||||||
|
|
||||||
/* desk_linear_flip_to */
|
/* desk_linear_flip_to */
|
||||||
ACT_GO(desk_flip_to);
|
ACT_GO(desk_flip_to);
|
||||||
e_register_action_predef_name(_("Desktop"), _("Flip Desktop To..."),
|
e_register_action_predef_name(_("Desktop"), _("Flip Desktop To..."),
|
||||||
|
|
|
@ -528,6 +528,8 @@ _e_app_list_prepend_relative(E_App *add, E_App *before, E_App *parent)
|
||||||
}
|
}
|
||||||
if (before == NULL) fprintf(f, "%s\n", ecore_file_get_file(add->path));
|
if (before == NULL) fprintf(f, "%s\n", ecore_file_get_file(add->path));
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -572,6 +574,8 @@ _e_app_files_list_prepend_relative(Evas_List *files, E_App *before, E_App *paren
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -589,6 +593,8 @@ _e_app_files_download(Evas_List *files)
|
||||||
snprintf(buf, sizeof(buf), "%s/%s", _e_apps_path_all,
|
snprintf(buf, sizeof(buf), "%s/%s", _e_apps_path_all,
|
||||||
ecore_file_get_file(file));
|
ecore_file_get_file(file));
|
||||||
if (!ecore_file_download(file, buf, NULL, NULL, NULL)) continue;
|
if (!ecore_file_download(file, buf, NULL, NULL, NULL)) continue;
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", _e_apps_path_all);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -722,6 +728,8 @@ e_app_files_prepend_relative(Evas_List *files, E_App *before)
|
||||||
fprintf(f, "%s\n", ecore_file_get_file(a->path));
|
fprintf(f, "%s\n", ecore_file_get_file(a->path));
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", before->parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,6 +770,8 @@ e_app_files_append(Evas_List *files, E_App *parent)
|
||||||
fprintf(f, "%s\n", ecore_file_get_file(file));
|
fprintf(f, "%s\n", ecore_file_get_file(file));
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -793,6 +803,8 @@ e_app_remove(E_App *a)
|
||||||
a2 = l->data;
|
a2 = l->data;
|
||||||
e_app_remove(a2);
|
e_app_remove(a2);
|
||||||
}
|
}
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", a->parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
_e_app_change(a, E_APP_DEL);
|
_e_app_change(a, E_APP_DEL);
|
||||||
a->parent = NULL;
|
a->parent = NULL;
|
||||||
e_object_unref(E_OBJECT(a));
|
e_object_unref(E_OBJECT(a));
|
||||||
|
@ -879,41 +891,51 @@ EAPI E_App *
|
||||||
e_app_window_name_class_title_role_find(const char *name, const char *class,
|
e_app_window_name_class_title_role_find(const char *name, const char *class,
|
||||||
const char *title, const char *role)
|
const char *title, const char *role)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l, *l_match = NULL;
|
||||||
|
int ok, match = 0;
|
||||||
|
E_App *a, *a_match = NULL;
|
||||||
|
|
||||||
if ((!name) && (!class) && (!title) && (!role))
|
if ((!name) && (!class) && (!title) && (!role))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
for (l = _e_apps_list; l; l = l->next)
|
for (l = _e_apps_list; l; l = l->next)
|
||||||
{
|
{
|
||||||
E_App *a;
|
|
||||||
int ok;
|
|
||||||
|
|
||||||
a = l->data;
|
a = l->data;
|
||||||
ok = 0;
|
ok = 0;
|
||||||
if ((a->win_name) || (a->win_class) || (a->win_title) || (a->win_role))
|
if ((a->win_name) || (a->win_class) || (a->win_title) || (a->win_role))
|
||||||
{
|
{
|
||||||
if ((!a->win_name) ||
|
if ((a->win_name) && (a->win_class) && (name) && (class))
|
||||||
((a->win_name) && (name) && (e_util_glob_match(name, a->win_name))))
|
{
|
||||||
ok++;
|
if ((e_util_glob_match(name, a->win_name)) &&
|
||||||
if ((!a->win_class) ||
|
(e_util_glob_match(class, a->win_class)))
|
||||||
((a->win_class) && (class) && (e_util_glob_match(class, a->win_class))))
|
ok += 2;
|
||||||
ok++;
|
}
|
||||||
if ((!a->win_title) ||
|
else if ((a->win_class) && (class))
|
||||||
|
{
|
||||||
|
if (e_util_glob_match(class, a->win_class))
|
||||||
|
ok += 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (//(!a->win_title) ||
|
||||||
((a->win_title) && (title) && (e_util_glob_match(title, a->win_title))))
|
((a->win_title) && (title) && (e_util_glob_match(title, a->win_title))))
|
||||||
ok++;
|
ok++;
|
||||||
if ((!a->win_role) ||
|
if (//(!a->win_role) ||
|
||||||
((a->win_role) && (role) && (e_util_glob_match(role, a->win_role))))
|
((a->win_role) && (role) && (e_util_glob_match(role, a->win_role))))
|
||||||
ok++;
|
ok++;
|
||||||
}
|
}
|
||||||
if (ok >= 4)
|
if (ok > match)
|
||||||
{
|
{
|
||||||
_e_apps_list = evas_list_remove_list(_e_apps_list, l);
|
match = ok;
|
||||||
_e_apps_list = evas_list_prepend(_e_apps_list, a);
|
a_match = a;
|
||||||
return a;
|
l_match = l;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NULL;
|
if ((a_match) && (l_match))
|
||||||
|
{
|
||||||
|
_e_apps_list = evas_list_remove_list(_e_apps_list, l);
|
||||||
|
_e_apps_list = evas_list_prepend(_e_apps_list, a_match);
|
||||||
|
}
|
||||||
|
return a_match;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI E_App *
|
EAPI E_App *
|
||||||
|
@ -1315,6 +1337,8 @@ e_app_fields_save(E_App *a)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", a->parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
_e_app_change(a->parent, E_APP_CHANGE);
|
_e_app_change(a->parent, E_APP_CHANGE);
|
||||||
_e_app_change(a, E_APP_CHANGE);
|
_e_app_change(a, E_APP_CHANGE);
|
||||||
for (l = a->references; l; l = l->next)
|
for (l = a->references; l; l = l->next)
|
||||||
|
@ -1529,6 +1553,13 @@ _e_app_new_save(E_App *a)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (a->parent)
|
||||||
|
{
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", a->parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
|
}
|
||||||
ecore_file_unlink(tmpn);
|
ecore_file_unlink(tmpn);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2035,6 +2066,13 @@ _e_app_save_order(E_App *app)
|
||||||
fprintf(f, "%s\n", ecore_file_get_file(a->path));
|
fprintf(f, "%s\n", ecore_file_get_file(a->path));
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
if (app->parent)
|
||||||
|
{
|
||||||
|
char buf[PATH_MAX];
|
||||||
|
|
||||||
|
snprintf(buf, sizeof(buf), "%s/.eap.cache.cfg", app ->parent->path);
|
||||||
|
ecore_file_unlink(buf);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -298,6 +298,16 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal)
|
||||||
bd->client.netwm.state.skip_pager = 0;
|
bd->client.netwm.state.skip_pager = 0;
|
||||||
bd->client.netwm.state.fullscreen = 0;
|
bd->client.netwm.state.fullscreen = 0;
|
||||||
bd->client.netwm.state.stacking = E_STACKING_NONE;
|
bd->client.netwm.state.stacking = E_STACKING_NONE;
|
||||||
|
bd->client.netwm.action.move = 0;
|
||||||
|
bd->client.netwm.action.resize = 0;
|
||||||
|
bd->client.netwm.action.minimize = 0;
|
||||||
|
bd->client.netwm.action.shade = 0;
|
||||||
|
bd->client.netwm.action.stick = 0;
|
||||||
|
bd->client.netwm.action.maximized_h = 0;
|
||||||
|
bd->client.netwm.action.maximized_v = 0;
|
||||||
|
bd->client.netwm.action.fullscreen = 0;
|
||||||
|
bd->client.netwm.action.change_desktop = 0;
|
||||||
|
bd->client.netwm.action.close = 0;
|
||||||
bd->client.netwm.type = ECORE_X_WINDOW_TYPE_UNKNOWN;
|
bd->client.netwm.type = ECORE_X_WINDOW_TYPE_UNKNOWN;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
@ -305,6 +315,7 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map, int internal)
|
||||||
Ecore_X_Atom *atoms;
|
Ecore_X_Atom *atoms;
|
||||||
|
|
||||||
atoms = ecore_x_window_prop_list(bd->client.win, &at_num);
|
atoms = ecore_x_window_prop_list(bd->client.win, &at_num);
|
||||||
|
bd->client.icccm.fetch.command = 1;
|
||||||
if (atoms)
|
if (atoms)
|
||||||
{
|
{
|
||||||
/* icccm */
|
/* icccm */
|
||||||
|
@ -2919,6 +2930,14 @@ _e_border_free(E_Border *bd)
|
||||||
if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
|
if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
|
||||||
if (bd->client.icccm.machine) free(bd->client.icccm.machine);
|
if (bd->client.icccm.machine) free(bd->client.icccm.machine);
|
||||||
if (bd->client.icccm.window_role) free(bd->client.icccm.window_role);
|
if (bd->client.icccm.window_role) free(bd->client.icccm.window_role);
|
||||||
|
if ((bd->client.icccm.command.argc > 0) && (bd->client.icccm.command.argv))
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < bd->client.icccm.command.argc; i++)
|
||||||
|
free(bd->client.icccm.command.argv[i]);
|
||||||
|
free(bd->client.icccm.command.argv);
|
||||||
|
}
|
||||||
if (bd->client.netwm.name) free(bd->client.netwm.name);
|
if (bd->client.netwm.name) free(bd->client.netwm.name);
|
||||||
if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
|
if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
|
||||||
e_object_del(E_OBJECT(bd->shape));
|
e_object_del(E_OBJECT(bd->shape));
|
||||||
|
@ -4500,6 +4519,11 @@ _e_border_eval(E_Border *bd)
|
||||||
int change_urgent = 0;
|
int change_urgent = 0;
|
||||||
|
|
||||||
/* fetch any info queued to be fetched */
|
/* fetch any info queued to be fetched */
|
||||||
|
if (bd->client.icccm.fetch.client_leader)
|
||||||
|
{
|
||||||
|
bd->client.icccm.client_leader = ecore_x_icccm_client_leader_get(bd->client.win);
|
||||||
|
bd->client.icccm.fetch.client_leader = 0;
|
||||||
|
}
|
||||||
if (bd->client.icccm.fetch.title)
|
if (bd->client.icccm.fetch.title)
|
||||||
{
|
{
|
||||||
if (bd->client.icccm.title) free(bd->client.icccm.title);
|
if (bd->client.icccm.title) free(bd->client.icccm.title);
|
||||||
|
@ -4553,78 +4577,6 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->changes.icon = 1;
|
bd->changes.icon = 1;
|
||||||
bd->client.icccm.fetch.name_class = 0;
|
bd->client.icccm.fetch.name_class = 0;
|
||||||
}
|
}
|
||||||
if (bd->client.icccm.fetch.icon_name)
|
|
||||||
{
|
|
||||||
if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
|
|
||||||
bd->client.icccm.icon_name = ecore_x_icccm_icon_name_get(bd->client.win);
|
|
||||||
|
|
||||||
bd->client.icccm.fetch.icon_name = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.netwm.fetch.icon_name)
|
|
||||||
{
|
|
||||||
if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
|
|
||||||
ecore_x_netwm_icon_name_get(bd->client.win, &bd->client.netwm.icon_name);
|
|
||||||
|
|
||||||
bd->client.netwm.fetch.icon_name = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.netwm.fetch.icon)
|
|
||||||
{
|
|
||||||
if (bd->client.netwm.icons)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
for (i = 0; i < bd->client.netwm.num_icons; i++)
|
|
||||||
free(bd->client.netwm.icons[i].data);
|
|
||||||
free(bd->client.netwm.icons);
|
|
||||||
}
|
|
||||||
if (!ecore_x_netwm_icons_get(bd->client.win,
|
|
||||||
&bd->client.netwm.icons, &bd->client.netwm.num_icons))
|
|
||||||
{
|
|
||||||
printf("ERROR: Fetch icon from client\n");
|
|
||||||
bd->client.netwm.icons = NULL;
|
|
||||||
bd->client.netwm.num_icons = 0;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
bd->changes.icon = 1;
|
|
||||||
bd->client.netwm.fetch.icon = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.netwm.fetch.user_time)
|
|
||||||
{
|
|
||||||
ecore_x_netwm_user_time_get(bd->client.win, &bd->client.netwm.user_time);
|
|
||||||
|
|
||||||
bd->client.netwm.fetch.user_time = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.netwm.fetch.strut)
|
|
||||||
{
|
|
||||||
if (!ecore_x_netwm_strut_partial_get(bd->client.win,
|
|
||||||
&bd->client.netwm.strut.left,
|
|
||||||
&bd->client.netwm.strut.right,
|
|
||||||
&bd->client.netwm.strut.top,
|
|
||||||
&bd->client.netwm.strut.bottom,
|
|
||||||
&bd->client.netwm.strut.left_start_y,
|
|
||||||
&bd->client.netwm.strut.left_end_y,
|
|
||||||
&bd->client.netwm.strut.right_start_y,
|
|
||||||
&bd->client.netwm.strut.right_end_y,
|
|
||||||
&bd->client.netwm.strut.top_start_x,
|
|
||||||
&bd->client.netwm.strut.top_end_x,
|
|
||||||
&bd->client.netwm.strut.bottom_start_x,
|
|
||||||
&bd->client.netwm.strut.bottom_end_x))
|
|
||||||
{
|
|
||||||
ecore_x_netwm_strut_get(bd->client.win,
|
|
||||||
&bd->client.netwm.strut.left, &bd->client.netwm.strut.right,
|
|
||||||
&bd->client.netwm.strut.top, &bd->client.netwm.strut.bottom);
|
|
||||||
|
|
||||||
bd->client.netwm.strut.left_start_y = 0;
|
|
||||||
bd->client.netwm.strut.left_end_y = 0;
|
|
||||||
bd->client.netwm.strut.right_start_y = 0;
|
|
||||||
bd->client.netwm.strut.right_end_y = 0;
|
|
||||||
bd->client.netwm.strut.top_start_x = 0;
|
|
||||||
bd->client.netwm.strut.top_end_x = 0;
|
|
||||||
bd->client.netwm.strut.bottom_start_x = 0;
|
|
||||||
bd->client.netwm.strut.bottom_end_x = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bd->client.netwm.fetch.strut = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.icccm.fetch.state)
|
if (bd->client.icccm.fetch.state)
|
||||||
{
|
{
|
||||||
bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
|
bd->client.icccm.state = ecore_x_icccm_state_get(bd->client.win);
|
||||||
|
@ -4676,8 +4628,33 @@ _e_border_eval(E_Border *bd)
|
||||||
{
|
{
|
||||||
if (bd->client.icccm.machine) free(bd->client.icccm.machine);
|
if (bd->client.icccm.machine) free(bd->client.icccm.machine);
|
||||||
bd->client.icccm.machine = ecore_x_icccm_client_machine_get(bd->client.win);
|
bd->client.icccm.machine = ecore_x_icccm_client_machine_get(bd->client.win);
|
||||||
|
if ((bd->client.icccm.client_leader) &&
|
||||||
|
(!bd->client.icccm.machine))
|
||||||
|
ecore_x_icccm_client_machine_get(bd->client.icccm.client_leader);
|
||||||
bd->client.icccm.fetch.machine = 0;
|
bd->client.icccm.fetch.machine = 0;
|
||||||
}
|
}
|
||||||
|
if (bd->client.icccm.fetch.command)
|
||||||
|
{
|
||||||
|
if ((bd->client.icccm.command.argc > 0) && (bd->client.icccm.command.argv))
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < bd->client.icccm.command.argc; i++)
|
||||||
|
free(bd->client.icccm.command.argv[i]);
|
||||||
|
free(bd->client.icccm.command.argv);
|
||||||
|
}
|
||||||
|
bd->client.icccm.command.argc = 0;
|
||||||
|
bd->client.icccm.command.argv = NULL;
|
||||||
|
ecore_x_icccm_command_get(bd->client.win,
|
||||||
|
&(bd->client.icccm.command.argc),
|
||||||
|
&(bd->client.icccm.command.argv));
|
||||||
|
if ((bd->client.icccm.client_leader) &&
|
||||||
|
(!bd->client.icccm.command.argv))
|
||||||
|
ecore_x_icccm_command_get(bd->client.icccm.client_leader,
|
||||||
|
&(bd->client.icccm.command.argc),
|
||||||
|
&(bd->client.icccm.command.argv));
|
||||||
|
bd->client.icccm.fetch.command = 0;
|
||||||
|
}
|
||||||
if (bd->client.icccm.fetch.hints)
|
if (bd->client.icccm.fetch.hints)
|
||||||
{
|
{
|
||||||
int accepts_focus = 1;
|
int accepts_focus = 1;
|
||||||
|
@ -4789,16 +4766,84 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->client.icccm.transient_for = ecore_x_icccm_transient_for_get(bd->client.win);
|
bd->client.icccm.transient_for = ecore_x_icccm_transient_for_get(bd->client.win);
|
||||||
bd->client.icccm.fetch.transient_for = 0;
|
bd->client.icccm.fetch.transient_for = 0;
|
||||||
}
|
}
|
||||||
if (bd->client.icccm.fetch.client_leader)
|
|
||||||
{
|
|
||||||
bd->client.icccm.client_leader = ecore_x_icccm_client_leader_get(bd->client.win);
|
|
||||||
bd->client.icccm.fetch.client_leader = 0;
|
|
||||||
}
|
|
||||||
if (bd->client.icccm.fetch.window_role)
|
if (bd->client.icccm.fetch.window_role)
|
||||||
{
|
{
|
||||||
bd->client.icccm.window_role = ecore_x_icccm_window_role_get(bd->client.win);
|
bd->client.icccm.window_role = ecore_x_icccm_window_role_get(bd->client.win);
|
||||||
bd->client.icccm.fetch.window_role = 0;
|
bd->client.icccm.fetch.window_role = 0;
|
||||||
}
|
}
|
||||||
|
if (bd->client.icccm.fetch.icon_name)
|
||||||
|
{
|
||||||
|
if (bd->client.icccm.icon_name) free(bd->client.icccm.icon_name);
|
||||||
|
bd->client.icccm.icon_name = ecore_x_icccm_icon_name_get(bd->client.win);
|
||||||
|
|
||||||
|
bd->client.icccm.fetch.icon_name = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.fetch.icon_name)
|
||||||
|
{
|
||||||
|
if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name);
|
||||||
|
ecore_x_netwm_icon_name_get(bd->client.win, &bd->client.netwm.icon_name);
|
||||||
|
|
||||||
|
bd->client.netwm.fetch.icon_name = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.fetch.icon)
|
||||||
|
{
|
||||||
|
if (bd->client.netwm.icons)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < bd->client.netwm.num_icons; i++)
|
||||||
|
free(bd->client.netwm.icons[i].data);
|
||||||
|
free(bd->client.netwm.icons);
|
||||||
|
}
|
||||||
|
if (!ecore_x_netwm_icons_get(bd->client.win,
|
||||||
|
&bd->client.netwm.icons, &bd->client.netwm.num_icons))
|
||||||
|
{
|
||||||
|
printf("ERROR: Fetch icon from client\n");
|
||||||
|
bd->client.netwm.icons = NULL;
|
||||||
|
bd->client.netwm.num_icons = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bd->changes.icon = 1;
|
||||||
|
bd->client.netwm.fetch.icon = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.fetch.user_time)
|
||||||
|
{
|
||||||
|
ecore_x_netwm_user_time_get(bd->client.win, &bd->client.netwm.user_time);
|
||||||
|
|
||||||
|
bd->client.netwm.fetch.user_time = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.fetch.strut)
|
||||||
|
{
|
||||||
|
if (!ecore_x_netwm_strut_partial_get(bd->client.win,
|
||||||
|
&bd->client.netwm.strut.left,
|
||||||
|
&bd->client.netwm.strut.right,
|
||||||
|
&bd->client.netwm.strut.top,
|
||||||
|
&bd->client.netwm.strut.bottom,
|
||||||
|
&bd->client.netwm.strut.left_start_y,
|
||||||
|
&bd->client.netwm.strut.left_end_y,
|
||||||
|
&bd->client.netwm.strut.right_start_y,
|
||||||
|
&bd->client.netwm.strut.right_end_y,
|
||||||
|
&bd->client.netwm.strut.top_start_x,
|
||||||
|
&bd->client.netwm.strut.top_end_x,
|
||||||
|
&bd->client.netwm.strut.bottom_start_x,
|
||||||
|
&bd->client.netwm.strut.bottom_end_x))
|
||||||
|
{
|
||||||
|
ecore_x_netwm_strut_get(bd->client.win,
|
||||||
|
&bd->client.netwm.strut.left, &bd->client.netwm.strut.right,
|
||||||
|
&bd->client.netwm.strut.top, &bd->client.netwm.strut.bottom);
|
||||||
|
|
||||||
|
bd->client.netwm.strut.left_start_y = 0;
|
||||||
|
bd->client.netwm.strut.left_end_y = 0;
|
||||||
|
bd->client.netwm.strut.right_start_y = 0;
|
||||||
|
bd->client.netwm.strut.right_end_y = 0;
|
||||||
|
bd->client.netwm.strut.top_start_x = 0;
|
||||||
|
bd->client.netwm.strut.top_end_x = 0;
|
||||||
|
bd->client.netwm.strut.bottom_start_x = 0;
|
||||||
|
bd->client.netwm.strut.bottom_end_x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bd->client.netwm.fetch.strut = 0;
|
||||||
|
}
|
||||||
if (bd->changes.shape)
|
if (bd->changes.shape)
|
||||||
{
|
{
|
||||||
Ecore_X_Rectangle *rects;
|
Ecore_X_Rectangle *rects;
|
||||||
|
@ -5825,7 +5870,8 @@ _e_border_eval(E_Border *bd)
|
||||||
grabbed = 1;
|
grabbed = 1;
|
||||||
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
e_object_ref(E_OBJECT(bd->cur_mouse_action));
|
||||||
bd->cur_mouse_action->func.go(E_OBJECT(bd), NULL);
|
bd->cur_mouse_action->func.go(E_OBJECT(bd), NULL);
|
||||||
e_border_raise(bd);
|
if (e_config->border_raise_on_mouse_action)
|
||||||
|
e_border_raise(bd);
|
||||||
e_border_focus_set(bd, 1, 1);
|
e_border_focus_set(bd, 1, 1);
|
||||||
}
|
}
|
||||||
bd->changes.visible = 0;
|
bd->changes.visible = 0;
|
||||||
|
@ -6361,7 +6407,10 @@ _e_border_resize_begin(E_Border *bd)
|
||||||
int w, h;
|
int w, h;
|
||||||
|
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking)
|
||||||
e_border_raise(bd);
|
{
|
||||||
|
if (e_config->border_raise_on_mouse_action)
|
||||||
|
e_border_raise(bd);
|
||||||
|
}
|
||||||
if ((bd->shaded) || (bd->shading) ||
|
if ((bd->shaded) || (bd->shading) ||
|
||||||
(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) ||
|
(((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) ||
|
||||||
(bd->fullscreen) || (bd->lock_user_size))
|
(bd->fullscreen) || (bd->lock_user_size))
|
||||||
|
@ -6463,7 +6512,10 @@ static int
|
||||||
_e_border_move_begin(E_Border *bd)
|
_e_border_move_begin(E_Border *bd)
|
||||||
{
|
{
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking)
|
||||||
e_border_raise(bd);
|
{
|
||||||
|
if (e_config->border_raise_on_mouse_action)
|
||||||
|
e_border_raise(bd);
|
||||||
|
}
|
||||||
if ((((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) ||
|
if ((((bd->maximized & E_MAXIMIZE_TYPE) == E_MAXIMIZE_FULLSCREEN) && (!e_config->allow_manip)) ||
|
||||||
(bd->fullscreen) || (bd->lock_user_location))
|
(bd->fullscreen) || (bd->lock_user_location))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -150,6 +150,7 @@ struct _E_Border
|
||||||
unsigned char shaped : 1;
|
unsigned char shaped : 1;
|
||||||
unsigned char argb : 1;
|
unsigned char argb : 1;
|
||||||
|
|
||||||
|
/* ICCCM */
|
||||||
struct {
|
struct {
|
||||||
char *title;
|
char *title;
|
||||||
char *name;
|
char *name;
|
||||||
|
@ -177,6 +178,10 @@ struct _E_Border
|
||||||
unsigned char urgent : 1;
|
unsigned char urgent : 1;
|
||||||
unsigned char delete_request : 1;
|
unsigned char delete_request : 1;
|
||||||
unsigned char request_pos : 1;
|
unsigned char request_pos : 1;
|
||||||
|
struct {
|
||||||
|
int argc;
|
||||||
|
char **argv;
|
||||||
|
} command;
|
||||||
struct {
|
struct {
|
||||||
unsigned char title : 1;
|
unsigned char title : 1;
|
||||||
unsigned char name_class : 1;
|
unsigned char name_class : 1;
|
||||||
|
@ -189,8 +194,11 @@ struct _E_Border
|
||||||
unsigned char client_leader : 1;
|
unsigned char client_leader : 1;
|
||||||
unsigned char window_role : 1;
|
unsigned char window_role : 1;
|
||||||
unsigned char state : 1;
|
unsigned char state : 1;
|
||||||
|
unsigned char command : 1;
|
||||||
} fetch;
|
} fetch;
|
||||||
} icccm;
|
} icccm;
|
||||||
|
|
||||||
|
/* MWM */
|
||||||
struct {
|
struct {
|
||||||
Ecore_X_MWM_Hint_Func func;
|
Ecore_X_MWM_Hint_Func func;
|
||||||
Ecore_X_MWM_Hint_Decor decor;
|
Ecore_X_MWM_Hint_Decor decor;
|
||||||
|
@ -201,14 +209,16 @@ struct _E_Border
|
||||||
unsigned char hints : 1;
|
unsigned char hints : 1;
|
||||||
} fetch;
|
} fetch;
|
||||||
} mwm;
|
} mwm;
|
||||||
|
|
||||||
|
/* NetWM */
|
||||||
struct {
|
struct {
|
||||||
pid_t pid;
|
pid_t pid;
|
||||||
unsigned int desktop;
|
unsigned int desktop;
|
||||||
char *name;
|
char *name;
|
||||||
char *icon_name;
|
char *icon_name;
|
||||||
Ecore_X_Icon *icons;
|
Ecore_X_Icon *icons;
|
||||||
int num_icons;
|
int num_icons;
|
||||||
unsigned int user_time;
|
unsigned int user_time;
|
||||||
struct {
|
struct {
|
||||||
int left;
|
int left;
|
||||||
int right;
|
int right;
|
||||||
|
@ -247,6 +257,20 @@ struct _E_Border
|
||||||
E_Stacking stacking;
|
E_Stacking stacking;
|
||||||
} state;
|
} 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 type;
|
||||||
int startup_id;
|
int startup_id;
|
||||||
|
|
||||||
|
|
|
@ -466,6 +466,10 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, display_res_hz, INT);
|
E_CONFIG_VAL(D, T, display_res_hz, INT);
|
||||||
E_CONFIG_VAL(D, T, display_res_rotation, INT);
|
E_CONFIG_VAL(D, T, display_res_rotation, INT);
|
||||||
|
|
||||||
|
E_CONFIG_VAL(D, T, border_raise_on_mouse_action, INT);
|
||||||
|
E_CONFIG_VAL(D, T, border_raise_on_focus, INT);
|
||||||
|
E_CONFIG_VAL(D, T, desk_flip_wrap, INT);
|
||||||
|
|
||||||
e_config = e_config_domain_load("e", _e_config_edd);
|
e_config = e_config_domain_load("e", _e_config_edd);
|
||||||
if (e_config)
|
if (e_config)
|
||||||
{
|
{
|
||||||
|
@ -863,6 +867,9 @@ e_config_init(void)
|
||||||
CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "l",
|
CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "l",
|
||||||
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
||||||
"desk_lock", NULL);
|
"desk_lock", NULL);
|
||||||
|
CFG_KEYBIND(E_BINDING_CONTEXT_ANY, "d",
|
||||||
|
E_BINDING_MODIFIER_CTRL | E_BINDING_MODIFIER_ALT, 0,
|
||||||
|
"zone_deskshow_toggle", NULL);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
E_Config_Binding_Signal *eb;
|
E_Config_Binding_Signal *eb;
|
||||||
|
@ -1126,6 +1133,12 @@ e_config_init(void)
|
||||||
}
|
}
|
||||||
IFCFGEND;
|
IFCFGEND;
|
||||||
|
|
||||||
|
IFCFG(0x0094); /* the version # where this value(s) was introduced */
|
||||||
|
e_config->border_raise_on_mouse_action = 1;
|
||||||
|
e_config->border_raise_on_focus = 1;
|
||||||
|
e_config->desk_flip_wrap = 0;
|
||||||
|
IFCFGEND;
|
||||||
|
|
||||||
#if 0 /* example of new config */
|
#if 0 /* example of new config */
|
||||||
IFCFG(0x0090); /* the version # where this value(s) was introduced */
|
IFCFG(0x0090); /* the version # where this value(s) was introduced */
|
||||||
e_config->new_value = 10; /* set the value(s) */
|
e_config->new_value = 10; /* set the value(s) */
|
||||||
|
@ -1214,7 +1227,10 @@ e_config_init(void)
|
||||||
E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192);
|
E_CONFIG_LIMIT(e_config->display_res_height, 1, 8192);
|
||||||
E_CONFIG_LIMIT(e_config->display_res_hz, 0, 250);
|
E_CONFIG_LIMIT(e_config->display_res_hz, 0, 250);
|
||||||
E_CONFIG_LIMIT(e_config->display_res_rotation, 0, 0xff);
|
E_CONFIG_LIMIT(e_config->display_res_rotation, 0, 0xff);
|
||||||
|
E_CONFIG_LIMIT(e_config->border_raise_on_mouse_action, 0, 1);
|
||||||
|
E_CONFIG_LIMIT(e_config->border_raise_on_focus, 0, 1);
|
||||||
|
E_CONFIG_LIMIT(e_config->desk_flip_wrap, 0, 1);
|
||||||
|
|
||||||
/* FIXME: disabled auto apply because it causes problems */
|
/* FIXME: disabled auto apply because it causes problems */
|
||||||
e_config->cfgdlg_auto_apply = 0;
|
e_config->cfgdlg_auto_apply = 0;
|
||||||
|
|
||||||
|
|
|
@ -229,6 +229,9 @@ struct _E_Config
|
||||||
int display_res_height; // GUI
|
int display_res_height; // GUI
|
||||||
int display_res_hz; // GUI
|
int display_res_hz; // GUI
|
||||||
int display_res_rotation; // GUI
|
int display_res_rotation; // GUI
|
||||||
|
int border_raise_on_mouse_action; // GUI
|
||||||
|
int border_raise_on_focus; // GUI
|
||||||
|
int desk_flip_wrap; // GUI
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _E_Config_Module
|
struct _E_Config_Module
|
||||||
|
|
|
@ -263,8 +263,10 @@ e_desk_last_focused_focus(E_Desk *desk)
|
||||||
{
|
{
|
||||||
bd = l->data;
|
bd = l->data;
|
||||||
if ((!bd->iconic) && (bd->visible) &&
|
if ((!bd->iconic) && (bd->visible) &&
|
||||||
(((bd->desk == desk) ||
|
(((bd->desk == desk)
|
||||||
((bd->sticky) && (bd->zone == desk->zone)))))
|
// Don't focus sticky windows as last focused win
|
||||||
|
// || ((bd->sticky) && (bd->zone == desk->zone))
|
||||||
|
)))
|
||||||
{
|
{
|
||||||
/* this was the window last focused in this desktop */
|
/* this was the window last focused in this desktop */
|
||||||
e_border_focus_set(bd, 1, 1);
|
e_border_focus_set(bd, 1, 1);
|
||||||
|
|
|
@ -43,7 +43,10 @@ e_focus_event_mouse_in(E_Border* bd)
|
||||||
if (e_config->auto_raise_delay == 0.0)
|
if (e_config->auto_raise_delay == 0.0)
|
||||||
{
|
{
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking)
|
||||||
e_border_raise(bd);
|
{
|
||||||
|
if (e_config->border_raise_on_focus)
|
||||||
|
e_border_raise(bd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
bd->raise_timer = ecore_timer_add(e_config->auto_raise_delay, _e_focus_raise_timer, bd);
|
bd->raise_timer = ecore_timer_add(e_config->auto_raise_delay, _e_focus_raise_timer, bd);
|
||||||
|
@ -82,12 +85,18 @@ e_focus_event_mouse_down(E_Border* bd)
|
||||||
if (!bd->lock_focus_out)
|
if (!bd->lock_focus_out)
|
||||||
e_border_focus_set(bd, 1, 1);
|
e_border_focus_set(bd, 1, 1);
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking)
|
||||||
e_border_raise(bd);
|
{
|
||||||
|
if (e_config->border_raise_on_focus)
|
||||||
|
e_border_raise(bd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (e_config->always_click_to_raise)
|
else if (e_config->always_click_to_raise)
|
||||||
{
|
{
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking)
|
||||||
e_border_raise(bd);
|
{
|
||||||
|
if (e_config->border_raise_on_focus)
|
||||||
|
e_border_raise(bd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (e_config->always_click_to_focus)
|
else if (e_config->always_click_to_focus)
|
||||||
{
|
{
|
||||||
|
@ -194,8 +203,7 @@ _e_focus_raise_timer(void* data)
|
||||||
E_Border *bd;
|
E_Border *bd;
|
||||||
|
|
||||||
bd = data;
|
bd = data;
|
||||||
if (!bd->lock_user_stacking)
|
if (!bd->lock_user_stacking) e_border_raise(bd);
|
||||||
e_border_raise(bd);
|
|
||||||
bd->raise_timer = NULL;
|
bd->raise_timer = NULL;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -906,6 +906,51 @@ _e_gadcon_client_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
e_gadcon_client_edit_begin(gcc);
|
e_gadcon_client_edit_begin(gcc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_gadcon_client_cb_menu_remove(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
|
{
|
||||||
|
E_Gadcon_Client *gcc;
|
||||||
|
E_Config_Gadcon *cf_gc;
|
||||||
|
Evas_List *l;
|
||||||
|
|
||||||
|
gcc = data;
|
||||||
|
for (l = e_config->gadcons; l; l = l->next)
|
||||||
|
{
|
||||||
|
cf_gc = l->data;
|
||||||
|
if ((!cf_gc->name) || (!cf_gc->id) ||
|
||||||
|
(!gcc->gadcon->name) || (!gcc->gadcon->id)) continue;
|
||||||
|
if ((!strcmp(cf_gc->name, gcc->gadcon->name)) &&
|
||||||
|
(!strcmp(cf_gc->id, gcc->gadcon->id)))
|
||||||
|
{
|
||||||
|
for (l = cf_gc->clients; l; l = l->next)
|
||||||
|
{
|
||||||
|
E_Config_Gadcon_Client *cf_gcc;
|
||||||
|
|
||||||
|
cf_gcc = l->data;
|
||||||
|
if ((!cf_gcc->name) || (!cf_gcc->id) || (!gcc->name) ||
|
||||||
|
(!gcc->id)) continue;
|
||||||
|
if ((!strcmp(cf_gcc->name, gcc->name)) &&
|
||||||
|
(!strcmp(cf_gcc->id, gcc->id)))
|
||||||
|
{
|
||||||
|
E_Gadcon *gc;
|
||||||
|
|
||||||
|
gc = gcc->gadcon;
|
||||||
|
if (cf_gcc->name) evas_stringshare_del(cf_gcc->name);
|
||||||
|
if (cf_gcc->id) evas_stringshare_del(cf_gcc->id);
|
||||||
|
if (cf_gcc->style) evas_stringshare_del(cf_gcc->style);
|
||||||
|
free(cf_gcc);
|
||||||
|
cf_gc->clients = evas_list_remove_list(cf_gc->clients, l);
|
||||||
|
e_gadcon_unpopulate(gc);
|
||||||
|
e_gadcon_populate(gc);
|
||||||
|
e_config_save_queue();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags)
|
e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int flags)
|
||||||
{
|
{
|
||||||
|
@ -963,6 +1008,14 @@ e_gadcon_client_util_menu_items_append(E_Gadcon_Client *gcc, E_Menu *menu, int f
|
||||||
e_menu_item_label_set(mi, _("Begin editing"));
|
e_menu_item_label_set(mi, _("Begin editing"));
|
||||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
|
e_util_menu_item_edje_icon_set(mi, "enlightenment/edit");
|
||||||
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc);
|
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_edit, gcc);
|
||||||
|
|
||||||
|
mi = e_menu_item_new(menu);
|
||||||
|
e_menu_item_separator_set(mi, 1);
|
||||||
|
|
||||||
|
mi = e_menu_item_new(menu);
|
||||||
|
e_menu_item_label_set(mi, _("Remove this gadget"));
|
||||||
|
e_util_menu_item_edje_icon_set(mi, "enlightenment/remove");
|
||||||
|
e_menu_item_callback_set(mi, _e_gadcon_client_cb_menu_remove, gcc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|
|
@ -430,7 +430,15 @@ e_hints_window_init(E_Border *bd)
|
||||||
/* It's ok not to have fetch flag, should only be set on startup
|
/* It's ok not to have fetch flag, should only be set on startup
|
||||||
* and not changed. */
|
* and not changed. */
|
||||||
if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid))
|
if (!ecore_x_netwm_pid_get(bd->client.win, &bd->client.netwm.pid))
|
||||||
bd->client.netwm.pid = -1;
|
{
|
||||||
|
if (bd->client.icccm.client_leader)
|
||||||
|
{
|
||||||
|
if (!ecore_x_netwm_pid_get(bd->client.icccm.client_leader, &bd->client.netwm.pid))
|
||||||
|
bd->client.netwm.pid = -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
bd->client.netwm.pid = -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (bd->client.netwm.state.sticky)
|
if (bd->client.netwm.state.sticky)
|
||||||
{
|
{
|
||||||
|
@ -555,6 +563,36 @@ e_hints_window_state_set(E_Border *bd)
|
||||||
ecore_x_netwm_window_state_set(bd->client.win, state, num);
|
ecore_x_netwm_window_state_set(bd->client.win, state, num);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_hints_allowed_action_set(E_Border *bd)
|
||||||
|
{
|
||||||
|
Ecore_X_Action action[10];
|
||||||
|
int num = 0;
|
||||||
|
|
||||||
|
if (bd->client.netwm.action.move)
|
||||||
|
action[num++] = ECORE_X_ACTION_MOVE;
|
||||||
|
if (bd->client.netwm.action.resize)
|
||||||
|
action[num++] = ECORE_X_ACTION_RESIZE;
|
||||||
|
if (bd->client.netwm.action.minimize)
|
||||||
|
action[num++] = ECORE_X_ACTION_MINIMIZE;
|
||||||
|
if (bd->client.netwm.action.shade)
|
||||||
|
action[num++] = ECORE_X_ACTION_SHADE;
|
||||||
|
if (bd->client.netwm.action.stick)
|
||||||
|
action[num++] = ECORE_X_ACTION_STICK;
|
||||||
|
if (bd->client.netwm.action.maximized_h)
|
||||||
|
action[num++] = ECORE_X_ACTION_MAXIMIZE_HORZ;
|
||||||
|
if (bd->client.netwm.action.maximized_v)
|
||||||
|
action[num++] = ECORE_X_ACTION_MAXIMIZE_VERT;
|
||||||
|
if (bd->client.netwm.action.fullscreen)
|
||||||
|
action[num++] = ECORE_X_ACTION_FULLSCREEN;
|
||||||
|
if (bd->client.netwm.action.change_desktop)
|
||||||
|
action[num++] = ECORE_X_ACTION_CHANGE_DESKTOP;
|
||||||
|
if (bd->client.netwm.action.close)
|
||||||
|
action[num++] = ECORE_X_ACTION_CLOSE;
|
||||||
|
|
||||||
|
ecore_x_netwm_allowed_action_set(bd->client.win, action, num);
|
||||||
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_hints_window_type_set(E_Border *bd)
|
e_hints_window_type_set(E_Border *bd)
|
||||||
{
|
{
|
||||||
|
@ -877,6 +915,98 @@ e_hints_window_state_get(E_Border *bd)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_hints_allowed_action_update(E_Border *bd, Ecore_X_Action action)
|
||||||
|
{
|
||||||
|
switch (action)
|
||||||
|
{
|
||||||
|
case ECORE_X_ACTION_MOVE:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_RESIZE:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MINIMIZE:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_SHADE:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_STICK:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MAXIMIZE_HORZ:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MAXIMIZE_VERT:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_FULLSCREEN:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_CHANGE_DESKTOP:
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_CLOSE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI void
|
||||||
|
e_hints_allowed_action_get(E_Border *bd)
|
||||||
|
{
|
||||||
|
Ecore_X_Action *action;
|
||||||
|
unsigned int i;
|
||||||
|
unsigned int num;
|
||||||
|
|
||||||
|
bd->client.netwm.action.move = 0;
|
||||||
|
bd->client.netwm.action.resize = 0;
|
||||||
|
bd->client.netwm.action.minimize = 0;
|
||||||
|
bd->client.netwm.action.shade = 0;
|
||||||
|
bd->client.netwm.action.stick = 0;
|
||||||
|
bd->client.netwm.action.maximized_h = 0;
|
||||||
|
bd->client.netwm.action.maximized_v = 0;
|
||||||
|
bd->client.netwm.action.fullscreen = 0;
|
||||||
|
bd->client.netwm.action.change_desktop = 0;
|
||||||
|
bd->client.netwm.action.close = 0;
|
||||||
|
|
||||||
|
ecore_x_netwm_allowed_action_get(bd->client.win, &action, &num);
|
||||||
|
if (action)
|
||||||
|
{
|
||||||
|
for (i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
switch (action[i])
|
||||||
|
{
|
||||||
|
case ECORE_X_ACTION_MOVE:
|
||||||
|
bd->client.netwm.action.move = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_RESIZE:
|
||||||
|
bd->client.netwm.action.resize = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MINIMIZE:
|
||||||
|
bd->client.netwm.action.minimize = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_SHADE:
|
||||||
|
bd->client.netwm.action.shade = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_STICK:
|
||||||
|
bd->client.netwm.action.stick = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MAXIMIZE_HORZ:
|
||||||
|
bd->client.netwm.action.maximized_h = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_MAXIMIZE_VERT:
|
||||||
|
bd->client.netwm.action.maximized_v = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_FULLSCREEN:
|
||||||
|
bd->client.netwm.action.fullscreen = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_CHANGE_DESKTOP:
|
||||||
|
bd->client.netwm.action.change_desktop = 1;
|
||||||
|
break;
|
||||||
|
case ECORE_X_ACTION_CLOSE:
|
||||||
|
bd->client.netwm.action.close = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
free(action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
e_hints_window_visible_set(E_Border *bd)
|
e_hints_window_visible_set(E_Border *bd)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,7 +42,7 @@ struct _E_Config_Dialog_Data
|
||||||
int apply_shade;
|
int apply_shade;
|
||||||
int apply_zone;
|
int apply_zone;
|
||||||
int apply_skip_winlist;
|
int apply_skip_winlist;
|
||||||
int apply_run; // unused atm
|
int apply_run;
|
||||||
} remember;
|
} remember;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -292,7 +292,8 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
(cfdata->remember.apply_locks) || (cfdata->remember.apply_layer) ||
|
(cfdata->remember.apply_locks) || (cfdata->remember.apply_layer) ||
|
||||||
(cfdata->remember.apply_border) || (cfdata->remember.apply_sticky) ||
|
(cfdata->remember.apply_border) || (cfdata->remember.apply_sticky) ||
|
||||||
(cfdata->remember.apply_desktop) || (cfdata->remember.apply_shade) ||
|
(cfdata->remember.apply_desktop) || (cfdata->remember.apply_shade) ||
|
||||||
(cfdata->remember.apply_zone) || (cfdata->remember.apply_skip_winlist)))
|
(cfdata->remember.apply_zone) || (cfdata->remember.apply_skip_winlist) ||
|
||||||
|
(cfdata->remember.apply_run)))
|
||||||
{
|
{
|
||||||
if (cfdata->border->remember)
|
if (cfdata->border->remember)
|
||||||
{
|
{
|
||||||
|
@ -486,9 +487,6 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
e_widget_framelist_object_append(of, ob);
|
e_widget_framelist_object_append(of, ob);
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
|
|
||||||
ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only));
|
|
||||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
|
||||||
|
|
||||||
of = e_widget_frametable_add(evas, _("Properties to remember"), 0);
|
of = e_widget_frametable_add(evas, _("Properties to remember"), 0);
|
||||||
ob = e_widget_check_add(evas, _("Position"), &(cfdata->remember.apply_pos));
|
ob = e_widget_check_add(evas, _("Position"), &(cfdata->remember.apply_pos));
|
||||||
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
|
e_widget_frametable_object_append(of, ob, 0, 0, 1, 1, 1, 1, 1, 1);
|
||||||
|
@ -512,5 +510,14 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 1, 1, 1);
|
e_widget_frametable_object_append(of, ob, 1, 4, 1, 1, 1, 1, 1, 1);
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
|
|
||||||
|
ob = e_widget_check_add(evas, _("Match only one window"), &(cfdata->remember.apply_first_only));
|
||||||
|
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||||
|
|
||||||
|
if (cfdata->border->client.icccm.command.argv)
|
||||||
|
{
|
||||||
|
ob = e_widget_check_add(evas, _("Start this program on login"), &(cfdata->remember.apply_run));
|
||||||
|
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,10 +17,11 @@ struct _E_Config_Dialog_Data
|
||||||
/*- BASIC -*/
|
/*- BASIC -*/
|
||||||
int x;
|
int x;
|
||||||
int y;
|
int y;
|
||||||
int flip;
|
// int flip;
|
||||||
/*- ADVANCED -*/
|
/*- ADVANCED -*/
|
||||||
int use_edge_flip;
|
int use_edge_flip;
|
||||||
double edge_flip_timeout;
|
double edge_flip_timeout;
|
||||||
|
int flip_wrap;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* a nice easy setup function that does the dirty work */
|
/* a nice easy setup function that does the dirty work */
|
||||||
|
@ -52,6 +53,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
cfdata->y = e_config->zone_desks_y_count;
|
cfdata->y = e_config->zone_desks_y_count;
|
||||||
cfdata->use_edge_flip = e_config->use_edge_flip;
|
cfdata->use_edge_flip = e_config->use_edge_flip;
|
||||||
cfdata->edge_flip_timeout = e_config->edge_flip_timeout;
|
cfdata->edge_flip_timeout = e_config->edge_flip_timeout;
|
||||||
|
cfdata->flip_wrap = e_config->desk_flip_wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
|
@ -131,6 +133,7 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
|
|
||||||
e_config->use_edge_flip = cfdata->use_edge_flip;
|
e_config->use_edge_flip = cfdata->use_edge_flip;
|
||||||
e_config->edge_flip_timeout = cfdata->edge_flip_timeout;
|
e_config->edge_flip_timeout = cfdata->edge_flip_timeout;
|
||||||
|
e_config->desk_flip_wrap = cfdata->flip_wrap;
|
||||||
|
|
||||||
e_zone_update_flip_all();
|
e_zone_update_flip_all();
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
|
@ -190,6 +193,9 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
e_widget_framelist_object_append(of, ob);
|
e_widget_framelist_object_append(of, ob);
|
||||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 2.0, 0.05, 0, &(cfdata->edge_flip_timeout), NULL, 200);
|
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 2.0, 0.05, 0, &(cfdata->edge_flip_timeout), NULL, 200);
|
||||||
e_widget_framelist_object_append(of, ob);
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
ob = e_widget_check_add(evas, _("Wrap desktops around when flipping"), &(cfdata->flip_wrap));
|
||||||
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
|
|
|
@ -25,6 +25,8 @@ struct _E_Config_Dialog_Data
|
||||||
int window_resist;
|
int window_resist;
|
||||||
int gadget_resist;
|
int gadget_resist;
|
||||||
int allow_manip;
|
int allow_manip;
|
||||||
|
int border_raise_on_mouse_action;
|
||||||
|
int border_raise_on_focus;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* a nice easy setup function that does the dirty work */
|
/* a nice easy setup function that does the dirty work */
|
||||||
|
@ -65,6 +67,8 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
if (!cfdata->maximize_direction)
|
if (!cfdata->maximize_direction)
|
||||||
cfdata->maximize_direction = E_MAXIMIZE_BOTH;
|
cfdata->maximize_direction = E_MAXIMIZE_BOTH;
|
||||||
cfdata->allow_manip = e_config->allow_manip;
|
cfdata->allow_manip = e_config->allow_manip;
|
||||||
|
cfdata->border_raise_on_mouse_action = e_config->border_raise_on_mouse_action;
|
||||||
|
cfdata->border_raise_on_focus = e_config->border_raise_on_focus;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
|
@ -113,6 +117,8 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
||||||
e_config->gadget_resist = cfdata->gadget_resist;
|
e_config->gadget_resist = cfdata->gadget_resist;
|
||||||
e_config->maximize_policy = cfdata->maximize_policy | cfdata->maximize_direction;
|
e_config->maximize_policy = cfdata->maximize_policy | cfdata->maximize_direction;
|
||||||
e_config->allow_manip = cfdata->allow_manip;
|
e_config->allow_manip = cfdata->allow_manip;
|
||||||
|
e_config->border_raise_on_mouse_action = cfdata->border_raise_on_mouse_action;
|
||||||
|
e_config->border_raise_on_focus = cfdata->border_raise_on_focus;
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
return 1; /* Apply was OK */
|
return 1; /* Apply was OK */
|
||||||
}
|
}
|
||||||
|
@ -208,5 +214,12 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
||||||
|
|
||||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
|
|
||||||
|
of = e_widget_framelist_add(evas, _("Raise Window"), 0);
|
||||||
|
ob = e_widget_check_add(evas, _("Raise when starting to move or resize"), &(cfdata->border_raise_on_mouse_action));
|
||||||
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
ob = e_widget_check_add(evas, _("Raise when clicking to focus"), &(cfdata->border_raise_on_focus));
|
||||||
|
e_widget_framelist_object_append(of, ob);
|
||||||
|
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,8 @@ _fill_data(E_Config_Dialog_Data *cfdata)
|
||||||
for (l = e_config->gadcons; l; l = l->next)
|
for (l = e_config->gadcons; l; l = l->next)
|
||||||
{
|
{
|
||||||
cfdata->cf_gc = l->data;
|
cfdata->cf_gc = l->data;
|
||||||
|
if ((!cfdata->cf_gc->name) || (!cfdata->cf_gc->id) ||
|
||||||
|
(!cfdata->gc->name) || (!cfdata->gc->id)) continue;
|
||||||
if ((!strcmp(cfdata->cf_gc->name, cfdata->gc->name)) &&
|
if ((!strcmp(cfdata->cf_gc->name, cfdata->gc->name)) &&
|
||||||
(!strcmp(cfdata->cf_gc->id, cfdata->gc->id)))
|
(!strcmp(cfdata->cf_gc->id, cfdata->gc->id)))
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,6 +25,7 @@ static int _e_int_menus_main_run_defer_cb (void *data);
|
||||||
static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi);
|
static void _e_int_menus_main_run (void *data, E_Menu *m, E_Menu_Item*mi);
|
||||||
static int _e_int_menus_main_lock_defer_cb (void *data);
|
static int _e_int_menus_main_lock_defer_cb (void *data);
|
||||||
static void _e_int_menus_main_lock (void *data, E_Menu *m, E_Menu_Item*mi);
|
static void _e_int_menus_main_lock (void *data, E_Menu *m, E_Menu_Item*mi);
|
||||||
|
static void _e_int_menus_main_lock_showhide (void *data, E_Menu *m, E_Menu_Item*mi);
|
||||||
static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_int_menus_main_restart (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _e_int_menus_main_exit (void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _e_int_menus_apps_scan (E_Menu *m);
|
static void _e_int_menus_apps_scan (E_Menu *m);
|
||||||
|
@ -375,6 +376,15 @@ _e_int_menus_main_lock(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
ecore_idle_enterer_add(_e_int_menus_main_lock_defer_cb, m->zone);
|
ecore_idle_enterer_add(_e_int_menus_main_lock_defer_cb, m->zone);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_int_menus_main_showhide(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
|
{
|
||||||
|
E_Action *act;
|
||||||
|
|
||||||
|
act = e_action_find("zone_deskshow_toggle");
|
||||||
|
if (act) act->func.go(m->zone, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi)
|
_e_int_menus_main_fm(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
{
|
{
|
||||||
|
@ -520,6 +530,11 @@ _e_int_menus_desktops_pre_cb(void *data, E_Menu *m)
|
||||||
e_util_menu_item_edje_icon_set(mi, "enlightenment/lock");
|
e_util_menu_item_edje_icon_set(mi, "enlightenment/lock");
|
||||||
e_menu_item_callback_set(mi, _e_int_menus_main_lock, NULL);
|
e_menu_item_callback_set(mi, _e_int_menus_main_lock, NULL);
|
||||||
|
|
||||||
|
mi = e_menu_item_new(m);
|
||||||
|
e_menu_item_label_set(mi, _("Show/Hide All Windows"));
|
||||||
|
e_util_menu_item_edje_icon_set(mi, "enlightenment/showhide");
|
||||||
|
e_menu_item_callback_set(mi, _e_int_menus_main_showhide, NULL);
|
||||||
|
|
||||||
mi = e_menu_item_new(m);
|
mi = e_menu_item_new(m);
|
||||||
e_menu_item_separator_set(mi, 1);
|
e_menu_item_separator_set(mi, 1);
|
||||||
|
|
||||||
|
|
|
@ -538,7 +538,7 @@ main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
_e_main_shutdown_push(e_app_shutdown);
|
_e_main_shutdown_push(e_app_shutdown);
|
||||||
/* do remember stuff */
|
/* do remember stuff */
|
||||||
if (!e_remember_init())
|
if (!e_remember_init(after_restart ? E_STARTUP_RESTART: E_STARTUP_START))
|
||||||
{
|
{
|
||||||
e_error_message_show(_("Enlightenment cannot setup remember settings."));
|
e_error_message_show(_("Enlightenment cannot setup remember settings."));
|
||||||
_e_main_shutdown(-1);
|
_e_main_shutdown(-1);
|
||||||
|
|
|
@ -15,18 +15,25 @@ static void _e_remember_free(E_Remember *rem);
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
|
|
||||||
EAPI int
|
EAPI int
|
||||||
e_remember_init(void)
|
e_remember_init(E_Startup_Mode mode)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
|
int after_restart = 0;
|
||||||
|
|
||||||
for (l = e_config->remembers; l; l = l->next)
|
if (mode == E_STARTUP_START)
|
||||||
{
|
{
|
||||||
E_Remember *rem;
|
for (l = e_config->remembers; l; l = l->next)
|
||||||
|
{
|
||||||
rem = l->data;
|
E_Remember *rem;
|
||||||
if ((rem->apply & E_REMEMBER_APPLY_RUN) &&
|
|
||||||
(rem->prop.command))
|
rem = l->data;
|
||||||
e_util_head_exec(rem->prop.head, rem->prop.command);
|
if ((rem->apply & E_REMEMBER_APPLY_RUN) &&
|
||||||
|
(rem->prop.command))
|
||||||
|
{
|
||||||
|
printf("REMEMBER CMD: \"%s\"\n", rem->prop.command);
|
||||||
|
e_util_head_exec(rem->prop.head, rem->prop.command);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -235,9 +242,44 @@ e_remember_update(E_Remember *rem, E_Border *bd)
|
||||||
rem->prop.zone = bd->zone->num;
|
rem->prop.zone = bd->zone->num;
|
||||||
|
|
||||||
rem->prop.head = bd->zone->container->manager->num;
|
rem->prop.head = bd->zone->container->manager->num;
|
||||||
/* FIXME: e17 doesn't fetch WM_COMMAND property yet
|
|
||||||
if (rem->prop.command) evas_stringshare_del(rem->prop.command);
|
if ((bd->client.icccm.command.argc > 0) &&
|
||||||
*/
|
(bd->client.icccm.command.argv))
|
||||||
|
{
|
||||||
|
char buf[4096];
|
||||||
|
int i, j, k;
|
||||||
|
|
||||||
|
buf[0] = 0;
|
||||||
|
k = 0;
|
||||||
|
for (i = 0; i < bd->client.icccm.command.argc; i++)
|
||||||
|
{
|
||||||
|
for (j = 0; bd->client.icccm.command.argv[i][j]; j++)
|
||||||
|
{
|
||||||
|
if (k >= (sizeof(buf) - 10))
|
||||||
|
{
|
||||||
|
buf[k] = 0;
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
if ((bd->client.icccm.command.argv == ' ') ||
|
||||||
|
(bd->client.icccm.command.argv == '\t') ||
|
||||||
|
(bd->client.icccm.command.argv == '\\') ||
|
||||||
|
(bd->client.icccm.command.argv == '\"') ||
|
||||||
|
(bd->client.icccm.command.argv == '\'') ||
|
||||||
|
(bd->client.icccm.command.argv == '$') ||
|
||||||
|
(bd->client.icccm.command.argv == '%'))
|
||||||
|
{
|
||||||
|
buf[k] = '\\';
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
buf[k] = bd->client.icccm.command.argv[i][j];
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
buf[k] = 0;
|
||||||
|
done:
|
||||||
|
rem->prop.command = evas_stringshare_add(buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
e_config_save_queue();
|
e_config_save_queue();
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,7 +91,7 @@ struct _E_Remember
|
||||||
} prop;
|
} prop;
|
||||||
};
|
};
|
||||||
|
|
||||||
EAPI int e_remember_init(void);
|
EAPI int e_remember_init(E_Startup_Mode mode);
|
||||||
EAPI int e_remember_shutdown(void);
|
EAPI int e_remember_shutdown(void);
|
||||||
EAPI E_Remember *e_remember_new(void);
|
EAPI E_Remember *e_remember_new(void);
|
||||||
EAPI int e_remember_usable_get(E_Remember *rem);
|
EAPI int e_remember_usable_get(E_Remember *rem);
|
||||||
|
|
|
@ -21,10 +21,10 @@ static void _e_zone_update_flip(E_Zone *zone);
|
||||||
EAPI int E_EVENT_ZONE_DESK_COUNT_SET = 0;
|
EAPI int E_EVENT_ZONE_DESK_COUNT_SET = 0;
|
||||||
EAPI int E_EVENT_POINTER_WARP = 0;
|
EAPI int E_EVENT_POINTER_WARP = 0;
|
||||||
|
|
||||||
#define E_ZONE_FLIP_UP(zone) ((zone)->desk_y_current > 0)
|
#define E_ZONE_FLIP_LEFT(zone) ((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || ((zone)->desk_x_current > 0))
|
||||||
#define E_ZONE_FLIP_RIGHT(zone) (((zone)->desk_x_current + 1) < (zone)->desk_x_count)
|
#define E_ZONE_FLIP_RIGHT(zone) ((e_config->desk_flip_wrap && ((zone)->desk_x_count > 1)) || (((zone)->desk_x_current + 1) < (zone)->desk_x_count))
|
||||||
#define E_ZONE_FLIP_DOWN(zone) (((zone)->desk_y_current + 1) < (zone)->desk_y_count)
|
#define E_ZONE_FLIP_UP(zone) ((e_config->desk_flip_wrap && ((zone)->desk_y_count > 1)) || ((zone)->desk_y_current > 0))
|
||||||
#define E_ZONE_FLIP_LEFT(zone) ((zone)->desk_x_current > 0)
|
#define E_ZONE_FLIP_DOWN(zone) ((e_config->desk_flip_wrap && ((zone)->desk_y_count > 1)) || (((zone)->desk_y_current + 1) < (zone)->desk_y_count))
|
||||||
|
|
||||||
static int startup_id = 0;
|
static int startup_id = 0;
|
||||||
|
|
||||||
|
@ -472,11 +472,21 @@ e_zone_desk_flip_to(E_Zone *zone, int x, int y)
|
||||||
|
|
||||||
E_OBJECT_CHECK(zone);
|
E_OBJECT_CHECK(zone);
|
||||||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||||
|
|
||||||
if (x < 0) x = 0;
|
if (e_config->desk_flip_wrap)
|
||||||
else if (x >= zone->desk_x_count) x = zone->desk_x_count - 1;
|
{
|
||||||
if (y < 0) y = 0;
|
x = x % zone->desk_x_count;
|
||||||
else if (y >= zone->desk_y_count) y = zone->desk_y_count - 1;
|
y = y % zone->desk_y_count;
|
||||||
|
if (x < 0) x += zone->desk_x_count;
|
||||||
|
if (y < 0) y += zone->desk_y_count;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (x < 0) x = 0;
|
||||||
|
else if (x >= zone->desk_x_count) x = zone->desk_x_count - 1;
|
||||||
|
if (y < 0) y = 0;
|
||||||
|
else if (y >= zone->desk_y_count) y = zone->desk_y_count - 1;
|
||||||
|
}
|
||||||
desk = e_desk_at_xy_get(zone, x, y);
|
desk = e_desk_at_xy_get(zone, x, y);
|
||||||
if (desk) e_desk_show(desk);
|
if (desk) e_desk_show(desk);
|
||||||
}
|
}
|
||||||
|
@ -503,10 +513,8 @@ e_zone_desk_linear_flip_to(E_Zone *zone, int x)
|
||||||
E_OBJECT_CHECK(zone);
|
E_OBJECT_CHECK(zone);
|
||||||
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
E_OBJECT_TYPE_CHECK(zone, E_ZONE_TYPE);
|
||||||
|
|
||||||
if (x < 0) return;
|
|
||||||
y = x / zone->desk_x_count;
|
y = x / zone->desk_x_count;
|
||||||
x = x - (y * zone->desk_x_count);
|
x = x - (y * zone->desk_x_count);
|
||||||
if (y >= zone->desk_y_count) return;
|
|
||||||
e_zone_desk_flip_to(zone, x, y);
|
e_zone_desk_flip_to(zone, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -927,53 +935,37 @@ _e_zone_cb_timer(void *data)
|
||||||
case E_DIRECTION_UP:
|
case E_DIRECTION_UP:
|
||||||
if (E_ZONE_FLIP_UP(zone))
|
if (E_ZONE_FLIP_UP(zone))
|
||||||
{
|
{
|
||||||
current = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current - 1);
|
e_zone_desk_flip_by(zone, 0, -1);
|
||||||
if (current)
|
ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
|
||||||
{
|
ev->curr.x = x;
|
||||||
e_desk_show(current);
|
ev->curr.y = zone->h - 2;
|
||||||
ecore_x_pointer_warp(zone->container->win, x, zone->h - 2);
|
|
||||||
ev->curr.x = x;
|
|
||||||
ev->curr.y = zone->h - 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case E_DIRECTION_RIGHT:
|
case E_DIRECTION_RIGHT:
|
||||||
if (E_ZONE_FLIP_RIGHT(zone))
|
if (E_ZONE_FLIP_RIGHT(zone))
|
||||||
{
|
{
|
||||||
current = e_desk_at_xy_get(zone, zone->desk_x_current + 1, zone->desk_y_current);
|
e_zone_desk_flip_by(zone, 1, 0);
|
||||||
if (current)
|
ecore_x_pointer_warp(zone->container->win, 2, y);
|
||||||
{
|
ev->curr.y = y;
|
||||||
e_desk_show(current);
|
ev->curr.x = 2;
|
||||||
ecore_x_pointer_warp(zone->container->win, 2, y);
|
|
||||||
ev->curr.y = y;
|
|
||||||
ev->curr.x = 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case E_DIRECTION_DOWN:
|
case E_DIRECTION_DOWN:
|
||||||
if (E_ZONE_FLIP_DOWN(zone))
|
if (E_ZONE_FLIP_DOWN(zone))
|
||||||
{
|
{
|
||||||
current = e_desk_at_xy_get(zone, zone->desk_x_current, zone->desk_y_current + 1);
|
e_zone_desk_flip_by(zone, 0, 1);
|
||||||
if (current)
|
ecore_x_pointer_warp(zone->container->win, x, 2);
|
||||||
{
|
ev->curr.x = x;
|
||||||
e_desk_show(current);
|
ev->curr.y = 2;
|
||||||
ecore_x_pointer_warp(zone->container->win, x, 2);
|
|
||||||
ev->curr.x = x;
|
|
||||||
ev->curr.y = 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case E_DIRECTION_LEFT:
|
case E_DIRECTION_LEFT:
|
||||||
if (E_ZONE_FLIP_LEFT(zone))
|
if (E_ZONE_FLIP_LEFT(zone))
|
||||||
{
|
{
|
||||||
current = e_desk_at_xy_get(zone, zone->desk_x_current - 1, zone->desk_y_current);
|
e_zone_desk_flip_by(zone, -1, 0);
|
||||||
if (current)
|
ecore_x_pointer_warp(zone->container->win, zone->w - 2, y);
|
||||||
{
|
ev->curr.y = y;
|
||||||
e_desk_show(current);
|
ev->curr.x = zone->w - 2;
|
||||||
ecore_x_pointer_warp(zone->container->win, zone->w - 2, y);
|
|
||||||
ev->curr.y = y;
|
|
||||||
ev->curr.x = zone->w - 2;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -337,9 +337,6 @@ _battery_cb_check(void *data)
|
||||||
_battery_face_level_set(inst, ret->level);
|
_battery_face_level_set(inst, ret->level);
|
||||||
battery_config->battery_prev_battery = 0;
|
battery_config->battery_prev_battery = 0;
|
||||||
}
|
}
|
||||||
free(ret->reading);
|
|
||||||
free(ret->time);
|
|
||||||
free(ret);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -353,6 +350,12 @@ _battery_cb_check(void *data)
|
||||||
battery_config->battery_check_mode = CHECK_NONE;
|
battery_config->battery_check_mode = CHECK_NONE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (ret)
|
||||||
|
{
|
||||||
|
free(ret->reading);
|
||||||
|
free(ret->time);
|
||||||
|
free(ret);
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue