forked from enlightenment/enlightenment
2 pending patches in my inbox.
1. "allow overlap" patch for modules - needs better names in the gui (Allow windows to overlap maybe - as allow overlap is very vague) 2. itray module (buggy - buggy - beware. i know why. beware i said!) 3. TODO items SVN revision: 19911
This commit is contained in:
parent
d3d92eb719
commit
5f71f7acf5
4
TODO
4
TODO
|
@ -8,6 +8,9 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
BUGS / FIXES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* BUG: edge flip for desktops still active if turned off when dragging a window
|
||||
off the desktop - either a separate config value (recommended) or turn it
|
||||
off for window dragging too
|
||||
* BUG: general settings is too... general
|
||||
* BUG: desktop settings is missing preview
|
||||
* BUG: modules need to destroy config dialogs on shutdown (otherwise - segv!)
|
||||
|
@ -126,6 +129,7 @@ Some of the things (in very short form) that need to be done to E17...
|
|||
"NICE TO HAVE" FEATURES
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
* 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
|
||||
current one
|
||||
|
|
|
@ -296,6 +296,7 @@ src/modules/battery/Makefile
|
|||
src/modules/temperature/Makefile
|
||||
src/modules/cpufreq/Makefile
|
||||
src/modules/ibox/Makefile
|
||||
src/modules/itray/Makefile
|
||||
src/modules/start/Makefile
|
||||
src/modules/randr/Makefile
|
||||
src/preload/Makefile
|
||||
|
|
|
@ -28,6 +28,7 @@ default_temperature.edc \
|
|||
default_error.edc \
|
||||
default_cpufreq.edc \
|
||||
default_ibox.edc \
|
||||
default_itray.edc \
|
||||
default_start.edc \
|
||||
default_winlist.edc \
|
||||
default_transitions.edc \
|
||||
|
|
|
@ -36,6 +36,7 @@ collections {
|
|||
#include "default_error.edc"
|
||||
#include "default_cpufreq.edc"
|
||||
#include "default_ibox.edc"
|
||||
#include "default_itray.edc"
|
||||
#include "default_start.edc"
|
||||
#include "default_winlist.edc"
|
||||
#include "default_transitions.edc"
|
||||
|
|
|
@ -0,0 +1,275 @@
|
|||
images {
|
||||
image: "e17_ibar_bg_h.png" COMP;
|
||||
image: "e17_ibar_bg_v.png" COMP;
|
||||
image: "e17_ibar_lamp_d.png" COMP;
|
||||
image: "e17_ibar_lamp_l.png" COMP;
|
||||
image: "e17_ibar_lamp_r.png" COMP;
|
||||
image: "e17_ibar_lamp_u.png" COMP;
|
||||
image: "e17_ibar_over_h.png" COMP;
|
||||
image: "e17_ibar_over_v.png" COMP;
|
||||
}
|
||||
group {
|
||||
name: "modules/itray/main";
|
||||
data {
|
||||
// item: "item_list", "item item2 item3";
|
||||
}
|
||||
script {
|
||||
public orient;
|
||||
}
|
||||
parts {
|
||||
part {
|
||||
name: "background";
|
||||
mouse_events: 1;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "overlay";
|
||||
}
|
||||
rel2 {
|
||||
to: "overlay";
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_bg_h.png";
|
||||
border: 6 6 6 6;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "vert" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
image {
|
||||
normal: "e17_ibar_bg_v.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "items_clip";
|
||||
type: RECT;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
to: "background";
|
||||
offset: 4 4;
|
||||
}
|
||||
rel2 {
|
||||
to: "background";
|
||||
offset: -5 -5;
|
||||
}
|
||||
color: 255 255 255 255;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "items";
|
||||
type: SWALLOW;
|
||||
mouse_events: 0;
|
||||
clip_to: "items_clip";
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
align: 0.5 0.5;
|
||||
rel1 {
|
||||
offset: 4 4;
|
||||
}
|
||||
rel2 {
|
||||
offset: -5 -5;
|
||||
}
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
description {
|
||||
state: "top" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
description {
|
||||
state: "left" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
description {
|
||||
state: "right" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "tray";
|
||||
type: SWALLOW;
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
align: 0.5 0.5;
|
||||
rel1 { offset: 7 6; }
|
||||
rel2 { offset: -7 -6; }
|
||||
color: 0 0 255 64;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "overlay";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
image {
|
||||
normal: "e17_ibar_over_h.png";
|
||||
border: 13 13 13 13;
|
||||
middle: 0;
|
||||
}
|
||||
fill {
|
||||
smooth: 0;
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "top" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
description {
|
||||
state: "left" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
description {
|
||||
state: "right" 0.0;
|
||||
inherit: "default" 0.0;
|
||||
}
|
||||
}
|
||||
part {
|
||||
name: "inn";
|
||||
type: RECT;
|
||||
repeat_events: 1;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
color: 0 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
programs {
|
||||
program {
|
||||
name: "orient";
|
||||
signal: "set_orientation";
|
||||
source: "*";
|
||||
script {
|
||||
// sig, src
|
||||
if (!strcmp(src, "left")) {
|
||||
set_int(orient, 0);
|
||||
set_state(PART:"background", "vert", 0.0);
|
||||
set_state(PART:"overlay", "left", 0.0);
|
||||
set_state(PART:"items", "left", 0.0);
|
||||
}
|
||||
else if (!strcmp(src, "right")) {
|
||||
set_int(orient, 1);
|
||||
set_state(PART:"background", "vert", 0.0);
|
||||
set_state(PART:"overlay", "right", 0.0);
|
||||
set_state(PART:"items", "right", 0.0);
|
||||
}
|
||||
else if (!strcmp(src, "top")) {
|
||||
set_int(orient, 2);
|
||||
set_state(PART:"background", "default", 0.0);
|
||||
set_state(PART:"overlay", "top", 0.0);
|
||||
set_state(PART:"items", "top", 0.0);
|
||||
}
|
||||
else if (!strcmp(src, "bottom")) {
|
||||
set_int(orient, 3);
|
||||
set_state(PART:"background", "default", 0.0);
|
||||
set_state(PART:"overlay", "default", 0.0);
|
||||
set_state(PART:"items", "default", 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
group {
|
||||
name: "modules/itray/follower";
|
||||
min: 56 56;
|
||||
data {
|
||||
// item: "item_list", "item item2 item3";
|
||||
}
|
||||
parts {
|
||||
part {
|
||||
name: "top";
|
||||
mouse_events: 0;
|
||||
description {
|
||||
state: "default" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: 0 -14;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 0.0;
|
||||
offset: -1 26;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_lamp_d.png";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "top" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 1.0;
|
||||
offset: 0 -26;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: -1 14;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_lamp_u.png";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "right" 0.0;
|
||||
rel1 {
|
||||
relative: 0.0 0.0;
|
||||
offset: -14 0;
|
||||
}
|
||||
rel2 {
|
||||
relative: 0.0 1.0;
|
||||
offset: 26 -1;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_lamp_r.png";
|
||||
}
|
||||
}
|
||||
description {
|
||||
state: "left" 0.0;
|
||||
rel1 {
|
||||
relative: 1.0 0.0;
|
||||
offset: -26 0;
|
||||
}
|
||||
rel2 {
|
||||
relative: 1.0 1.0;
|
||||
offset: 14 -1;
|
||||
}
|
||||
image {
|
||||
normal: "e17_ibar_lamp_l.png";
|
||||
}
|
||||
}
|
||||
}
|
||||
program {
|
||||
name: "orient";
|
||||
signal: "set_orientation";
|
||||
source: "bottom";
|
||||
action: STATE_SET "default" 0.0;
|
||||
target: "top";
|
||||
}
|
||||
program {
|
||||
name: "orient2";
|
||||
signal: "set_orientation";
|
||||
source: "top";
|
||||
action: STATE_SET "top" 0.0;
|
||||
target: "top";
|
||||
}
|
||||
program {
|
||||
name: "orient3";
|
||||
signal: "set_orientation";
|
||||
source: "left";
|
||||
action: STATE_SET "left" 0.0;
|
||||
target: "top";
|
||||
}
|
||||
program {
|
||||
name: "orient4";
|
||||
signal: "set_orientation";
|
||||
source: "right";
|
||||
action: STATE_SET "right" 0.0;
|
||||
target: "top";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1481,14 +1481,13 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
if ((bd->shaded) || (bd->shading)) return;
|
||||
if (bd->fullscreen)
|
||||
e_border_unfullscreen(bd);
|
||||
if( bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_VERTICAL )
|
||||
if (bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_VERTICAL)
|
||||
; // ignore. we are already maximized vertical.
|
||||
else if( bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_HORIZONTAL )
|
||||
else if (bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_HORIZONTAL)
|
||||
; // ignore. we are already maximized horizontaly.
|
||||
else if ( ( bd->maximized == E_MAXIMIZE_NONE ||
|
||||
else if (( bd->maximized == E_MAXIMIZE_NONE ||
|
||||
bd->maximized == E_MAXIMIZE_VERTICAL ||
|
||||
bd->maximized == E_MAXIMIZE_HORIZONTAL )
|
||||
)
|
||||
bd->maximized == E_MAXIMIZE_HORIZONTAL))
|
||||
{
|
||||
int x1, y1, x2, y2;
|
||||
int w, h;
|
||||
|
@ -1499,7 +1498,7 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
return;
|
||||
}
|
||||
|
||||
if( !bd->maximized ) // E_MAXIMIZE_NONE
|
||||
if (!bd->maximized) // E_MAXIMIZE_NONE
|
||||
{
|
||||
bd->saved.x = bd->x;
|
||||
bd->saved.y = bd->y;
|
||||
|
@ -1582,13 +1581,13 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
e_border_move_resize(bd, x1, y1, w, h);
|
||||
break;
|
||||
case E_MAXIMIZE_VERTICAL:
|
||||
x1 = bd->zone->x;
|
||||
x1 = bd->x;
|
||||
y1 = bd->zone->y;
|
||||
x2 = bd->zone->x + bd->zone->w;
|
||||
x2 = bd->x + bd->w;
|
||||
y2 = bd->zone->y + bd->zone->h;
|
||||
|
||||
/* walk through all gadgets */
|
||||
e_maximize_border_gadman_fill(bd, &x1, &y1, &x2, &y2);
|
||||
e_maximize_border_gadman_fit(bd, &x1, &y1, &x2, &y2);
|
||||
|
||||
/* walk through docks and toolbars */
|
||||
//e_maximize_border_dock_fit(bd, &x1, &y1, &x2, &y2);
|
||||
|
@ -1604,12 +1603,12 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
break;
|
||||
case E_MAXIMIZE_HORIZONTAL:
|
||||
x1 = bd->zone->x;
|
||||
y1 = bd->zone->y;
|
||||
y1 = bd->y;
|
||||
x2 = bd->zone->x + bd->zone->w;
|
||||
y2 = bd->zone->y + bd->zone->h;
|
||||
y2 = bd->y + bd->h;
|
||||
|
||||
/* walk through all gadgets */
|
||||
e_maximize_border_gadman_fill(bd, &x1, &y1, &x2, &y2);
|
||||
e_maximize_border_gadman_fit(bd, &x1, &y1, &x2, &y2);
|
||||
|
||||
/* walk through docks and toolbars */
|
||||
//e_maximize_border_dock_fit(bd, &x1, &y1, &x2, &y2);
|
||||
|
@ -1624,8 +1623,8 @@ e_border_maximize(E_Border *bd, E_Maximize max)
|
|||
e_border_move_resize(bd,x1,y1,w,h);
|
||||
break;
|
||||
}
|
||||
if( (bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_VERTICAL) ||
|
||||
(bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_HORIZONTAL) )
|
||||
if ((bd->maximized == E_MAXIMIZE_HORIZONTAL && max == E_MAXIMIZE_VERTICAL) ||
|
||||
(bd->maximized == E_MAXIMIZE_VERTICAL && max == E_MAXIMIZE_HORIZONTAL))
|
||||
bd->maximized = e_config->maximize_policy;
|
||||
else
|
||||
bd->maximized = max;
|
||||
|
@ -1659,7 +1658,7 @@ e_border_unmaximize_vh(E_Border *bd, E_Maximize max)
|
|||
case E_MAXIMIZE_SMART:
|
||||
case E_MAXIMIZE_EXPAND:
|
||||
case E_MAXIMIZE_FILL:
|
||||
if( max == E_MAXIMIZE_VERTICAL )
|
||||
if (max == E_MAXIMIZE_VERTICAL)
|
||||
{
|
||||
bd->maximized = E_MAXIMIZE_NONE;
|
||||
e_hints_window_maximized_set(bd, 0);
|
||||
|
@ -1667,12 +1666,12 @@ e_border_unmaximize_vh(E_Border *bd, E_Maximize max)
|
|||
bd->maximized = E_MAXIMIZE_HORIZONTAL;
|
||||
e_hints_window_maximized_set(bd, 1);
|
||||
|
||||
e_border_move_resize( bd, bd->x, bd->saved.y, bd->w, bd->saved.h);
|
||||
e_border_move_resize(bd, bd->x, bd->saved.y, bd->w, bd->saved.h);
|
||||
e_hints_window_size_unset(bd);
|
||||
|
||||
//edje_object_signal_emit(bd->bg_object, "unmaximize", "");
|
||||
}
|
||||
if( max == E_MAXIMIZE_HORIZONTAL )
|
||||
if (max == E_MAXIMIZE_HORIZONTAL)
|
||||
{
|
||||
bd->maximized = E_MAXIMIZE_NONE;
|
||||
e_hints_window_maximized_set(bd, 0);
|
||||
|
@ -1680,21 +1679,21 @@ e_border_unmaximize_vh(E_Border *bd, E_Maximize max)
|
|||
bd->maximized = E_MAXIMIZE_VERTICAL;
|
||||
e_hints_window_maximized_set(bd, 1);
|
||||
|
||||
e_border_move_resize( bd, bd->saved.x, bd->y, bd->saved.w, bd->h);
|
||||
e_border_move_resize(bd, bd->saved.x, bd->y, bd->saved.w, bd->h);
|
||||
e_hints_window_size_unset(bd);
|
||||
|
||||
//edje_object_signal_emit(bd->bg_object, "unmaximize", "");
|
||||
}
|
||||
break;
|
||||
case E_MAXIMIZE_VERTICAL:
|
||||
if( max == E_MAXIMIZE_HORIZONTAL )
|
||||
if (max == E_MAXIMIZE_HORIZONTAL)
|
||||
; // do nothing in this case
|
||||
if( max == E_MAXIMIZE_VERTICAL )
|
||||
if (max == E_MAXIMIZE_VERTICAL)
|
||||
{
|
||||
bd->maximized = E_MAXIMIZE_NONE;
|
||||
e_hints_window_maximized_set(bd, 0);
|
||||
|
||||
e_border_move_resize( bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
||||
e_border_move_resize(bd, bd->saved.x, bd->saved.y, bd->saved.w, bd->saved.h);
|
||||
bd->saved.x = bd->saved.y = bd->saved.w = bd->saved.h = 0;
|
||||
e_hints_window_size_unset(bd);
|
||||
|
||||
|
|
|
@ -13,7 +13,10 @@ typedef enum _E_Gadman_Policy
|
|||
E_GADMAN_POLICY_HSIZE = 1 << 9,
|
||||
E_GADMAN_POLICY_VSIZE = 1 << 10,
|
||||
E_GADMAN_POLICY_HMOVE = 1 << 11,
|
||||
E_GADMAN_POLICY_VMOVE = 1 << 12
|
||||
E_GADMAN_POLICY_VMOVE = 1 << 12,
|
||||
/* more extra flags */
|
||||
E_GADMAN_POLICY_ALLOW_OVERLAP = 1 << 15,
|
||||
E_GADMAN_POLICY_ALWAYS_ON_TOP = 1 << 16 // not used yet
|
||||
} E_Gadman_Policy;
|
||||
|
||||
typedef enum _E_Gadman_Change
|
||||
|
|
|
@ -10,6 +10,15 @@ struct _E_Maximize_Rect
|
|||
int x1, y1, x2, y2;
|
||||
};
|
||||
|
||||
struct _m_zone
|
||||
{
|
||||
int x1;
|
||||
int y1;
|
||||
int x2;
|
||||
int y2;
|
||||
int area;
|
||||
};
|
||||
|
||||
#define OBSTACLE(_x1, _y1, _x2, _y2) \
|
||||
{ \
|
||||
r = E_NEW(E_Maximize_Rect, 1); \
|
||||
|
@ -19,61 +28,140 @@ struct _E_Maximize_Rect
|
|||
|
||||
static void _e_maximize_border_rects_fill(E_Border *bd, Evas_List *list, int *x1, int *y1, int *x2, int *y2);
|
||||
|
||||
static int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc);
|
||||
|
||||
int _e_mzone_cb_square_reverse_sort(void *e1, void *e2);
|
||||
int _e_mzone_cb_width_reverse_sort(void *e1, void *e2);
|
||||
int _e_mzone_cb_height_reverse_sort(void *e1, void *e2); // not used yet
|
||||
|
||||
EAPI void
|
||||
e_maximize_border_gadman_fit(E_Border *bd, int *x1, int *y1, int *x2, int *y2)
|
||||
{
|
||||
Evas_List *l;
|
||||
int cx1, cx2, cy1, cy2;
|
||||
int ii, jj;
|
||||
Evas_List *l, *ll;
|
||||
|
||||
cx1 = bd->zone->x;
|
||||
if (x1) cx1 = *x1;
|
||||
Evas_List *mzones = NULL;
|
||||
Evas_List *tmp_mzones = NULL;
|
||||
|
||||
cy1 = bd->zone->y;
|
||||
if (y1) cy1 = *y1;
|
||||
struct _m_zone *mzone = NULL;
|
||||
struct _m_zone *mzone_split;
|
||||
|
||||
cx2 = bd->zone->x + bd->zone->w;
|
||||
if (x2) cx2 = *x2;
|
||||
mzone = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone == NULL)
|
||||
return;
|
||||
|
||||
cy2 = bd->zone->y + bd->zone->h;
|
||||
if (y2) cy2 = *y2;
|
||||
mzone->x1 = bd->zone->x;
|
||||
if (x1) mzone->x1 = *x1;
|
||||
|
||||
/* Find the smallest box */
|
||||
for (l = bd->zone->container->gadman->clients; l; l = l->next)
|
||||
mzone->y1 = bd->zone->y;
|
||||
if (y1) mzone->y1 = *y1;
|
||||
|
||||
mzone->x2 = bd->zone->x + bd->zone->w;
|
||||
if (x2) mzone->x2 = *x2;
|
||||
|
||||
mzone->y2 = bd->zone->y + bd->zone->h;
|
||||
if (y2) mzone->y2 = *y2;
|
||||
|
||||
mzones = evas_list_append(mzones, mzone);
|
||||
|
||||
for(l = bd->zone->container->gadman->clients; l; l = l->next)
|
||||
{
|
||||
E_Gadman_Client *gmc;
|
||||
double ax, ay;
|
||||
|
||||
gmc = l->data;
|
||||
if ((gmc->zone != bd->zone)) continue;
|
||||
if (gmc->zone != bd->zone || gmc->policy & E_GADMAN_POLICY_ALLOW_OVERLAP) continue;
|
||||
|
||||
ax = gmc->ax;
|
||||
ay = gmc->ay;
|
||||
tmp_mzones = mzones;
|
||||
mzones = NULL;
|
||||
|
||||
if (((ax == 0.0) || (ax == 1.0)) &&
|
||||
((ay == 0.0) || (ay == 1.0)))
|
||||
for (ll = tmp_mzones; ll; ll = ll->next)
|
||||
{
|
||||
/* corner gadget */
|
||||
/* Fake removal from one alignment :) */
|
||||
if (gmc->w > gmc->h)
|
||||
ax = 0.5;
|
||||
int res;
|
||||
mzone = ll->data;
|
||||
|
||||
res = _e_mzone_split(&mzones, mzone, gmc);
|
||||
if (res == 0)
|
||||
{
|
||||
if(mzones == NULL)
|
||||
mzones = evas_list_append(mzones, mzone);
|
||||
else
|
||||
ay = 0.5;
|
||||
evas_list_append(mzones , mzone);
|
||||
ll->data = NULL;
|
||||
}
|
||||
else if (res == 2)
|
||||
;
|
||||
else if (res == -1)
|
||||
; /* mem problems. Let ignor them yet */
|
||||
|
||||
if (ll->data != NULL)
|
||||
{
|
||||
free(ll->data);
|
||||
ll->data = NULL;
|
||||
}
|
||||
}
|
||||
evas_list_free(tmp_mzones);
|
||||
tmp_mzones = NULL;
|
||||
}
|
||||
|
||||
if ((ax == 0.0) && (gmc->x + gmc->w) > cx1)
|
||||
cx1 = (gmc->x + gmc->w);
|
||||
else if ((ax == 1.0) && (gmc->x < cx2))
|
||||
cx2 = gmc->x;
|
||||
else if ((ay == 0.0) && ((gmc->y + gmc->h) > cy1))
|
||||
cy1 = (gmc->y + gmc->h);
|
||||
else if ((ay == 1.0) && (gmc->y < cy2))
|
||||
cy2 = gmc->y;
|
||||
for (l = mzones; l; l = l->next)
|
||||
{
|
||||
mzone = l->data;
|
||||
mzone->area = (mzone->x2 - mzone->x1) * (mzone->y2 - mzone->y1);
|
||||
}
|
||||
|
||||
if (x1) *x1 = cx1;
|
||||
if (y1) *y1 = cy1;
|
||||
if (x2) *x2 = cx2;
|
||||
if (y2) *y2 = cy2;
|
||||
tmp_mzones = evas_list_sort(mzones, evas_list_count(mzones), _e_mzone_cb_square_reverse_sort);
|
||||
mzones = NULL;
|
||||
|
||||
mzones = evas_list_append(mzones, tmp_mzones->data);
|
||||
|
||||
for (l = tmp_mzones->next; l; l = l->next)
|
||||
{
|
||||
if ( ((struct _m_zone *)l->data)->area ==
|
||||
((struct _m_zone *)mzones->data)->area)
|
||||
evas_list_append(mzones, l->data);
|
||||
else
|
||||
free(l->data);
|
||||
}
|
||||
tmp_mzones = evas_list_free(tmp_mzones);
|
||||
tmp_mzones = NULL;
|
||||
|
||||
if (mzones != NULL && mzones->next == NULL)
|
||||
{
|
||||
mzone = mzones->data;
|
||||
*x1 = mzone->x1;
|
||||
*y1 = mzone->y1;
|
||||
*x2 = mzone->x2;
|
||||
*y2 = mzone->y2;
|
||||
}
|
||||
else if (mzones != NULL && mzones->next != NULL)
|
||||
{
|
||||
Evas_List *wl = NULL, *hl = NULL;
|
||||
|
||||
/* The use of *_width_reverse_sort or *_height_reverse_sort depends
|
||||
* on the preferences of the user - what window he/she would like to
|
||||
* have: (i) maximized verticaly or (ii) horisontaly.
|
||||
*/
|
||||
wl = evas_list_sort(mzones, evas_list_count(mzones), _e_mzone_cb_width_reverse_sort);
|
||||
mzones = NULL;
|
||||
// hl = evas_list_sort(mzones, -1, _e_mzone_cb_height_reverse_sort);
|
||||
|
||||
mzone = wl->data;
|
||||
//mzone = hl->data;
|
||||
*x1 = mzone->x1;
|
||||
*y1 = mzone->y1;
|
||||
*x2 = mzone->x2;
|
||||
*y2 = mzone->y2;
|
||||
|
||||
// evas_list_free( wl );
|
||||
// evas_list_free( hl );
|
||||
|
||||
mzones = wl;
|
||||
}
|
||||
|
||||
for (l = mzones; l ; l = l->next)
|
||||
if (l->data != NULL)
|
||||
free(l->data);
|
||||
mzones = evas_list_free(mzones);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
@ -302,3 +390,698 @@ _e_maximize_border_rects_fill(E_Border *bd, Evas_List *rects, int *x1, int *y1,
|
|||
if (x2) *x2 = cx2;
|
||||
if (y2) *y2 = cy2;
|
||||
}
|
||||
|
||||
int _e_mzone_split(Evas_List **add_splits_to, struct _m_zone *mzone, E_Gadman_Client *gmc)
|
||||
{
|
||||
int ii;
|
||||
int mzone_splitted = 0;
|
||||
struct _m_zone *mzone_split = NULL;
|
||||
|
||||
if (mzone == NULL || gmc == NULL)
|
||||
return -1;
|
||||
|
||||
if ((mzone->x2 - mzone->x1) <= 0 || (mzone->y2 - mzone->y1) <= 0)
|
||||
return 1;
|
||||
|
||||
if (gmc->x > mzone->x1 && gmc->y > mzone->y1 &&
|
||||
gmc->x + gmc->w < mzone->x2 && gmc->y + gmc->h < mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 8; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if(mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 4:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 5:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 6:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 7:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
} // if
|
||||
else if (gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2 &&
|
||||
gmc->y + gmc->h > mzone->y1 && gmc->y + gmc->h < mzone->y2 &&
|
||||
gmc->x <= mzone->x1 && gmc->y <= mzone->y1)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 4; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 && gmc->y <= mzone->y1 &&
|
||||
gmc->x + gmc->w < mzone->x2 &&
|
||||
gmc->y + gmc->h > mzone->y1 && gmc->y + gmc->h < mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 6; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 4:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 5:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||
gmc->y + gmc->h > mzone->y1 && gmc->y + gmc->h < mzone->y2 &&
|
||||
gmc->y <= mzone->y1 &&
|
||||
gmc->x + gmc->w >= mzone->x2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 4; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||
gmc->y > mzone->y1 &&
|
||||
gmc->y + gmc->h < mzone->y2 &&
|
||||
gmc->x + gmc->w >= mzone->x2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 6; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 4:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 5:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||
gmc->y > mzone->y1 && gmc->y < mzone->y2 &&
|
||||
gmc->x + gmc->w >= mzone->x2 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 4; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 &&
|
||||
gmc->y > mzone->y1 && gmc->y < mzone->y2 &&
|
||||
gmc->x + gmc->w < mzone->x2 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 6; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 4:
|
||||
mzone_split->x1 = gmc->x;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 5:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if(*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 &&
|
||||
gmc->y > mzone->y1 && gmc->y < mzone->y2 &&
|
||||
gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 4; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 &&
|
||||
gmc->y > mzone->y1 &&
|
||||
gmc->y + gmc->h < mzone->y2 &&
|
||||
gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 6; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = gmc->y;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y + gmc->h;
|
||||
break;
|
||||
case 2:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 3:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 4:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 5:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = gmc->x + gmc->w;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
||||
gmc->x + gmc->w >= mzone->x2 &&
|
||||
gmc->y + gmc->h > mzone->y1 &&
|
||||
gmc->y + gmc->h < mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 &&
|
||||
gmc->x + gmc->w >= mzone->x2 &&
|
||||
gmc->y > mzone->y1 && gmc->y < mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 2; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = gmc->y + gmc->h;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 &&
|
||||
gmc->x + gmc->w >= mzone->x2 &&
|
||||
gmc->y > mzone->y1 && gmc->y < mzone->y2 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = gmc->y;
|
||||
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 &&
|
||||
gmc->y <= mzone->y1 &&
|
||||
gmc->y + gmc->h >= mzone->y2 &&
|
||||
gmc->x + gmc->w > mzone->x1 && gmc->x + gmc->w < mzone->x2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
else if (gmc->x > mzone->x1 &&
|
||||
gmc->x + gmc->w < mzone->x2 &&
|
||||
gmc->y <= mzone->y1 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
for (ii = 0; ii < 2; ii ++)
|
||||
{
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
switch(ii)
|
||||
{
|
||||
case 0:
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
case 1:
|
||||
mzone_split->x1 = gmc->x + gmc->w;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = mzone->x2;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
break;
|
||||
}
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
}
|
||||
else if (gmc->x > mzone->x1 && gmc->x < mzone->x2 &&
|
||||
gmc->y <= mzone->y1 &&
|
||||
gmc->x + gmc->w >= mzone->x2 &&
|
||||
gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 1;
|
||||
mzone_split = (struct _m_zone *)malloc(sizeof(struct _m_zone));
|
||||
if (mzone_split == NULL)
|
||||
return -1;
|
||||
|
||||
mzone_split->x1 = mzone->x1;
|
||||
mzone_split->y1 = mzone->y1;
|
||||
mzone_split->x2 = gmc->x;
|
||||
mzone_split->y2 = mzone->y2;
|
||||
|
||||
if (*add_splits_to == NULL)
|
||||
*add_splits_to = evas_list_append(*add_splits_to, mzone_split);
|
||||
else
|
||||
evas_list_append(*add_splits_to, mzone_split);
|
||||
}
|
||||
else if (gmc->x <= mzone->x1 && gmc->y <= mzone->y1 &&
|
||||
gmc->x + gmc->w >= mzone->x2 && gmc->y + gmc->h >= mzone->y2)
|
||||
{
|
||||
mzone_splitted = 2;
|
||||
}
|
||||
|
||||
return mzone_splitted;
|
||||
}
|
||||
int _e_mzone_cb_square_reverse_sort(void *e1, void *e2)
|
||||
{
|
||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||
struct _m_zone *mz2 = (struct _m_zone *)e2;
|
||||
|
||||
if (e1 == NULL) return 1;
|
||||
if (e2 == NULL) return -1;
|
||||
|
||||
if (mz1->area > mz2->area)
|
||||
return -1;
|
||||
else if (mz1->area < mz2->area)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _e_mzone_cb_width_reverse_sort(void *e1, void *e2)
|
||||
{
|
||||
int w1, w2;
|
||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||
struct _m_zone *mz2 = (struct _m_zone *)e2;
|
||||
|
||||
if (e1 == NULL) return 1;
|
||||
if (e2 == NULL) return -1;
|
||||
|
||||
w1 = mz1->x2 - mz1->x1;
|
||||
w2 = mz2->x2 - mz2->x1;
|
||||
|
||||
if (w1 > w2)
|
||||
return -1;
|
||||
else if (w1 < w2)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int _e_mzone_cb_height_reverse_sort(void *e1, void *e2)
|
||||
{
|
||||
int h1, h2;
|
||||
struct _m_zone *mz1 = (struct _m_zone *)e1;
|
||||
struct _m_zone *mz2 = (struct _m_zone *)e2;
|
||||
|
||||
if (e1 == NULL) return 1;
|
||||
if (e2 == NULL) return -1;
|
||||
|
||||
h1 = mz1->y2 - mz1->y1;
|
||||
h2 = mz2->y2 - mz2->y1;
|
||||
|
||||
if (h1 > h2)
|
||||
return -1;
|
||||
else if (h1 < h2)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ battery \
|
|||
temperature \
|
||||
cpufreq \
|
||||
ibox \
|
||||
itray \
|
||||
start \
|
||||
randr \
|
||||
gadget_test
|
||||
|
|
|
@ -10,6 +10,7 @@ struct _E_Config_Dialog_Data
|
|||
int show_alert;
|
||||
double poll_time;
|
||||
int alarm_time;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
|
@ -56,6 +57,7 @@ _fill_data(Battery *b, E_Config_Dialog_Data *cfdata)
|
|||
{
|
||||
cfdata->show_alert = 0;
|
||||
}
|
||||
cfdata->allow_overlap = b->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -94,6 +96,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
ob = e_widget_check_add(evas, _("Show alert when battery is low"), &(cfdata->show_alert));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -105,6 +112,12 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
b = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
b->conf->poll_time = 10.0;
|
||||
|
||||
if (cfdata->allow_overlap && !b->conf->allow_overlap)
|
||||
b->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && b->conf->allow_overlap)
|
||||
b->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
@ -140,6 +153,11 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1, 60, 1, 0, NULL, &(cfdata->alarm_time), 200);
|
||||
e_widget_frametable_object_append(of, ob, 0, 5, 1, 1, 1, 0, 1, 0);
|
||||
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
return o;
|
||||
}
|
||||
|
@ -162,6 +180,11 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
b->conf->alarm = 0;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !b->conf->allow_overlap)
|
||||
b->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && b->conf->allow_overlap)
|
||||
b->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
|
|
@ -49,7 +49,7 @@ static Status *_battery_bsd_apm_check(Battery *ef);
|
|||
static Status *_battery_darwin_check(Battery *ef);
|
||||
#endif
|
||||
|
||||
static Battery_Face *_battery_face_new(E_Container *con);
|
||||
static Battery_Face *_battery_face_new(Battery *bat, E_Container *con);
|
||||
static void _battery_face_free(Battery_Face *ef);
|
||||
static void _battery_face_menu_new(Battery_Face *face);
|
||||
static void _battery_face_enable(Battery_Face *face);
|
||||
|
@ -64,6 +64,8 @@ static char *_battery_string_get(char *buf);
|
|||
|
||||
static void _battery_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _battery_face_cb_update_policy(void *data);
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
|
||||
|
@ -189,6 +191,7 @@ _battery_new()
|
|||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, poll_time, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, alarm, INT);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
|
||||
e->conf = e_config_domain_load("module.battery", conf_edd);
|
||||
|
@ -197,9 +200,11 @@ _battery_new()
|
|||
e->conf = E_NEW(Config, 1);
|
||||
e->conf->poll_time = 30.0;
|
||||
e->conf->alarm = 30;
|
||||
e->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 1000.0);
|
||||
E_CONFIG_LIMIT(e->conf->alarm, 0, 60);
|
||||
E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1);
|
||||
|
||||
_battery_config_menu_new(e);
|
||||
|
||||
|
@ -222,7 +227,7 @@ _battery_new()
|
|||
Battery_Face *ef;
|
||||
|
||||
con = l2->data;
|
||||
ef = _battery_face_new(con);
|
||||
ef = _battery_face_new(e, con);
|
||||
if (ef)
|
||||
{
|
||||
ef->battery = e;
|
||||
|
@ -298,10 +303,11 @@ _battery_config_menu_new(Battery *e)
|
|||
}
|
||||
|
||||
static Battery_Face *
|
||||
_battery_face_new(E_Container *con)
|
||||
_battery_face_new(Battery *bat, E_Container *con)
|
||||
{
|
||||
Evas_Object *o;
|
||||
Battery_Face *ef;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
ef = E_NEW(Battery_Face, 1);
|
||||
if (!ef) return NULL;
|
||||
|
@ -327,12 +333,17 @@ _battery_face_new(E_Container *con)
|
|||
|
||||
ef->gmc = e_gadman_client_new(con->gadman);
|
||||
e_gadman_client_domain_set(ef->gmc, "module.battery", battery_count++);
|
||||
e_gadman_client_policy_set(ef->gmc,
|
||||
E_GADMAN_POLICY_ANYWHERE |
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
if (bat->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
e_gadman_client_policy_set(ef->gmc, policy);
|
||||
e_gadman_client_min_size_set(ef->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(ef->gmc, 128, 128);
|
||||
e_gadman_client_auto_size_set(ef->gmc, 40, 40);
|
||||
|
@ -1626,8 +1637,30 @@ void
|
|||
_battery_face_cb_config_updated(Battery *bat)
|
||||
{
|
||||
/* Call all functions needed to update battery */
|
||||
_battery_face_cb_update_policy((void*)bat);
|
||||
|
||||
/* Update Poll Time */
|
||||
ecore_timer_del(bat->battery_check_timer);
|
||||
bat->battery_check_timer = ecore_timer_add(bat->conf->poll_time, _battery_cb_check, bat);
|
||||
}
|
||||
|
||||
static void _battery_face_cb_update_policy(void *data)
|
||||
{
|
||||
Battery *bat;
|
||||
Battery_Face *bf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
bat = data;
|
||||
for (l = bat->faces; l; l = l->next)
|
||||
{
|
||||
bf = l->data;
|
||||
policy = bf->gmc->policy;
|
||||
|
||||
if (bat->conf->allow_overlap ==0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
e_gadman_client_policy_set(bf->gmc , policy);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,7 @@ struct _Config
|
|||
{
|
||||
double poll_time;
|
||||
int alarm;
|
||||
int allow_overlap;
|
||||
Evas_List *faces;
|
||||
};
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ typedef struct _Cfg_File_Data Cfg_File_Data;
|
|||
struct _E_Config_Dialog_Data
|
||||
{
|
||||
int digital_style;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
|
@ -45,6 +46,7 @@ static void
|
|||
_fill_data(Clock_Face *clk, E_Config_Dialog_Data *cfdata)
|
||||
{
|
||||
cfdata->digital_style = clk->conf->digitalStyle;
|
||||
cfdata->allow_overlap = clk->clock->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -86,6 +88,12 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
ob = e_widget_radio_add(evas, _("24 Hour Display"), 2, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -97,6 +105,12 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
clk = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
clk->conf->digitalStyle = cfdata->digital_style;
|
||||
|
||||
if (cfdata->allow_overlap && !clk->clock->conf->allow_overlap)
|
||||
clk->clock->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && clk->clock->conf->allow_overlap)
|
||||
clk->clock->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ static Clock *_clock_new();
|
|||
static void _clock_shutdown(Clock *clock);
|
||||
static void _clock_config_menu_new(Clock *clock);
|
||||
|
||||
static Clock_Face *_clock_face_new(E_Container *con);
|
||||
static Clock_Face *_clock_face_new(Clock *clock, E_Container *con);
|
||||
static void _clock_face_free(Clock_Face *face);
|
||||
/* static void _clock_face_enable(Clock_Face *face); */
|
||||
static void _clock_face_disable(Clock_Face *face);
|
||||
|
@ -24,6 +24,8 @@ static void _clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj,
|
|||
static void _clock_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _clock_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _clock_face_cb_update_policy(void *data);
|
||||
|
||||
static int _clock_count;
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
|
@ -137,13 +139,16 @@ _clock_new()
|
|||
#undef D
|
||||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
|
||||
clock->conf = e_config_domain_load("module.clock", conf_edd);
|
||||
if (!clock->conf)
|
||||
{
|
||||
clock->conf = E_NEW(Config, 1);
|
||||
clock->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(clock->conf->allow_overlap, 0, 1);
|
||||
|
||||
_clock_config_menu_new(clock);
|
||||
|
||||
|
@ -160,9 +165,10 @@ _clock_new()
|
|||
Clock_Face *face;
|
||||
|
||||
con = l2->data;
|
||||
face = _clock_face_new(con);
|
||||
face = _clock_face_new(clock, con);
|
||||
if (face)
|
||||
{
|
||||
face->clock = clock;
|
||||
clock->faces = evas_list_append(clock->faces, face);
|
||||
/* Config */
|
||||
if (!cl)
|
||||
|
@ -228,11 +234,12 @@ _clock_config_menu_new(Clock *clock)
|
|||
}
|
||||
|
||||
static Clock_Face *
|
||||
_clock_face_new(E_Container *con)
|
||||
_clock_face_new(Clock *clock, E_Container *con)
|
||||
{
|
||||
Clock_Face *face;
|
||||
Evas_Object *o;
|
||||
Evas_Coord x, y, w, h;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
face = E_NEW(Clock_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
@ -266,12 +273,19 @@ _clock_face_new(E_Container *con)
|
|||
|
||||
face->gmc = e_gadman_client_new(con->gadman);
|
||||
e_gadman_client_domain_set(face->gmc, "module.clock", _clock_count++);
|
||||
e_gadman_client_policy_set(face->gmc,
|
||||
E_GADMAN_POLICY_ANYWHERE |
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (clock->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(face->gmc, policy);
|
||||
e_gadman_client_min_size_set(face->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(face->gmc, 512, 512);
|
||||
e_gadman_client_auto_size_set(face->gmc,
|
||||
|
@ -437,4 +451,28 @@ _clock_face_cb_config_updated(void *data)
|
|||
memset(buf, 0, sizeof(buf));
|
||||
snprintf(buf, sizeof(buf), "%i", face->conf->digitalStyle);
|
||||
edje_object_part_text_set(face->clock_object, "digitalStyle", buf);
|
||||
|
||||
_clock_face_cb_update_policy(face->clock);
|
||||
}
|
||||
|
||||
static void _clock_face_cb_update_policy(void *data)
|
||||
{
|
||||
Clock *clock;
|
||||
Clock_Face *cf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
clock = data;
|
||||
for (l = clock->faces; l; l = l->next)
|
||||
{
|
||||
cf = l->data;
|
||||
policy = cf->gmc->policy;
|
||||
|
||||
if (clock->conf->allow_overlap ==0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(cf->gmc , policy);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ typedef struct _Clock_Face Clock_Face;
|
|||
|
||||
struct _Config
|
||||
{
|
||||
int allow_overlap;
|
||||
Evas_List *faces;
|
||||
};
|
||||
|
||||
|
@ -33,6 +34,7 @@ struct _Clock_Face
|
|||
E_Container *con;
|
||||
E_Menu *menu;
|
||||
Config_Face *conf;
|
||||
Clock *clock;
|
||||
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
|
|
|
@ -25,6 +25,7 @@ static void _cpufreq_menu_medium(void *data, E_Menu *m, E_Menu_Item *mi);
|
|||
static void _cpufreq_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_cb_allow_overlap(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_governor(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _cpufreq_menu_frequency(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
@ -50,6 +51,8 @@ static void _cpufreq_face_update_current(Cpufreq_Face *face);
|
|||
static void _cpufreq_face_cb_set_frequency(void *data, Evas_Object *o, const char *emission, const char *source);
|
||||
static void _cpufreq_face_cb_set_governor(void *data, Evas_Object *o, const char *emission, const char *source);
|
||||
|
||||
static void _cpufreq_cb_update_policy(Cpufreq *e);
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
|
||||
|
@ -141,6 +144,7 @@ _cpufreq_new(E_Module *module)
|
|||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_VAL(D, T, poll_time, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
E_CONFIG_VAL(D, T, restore_governor, INT);
|
||||
E_CONFIG_VAL(D, T, governor, STR);
|
||||
|
@ -152,8 +156,10 @@ _cpufreq_new(E_Module *module)
|
|||
e->conf->poll_time = 2.0;
|
||||
e->conf->restore_governor = 0;
|
||||
e->conf->governor = NULL;
|
||||
e->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 60.0);
|
||||
E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1);
|
||||
#ifdef __FreeBSD__
|
||||
/* does e_module_dir_get(module) work correctly in linux??? - yes it does... what's wrong in bsd? */
|
||||
snprintf(buf, sizeof(buf), "%s/%s/cpufreq/freqset", e_module_dir_get(module), MODULE_ARCH);
|
||||
|
@ -209,6 +215,13 @@ _cpufreq_new(E_Module *module)
|
|||
|
||||
_cpufreq_face_menu_new(ef);
|
||||
|
||||
/* Add 'Allow Overlap' option */
|
||||
mi = e_menu_item_new(ef->menu);
|
||||
e_menu_item_label_set(mi, _("Allow Overlap"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, e->conf->allow_overlap);
|
||||
e_menu_item_callback_set(mi, _cpufreq_menu_cb_allow_overlap, e);
|
||||
|
||||
/* Add poll time menu to this face */
|
||||
mi = e_menu_item_new(ef->menu);
|
||||
e_menu_item_label_set(mi, _("Set Poll Time"));
|
||||
|
@ -396,6 +409,38 @@ _cpufreq_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi)
|
|||
e_config_save_queue();
|
||||
}
|
||||
|
||||
static void _cpufreq_cb_update_policy(Cpufreq *e)
|
||||
{
|
||||
Cpufreq_Face *cf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
for (l = e->faces; l; l = l->next)
|
||||
{
|
||||
cf = l->data;
|
||||
policy = cf->gmc->policy;
|
||||
|
||||
if (e->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(cf->gmc, policy);
|
||||
}
|
||||
}
|
||||
|
||||
static void _cpufreq_menu_cb_allow_overlap(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Cpufreq *e;
|
||||
|
||||
e = data;
|
||||
e->conf->allow_overlap = e_menu_item_toggle_get(mi);
|
||||
_cpufreq_cb_update_policy(e);
|
||||
e_config_save_queue();
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
_cpufreq_menu_restore_governor(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
|
@ -542,6 +587,12 @@ _cpufreq_config_menu_new(Cpufreq *e)
|
|||
|
||||
mn = e_menu_new();
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Allow Overlap"));
|
||||
e_menu_item_check_set(mi, 1);
|
||||
e_menu_item_toggle_set(mi, e->conf->allow_overlap);
|
||||
e_menu_item_callback_set(mi, _cpufreq_menu_cb_allow_overlap, e);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Set Poll Time"));
|
||||
e_menu_item_submenu_set(mi, e->config_menu_poll);
|
||||
|
@ -861,6 +912,7 @@ _cpufreq_face_new(E_Container *con, Cpufreq *owner)
|
|||
{
|
||||
Evas_Object *o;
|
||||
Cpufreq_Face *ef;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
ef = E_NEW(Cpufreq_Face, 1);
|
||||
if (!ef) return NULL;
|
||||
|
@ -890,9 +942,19 @@ _cpufreq_face_new(E_Container *con, Cpufreq *owner)
|
|||
|
||||
ef->gmc = e_gadman_client_new(ef->con->gadman);
|
||||
e_gadman_client_domain_set(ef->gmc, "module.cpufreq", cpufreq_count++);
|
||||
e_gadman_client_policy_set(ef->gmc, E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE | E_GADMAN_POLICY_VSIZE);
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (owner->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(ef->gmc, policy);
|
||||
e_gadman_client_min_size_set(ef->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(ef->gmc, 128, 128);
|
||||
/* This module needs a slightly higher min size */
|
||||
|
|
|
@ -23,6 +23,7 @@ struct _Status
|
|||
struct _Config
|
||||
{
|
||||
double poll_time;
|
||||
int allow_overlap;
|
||||
Evas_List *faces;
|
||||
|
||||
int restore_governor;
|
||||
|
|
|
@ -10,6 +10,7 @@ struct _E_Config_Dialog_Data
|
|||
int autofit;
|
||||
int follower;
|
||||
int iconsize;
|
||||
int allow_overlap;
|
||||
double follow_speed;
|
||||
double autoscroll_speed;
|
||||
};
|
||||
|
@ -53,6 +54,7 @@ _fill_data(IBar *ib, E_Config_Dialog_Data *cfdata)
|
|||
cfdata->autofit = (ib->conf->width == IBAR_WIDTH_AUTO);
|
||||
cfdata->follower = ib->conf->follower;
|
||||
cfdata->iconsize = ib->conf->iconsize;
|
||||
cfdata->allow_overlap = ib->conf->allow_overlap;
|
||||
cfdata->follow_speed = ib->conf->follow_speed;
|
||||
cfdata->autoscroll_speed = ib->conf->autoscroll_speed;
|
||||
}
|
||||
|
@ -93,6 +95,9 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -112,6 +117,11 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
ib->conf->follower = 0;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
if ((cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_FIXED))
|
||||
{
|
||||
ib->conf->width = IBAR_WIDTH_AUTO;
|
||||
|
@ -160,6 +170,12 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* allow overlap checkbox */
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -179,6 +195,12 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
ib->conf->follower = 0;
|
||||
}
|
||||
|
||||
/* allow overlap check box */
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
if ((cfdata->autofit) && (ib->conf->width == IBAR_WIDTH_FIXED))
|
||||
{
|
||||
ib->conf->width = IBAR_WIDTH_AUTO;
|
||||
|
|
|
@ -222,6 +222,7 @@ _ibar_new()
|
|||
E_CONFIG_VAL(D, T, autoscroll_speed, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, iconsize, INT);
|
||||
E_CONFIG_VAL(D, T, width, INT);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
E_CONFIG_LIST(D, T, bars, conf_bar_edd);
|
||||
|
||||
ib->conf = e_config_domain_load("module.ibar", conf_edd);
|
||||
|
@ -233,12 +234,14 @@ _ibar_new()
|
|||
ib->conf->follow_speed = 0.9;
|
||||
ib->conf->autoscroll_speed = 0.95;
|
||||
ib->conf->iconsize = 24;
|
||||
ib->conf->allow_overlap = 0;
|
||||
ib->conf->width = IBAR_WIDTH_AUTO;
|
||||
}
|
||||
E_CONFIG_LIMIT(ib->conf->follow_speed, 0.01, 1.0);
|
||||
E_CONFIG_LIMIT(ib->conf->autoscroll_speed, 0.01, 1.0);
|
||||
E_CONFIG_LIMIT(ib->conf->iconsize, 2, 400);
|
||||
E_CONFIG_LIMIT(ib->conf->width, -2, -1);
|
||||
E_CONFIG_LIMIT(ib->conf->allow_overlap, 0, 1);
|
||||
|
||||
_ibar_config_menu_new(ib);
|
||||
|
||||
|
@ -582,6 +585,12 @@ _ibar_bar_new(IBar *ib, E_Container *con)
|
|||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
if (ibb->ibar->conf->width == IBAR_WIDTH_FIXED)
|
||||
policy |= E_GADMAN_POLICY_HSIZE;
|
||||
|
||||
if (ibb->ibar->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(ibb->gmc, policy);
|
||||
e_gadman_client_min_size_set(ibb->gmc, 8, 8);
|
||||
e_gadman_client_max_size_set(ibb->gmc, 3200, 3200);
|
||||
|
@ -1007,6 +1016,11 @@ _ibar_bar_edge_change(IBar_Bar *ibb, int edge)
|
|||
e_box_align_set(ibb->box_object, 0.5, 0.5);
|
||||
|
||||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
if (ibb->ibar->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
if ((edge == E_GADMAN_EDGE_BOTTOM) ||
|
||||
(edge == E_GADMAN_EDGE_TOP))
|
||||
{
|
||||
|
@ -1050,6 +1064,12 @@ _ibar_bar_update_policy(IBar_Bar *ibb)
|
|||
E_Gadman_Policy policy;
|
||||
|
||||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
|
||||
if (ibb->ibar->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
||||
{
|
||||
|
|
|
@ -21,6 +21,7 @@ struct _Config
|
|||
double autoscroll_speed;
|
||||
int iconsize;
|
||||
int width;
|
||||
int allow_overlap;
|
||||
Evas_List *bars;
|
||||
};
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ struct _E_Config_Dialog_Data
|
|||
int iconsize;
|
||||
double follow_speed;
|
||||
double autoscroll_speed;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
|
@ -55,6 +56,7 @@ _fill_data(IBox *ib, E_Config_Dialog_Data *cfdata)
|
|||
cfdata->iconsize = ib->conf->iconsize;
|
||||
cfdata->follow_speed = ib->conf->follow_speed;
|
||||
cfdata->autoscroll_speed = ib->conf->autoscroll_speed;
|
||||
cfdata->allow_overlap = ib->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -93,6 +95,9 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -120,6 +125,12 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
{
|
||||
ib->conf->width = IBOX_WIDTH_FIXED;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
@ -160,6 +171,12 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -201,6 +218,11 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
ib->conf->autoscroll_speed = cfdata->autoscroll_speed;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
|
|
@ -203,6 +203,7 @@ _ibox_new()
|
|||
E_CONFIG_VAL(D, T, autoscroll_speed, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, iconsize, INT);
|
||||
E_CONFIG_VAL(D, T, width, INT);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
E_CONFIG_LIST(D, T, boxes, conf_box_edd);
|
||||
|
||||
ib->conf = e_config_domain_load("module.ibox", conf_edd);
|
||||
|
@ -214,11 +215,13 @@ _ibox_new()
|
|||
ib->conf->autoscroll_speed = 0.95;
|
||||
ib->conf->iconsize = 24;
|
||||
ib->conf->width = IBOX_WIDTH_AUTO;
|
||||
ib->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(ib->conf->follow_speed, 0.01, 1.0);
|
||||
E_CONFIG_LIMIT(ib->conf->autoscroll_speed, 0.01, 1.0);
|
||||
E_CONFIG_LIMIT(ib->conf->iconsize, 2, 400);
|
||||
E_CONFIG_LIMIT(ib->conf->width, -2, -1);
|
||||
E_CONFIG_LIMIT(ib->conf->allow_overlap, 0, 1);
|
||||
|
||||
_ibox_config_menu_new(ib);
|
||||
|
||||
|
@ -396,6 +399,12 @@ _ibox_box_new(IBox *ib, E_Container *con)
|
|||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
if (ibb->ibox->conf->width == IBOX_WIDTH_FIXED)
|
||||
policy |= E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (ibb->ibox->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(ibb->gmc, policy);
|
||||
e_gadman_client_min_size_set(ibb->gmc, 8, 8);
|
||||
e_gadman_client_max_size_set(ibb->gmc, 3200, 3200);
|
||||
|
@ -710,6 +719,12 @@ _ibox_box_edge_change(IBox_Box *ibb, int edge)
|
|||
e_box_align_set(ibb->item_object, 0.5, 0.5);
|
||||
|
||||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
|
||||
if (ibb->ibox->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
if ((edge == E_GADMAN_EDGE_BOTTOM) ||
|
||||
(edge == E_GADMAN_EDGE_TOP))
|
||||
{
|
||||
|
@ -753,6 +768,12 @@ _ibox_box_update_policy(IBox_Box *ibb)
|
|||
E_Gadman_Policy policy;
|
||||
|
||||
policy = E_GADMAN_POLICY_EDGES | E_GADMAN_POLICY_HMOVE | E_GADMAN_POLICY_VMOVE;
|
||||
|
||||
if (ibb->ibox->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
if ((e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_BOTTOM) ||
|
||||
(e_gadman_client_edge_get(ibb->gmc) == E_GADMAN_EDGE_TOP))
|
||||
{
|
||||
|
|
|
@ -19,6 +19,7 @@ struct _Config
|
|||
int follower;
|
||||
double autoscroll_speed;
|
||||
int iconsize;
|
||||
int allow_overlap;
|
||||
int width;
|
||||
Evas_List *boxes;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
MAINTAINERCLEANFILES = Makefile.in
|
||||
MODULE = itray
|
||||
|
||||
# data files for the module
|
||||
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
|
||||
files_DATA = \
|
||||
module_icon.png
|
||||
|
||||
EXTRA_DIST = $(files_DATA)
|
||||
|
||||
# the module .so file
|
||||
INCLUDES = -I. \
|
||||
-I$(top_srcdir) \
|
||||
-I$(includedir) \
|
||||
-I$(top_srcdir)/$(MODULE) \
|
||||
-I$(top_srcdir)/src/bin \
|
||||
-I$(top_srcdir)/src/lib \
|
||||
-I$(top_srcdir)/src/modules \
|
||||
@e_cflags@
|
||||
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
|
||||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
|
@ -0,0 +1,237 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "e_mod_config.h"
|
||||
#include "config.h"
|
||||
|
||||
typedef struct _cfdata CFData;
|
||||
typedef struct _Cfg_File_Data Cfg_File_Data;
|
||||
|
||||
struct _cfdata
|
||||
{
|
||||
int follower;
|
||||
int rowsize;
|
||||
double follow_speed;
|
||||
int allow_overlap;
|
||||
/* double autoscroll_speed;
|
||||
* int autofit;
|
||||
*/
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
char *file;
|
||||
};
|
||||
|
||||
/* Protos */
|
||||
static void *_create_data(E_Config_Dialog *cfd);
|
||||
static void _free_data(E_Config_Dialog *cfd, CFData *cfdata);
|
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata);
|
||||
static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
|
||||
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata);
|
||||
static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
|
||||
|
||||
void
|
||||
_config_itray_module(E_Container *con, ITray *itray)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View v;
|
||||
|
||||
/* Dialog Methods */
|
||||
v.create_cfdata = _create_data;
|
||||
v.free_cfdata = _free_data;
|
||||
v.basic.apply_cfdata = _basic_apply_data;
|
||||
v.basic.create_widgets = _basic_create_widgets;
|
||||
v.advanced.apply_cfdata = _advanced_apply_data;
|
||||
v.advanced.create_widgets = _advanced_create_widgets;
|
||||
|
||||
/* Create The Dialog */
|
||||
cfd = e_config_dialog_new(con, _("ITray Configuration"), NULL, 0, &v, itray);
|
||||
itray->config_dialog = cfd;
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(ITray *ib, CFData *cfdata)
|
||||
{
|
||||
/* cfdata->autofit = (ib->conf->width == ITRAY_WIDTH_AUTO);
|
||||
* cfdata->autoscroll_speed = ib->conf->autoscroll_speed;
|
||||
*/
|
||||
cfdata->follower = ib->conf->follower;
|
||||
cfdata->rowsize = ib->conf->rowsize;
|
||||
cfdata->follow_speed = ib->conf->follow_speed;
|
||||
cfdata->allow_overlap = ib->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
CFData *cfdata;
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
cfdata = E_NEW(CFData, 1);
|
||||
_fill_data(ib, cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||
{
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
ib->config_dialog = NULL;
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
|
||||
{
|
||||
Evas_Object *o, *ob, *of;
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
_fill_data(ib, cfdata);
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
ob = e_widget_check_add(evas, _("Show Follower"), &(cfdata->follower));
|
||||
e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
/* ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
|
||||
* e_widget_list_object_append(o, ob, 1, 1, 0.5);
|
||||
*/
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||
{
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
if ((cfdata->follower) && (!ib->conf->follower))
|
||||
ib->conf->follower = 1;
|
||||
else if (!(cfdata->follower) && (ib->conf->follower))
|
||||
ib->conf->follower = 0;
|
||||
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
/* if ((cfdata->autofit) && (ib->conf->width == ITRAY_WIDTH_FIXED))
|
||||
* {
|
||||
* ib->conf->width = ITRAY_WIDTH_AUTO;
|
||||
* }
|
||||
* else if (!(cfdata->autofit) && (ib->conf->width == ITRAY_WIDTH_AUTO))
|
||||
* {
|
||||
* ib->conf->width = ITRAY_WIDTH_FIXED;
|
||||
* }
|
||||
*/
|
||||
e_config_save_queue();
|
||||
|
||||
_itray_box_cb_config_updated(ib);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
_fill_data(ib, cfdata);
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Follower"), 0);
|
||||
ob = e_widget_check_add(evas, _("Visible"), &(cfdata->follower));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_label_add(evas, _("Follow Speed"));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->follow_speed), NULL,200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Number of Rows"), 0);
|
||||
ob = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 1.0, 6.0, 1.0, 0, NULL, &(cfdata->rowsize), 200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* of = e_widget_framelist_add(evas, _("Width"), 0);
|
||||
* ob = e_widget_check_add(evas, _("Auto Fit"), &(cfdata->autofit));
|
||||
* e_widget_framelist_object_append(of, ob);
|
||||
* ob = e_widget_label_add(evas, _("Autoscroll Speed:"));
|
||||
* e_widget_framelist_object_append(of, ob);
|
||||
* ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200);
|
||||
* e_widget_framelist_object_append(of, ob);
|
||||
* e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
*/
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||
{
|
||||
ITray *ib;
|
||||
|
||||
ib = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
if ((cfdata->follower) && (!ib->conf->follower))
|
||||
{
|
||||
ib->conf->follower = 1;
|
||||
}
|
||||
else if (!(cfdata->follower) && (ib->conf->follower))
|
||||
{
|
||||
ib->conf->follower = 0;
|
||||
}
|
||||
|
||||
/* if ((cfdata->autofit) && (ib->conf->width == ITRAY_WIDTH_FIXED))
|
||||
* {
|
||||
* ib->conf->width = ITRAY_WIDTH_AUTO;
|
||||
* }
|
||||
* else if (!(cfdata->autofit) && (ib->conf->width == ITRAY_WIDTH_AUTO))
|
||||
* {
|
||||
* ib->conf->width = ITRAY_WIDTH_FIXED;
|
||||
* }
|
||||
*/
|
||||
|
||||
if (cfdata->rowsize != ib->conf->rowsize)
|
||||
{
|
||||
ib->conf->rowsize = cfdata->rowsize;
|
||||
}
|
||||
if (cfdata->follow_speed != ib->conf->follow_speed)
|
||||
{
|
||||
ib->conf->follow_speed = cfdata->follow_speed;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && ib->conf->allow_overlap)
|
||||
ib->conf->allow_overlap = 0;
|
||||
|
||||
|
||||
/* if (cfdata->autoscroll_speed != ib->conf->autoscroll_speed)
|
||||
* {
|
||||
* ib->conf->autoscroll_speed = cfdata->autoscroll_speed;
|
||||
* }
|
||||
*/
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
_itray_box_cb_config_updated(ib);
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
void _config_itray_module(E_Container *con, ITray *itray);
|
||||
#endif
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
|
||||
*/
|
||||
#ifndef E_MOD_MAIN_H
|
||||
#define E_MOD_MAIN_H
|
||||
|
||||
typedef struct _Config Config;
|
||||
typedef struct _Config_Box Config_Box;
|
||||
typedef struct _ITray ITray;
|
||||
typedef struct _ITray_Box ITray_Box;
|
||||
typedef struct _ITray_Tray ITray_Tray;
|
||||
|
||||
#define ITRAY_WIDTH_AUTO -1
|
||||
#define ITRAY_WIDTH_FIXED -2
|
||||
|
||||
struct _Config
|
||||
{
|
||||
double follow_speed;
|
||||
int follower;
|
||||
double autoscroll_speed;
|
||||
int rowsize;
|
||||
int width;
|
||||
Evas_List *boxes;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Config_Box
|
||||
{
|
||||
unsigned char enabled;
|
||||
};
|
||||
|
||||
struct _ITray
|
||||
{
|
||||
Evas_List *boxes;
|
||||
E_Menu *config_menu;
|
||||
|
||||
Config *conf;
|
||||
E_Config_Dialog *config_dialog;
|
||||
};
|
||||
|
||||
struct _ITray_Box
|
||||
{
|
||||
ITray *itray;
|
||||
E_Container *con;
|
||||
Evas *evas;
|
||||
E_Menu *menu;
|
||||
|
||||
Evas_Object *box_object;
|
||||
Evas_Object *overlay_object;
|
||||
Evas_Object *item_object;
|
||||
Evas_Object *event_object;
|
||||
|
||||
double align, align_req;
|
||||
double follow, follow_req;
|
||||
Ecore_Timer *timer;
|
||||
Ecore_Animator *animator;
|
||||
|
||||
Evas_Coord x, y, w, h;
|
||||
struct {
|
||||
Evas_Coord l, r, t, b;
|
||||
} box_inset;
|
||||
|
||||
E_Gadman_Client *gmc;
|
||||
|
||||
ITray_Tray *tray;
|
||||
Config_Box *conf;
|
||||
};
|
||||
|
||||
struct _ITray_Tray
|
||||
{
|
||||
int w, h;
|
||||
int icons, rows;
|
||||
Evas_List *wins;
|
||||
Ecore_X_Window win;
|
||||
|
||||
Ecore_Event_Handler *msg_handler;
|
||||
Ecore_Event_Handler *dst_handler;
|
||||
};
|
||||
|
||||
EAPI extern E_Module_Api e_modapi;
|
||||
|
||||
EAPI void *e_modapi_init (E_Module *m);
|
||||
EAPI int e_modapi_shutdown (E_Module *m);
|
||||
EAPI int e_modapi_save (E_Module *m);
|
||||
EAPI int e_modapi_info (E_Module *m);
|
||||
EAPI int e_modapi_about (E_Module *m);
|
||||
EAPI int e_modapi_config (E_Module *m);
|
||||
|
||||
void _itray_box_cb_config_updated(void *data);
|
||||
|
||||
#endif
|
Binary file not shown.
After Width: | Height: | Size: 688 B |
|
@ -11,6 +11,7 @@ struct _E_Config_Dialog_Data
|
|||
int name_pos;
|
||||
int show_popup;
|
||||
double popup_speed;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
|
@ -61,6 +62,7 @@ _fill_data(Pager *p, E_Config_Dialog_Data *cfdata)
|
|||
|
||||
cfdata->show_popup = p->conf->popup;
|
||||
cfdata->popup_speed = p->conf->popup_speed;
|
||||
cfdata->allow_overlap = p->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -108,6 +110,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
/* Not Supported Yet ??
|
||||
ob = e_widget_radio_add(evas, _("Left"), PAGER_DESKNAME_LEFT, rg);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
|
@ -130,6 +137,11 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
p->conf->deskname_pos = cfdata->name_pos;
|
||||
if (!cfdata->show_name) p->conf->deskname_pos = PAGER_DESKNAME_NONE;
|
||||
|
||||
if (cfdata->allow_overlap && !p->conf->allow_overlap)
|
||||
p->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && p->conf->allow_overlap)
|
||||
p->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
@ -176,6 +188,12 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.1, 10.0, 0.1, 0, &(cfdata->popup_speed), NULL, 200);
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -192,6 +210,11 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
if (!cfdata->show_name) p->conf->deskname_pos = PAGER_DESKNAME_NONE;
|
||||
p->conf->popup_speed = cfdata->popup_speed;
|
||||
|
||||
if (cfdata->allow_overlap && !p->conf->allow_overlap)
|
||||
p->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && p->conf->allow_overlap)
|
||||
p->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
|
|
@ -85,6 +85,8 @@ static void _pager_menu_cb_aspect_keep_height(void *data, E_Menu *m, E_Me
|
|||
static void _pager_menu_cb_aspect_keep_width(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _pager_menu_cb_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _pager_cb_update_policy(void *data);
|
||||
|
||||
static int _pager_count;
|
||||
|
||||
static E_Config_DD *_conf_edd;
|
||||
|
@ -223,6 +225,7 @@ _pager_new(void)
|
|||
E_CONFIG_VAL(D, T, deskname_pos, UINT);
|
||||
E_CONFIG_VAL(D, T, popup_speed, DOUBLE);
|
||||
E_CONFIG_VAL(D, T, popup, UINT);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
|
||||
pager->conf = e_config_domain_load("module.pager", _conf_edd);
|
||||
|
||||
|
@ -232,10 +235,12 @@ _pager_new(void)
|
|||
pager->conf->deskname_pos = PAGER_DESKNAME_NONE;
|
||||
pager->conf->popup_speed = 1.0;
|
||||
pager->conf->popup = 1;
|
||||
pager->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(pager->conf->deskname_pos, PAGER_DESKNAME_NONE, PAGER_DESKNAME_RIGHT);
|
||||
E_CONFIG_LIMIT(pager->conf->popup_speed, 0.1, 10.0);
|
||||
E_CONFIG_LIMIT(pager->conf->popup, 0, 1);
|
||||
E_CONFIG_LIMIT(pager->conf->allow_overlap, 0, 1);
|
||||
|
||||
_pager_config_menu_new(pager);
|
||||
|
||||
|
@ -424,6 +429,7 @@ _pager_face_new(Pager *pager, E_Zone *zone, Evas *evas, int use_gmc)
|
|||
Evas_Coord x, y, w, h;
|
||||
double aspect;
|
||||
const char *drop[] = { "enlightenment/border", "enlightenment/pager_win" };
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
face = E_NEW(Pager_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
@ -471,13 +477,21 @@ _pager_face_new(Pager *pager, E_Zone *zone, Evas *evas, int use_gmc)
|
|||
|
||||
e_gadman_client_domain_set(face->gmc, "module.pager", _pager_count++);
|
||||
e_gadman_client_zone_set(face->gmc, face->zone);
|
||||
e_gadman_client_policy_set(face->gmc,
|
||||
// E_GADMAN_POLICY_FIXED_ZONE |
|
||||
E_GADMAN_POLICY_ANYWHERE |
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
// E_GADMAN_POLICY_FIXED_ZONE |
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (pager->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(face->gmc, policy);
|
||||
|
||||
e_gadman_client_min_size_set(face->gmc, 8, 8);
|
||||
e_gadman_client_max_size_set(face->gmc, 600, 600);
|
||||
e_gadman_client_auto_size_set(face->gmc,
|
||||
|
@ -2139,6 +2153,7 @@ _pager_cb_config_updated(void *data)
|
|||
|
||||
/* Handle Desktop Name Position Change */
|
||||
pager = data;
|
||||
_pager_cb_update_policy(pager);
|
||||
for (l = pager->faces; l; l = l->next)
|
||||
{
|
||||
Pager_Face *face;
|
||||
|
@ -2147,3 +2162,24 @@ _pager_cb_config_updated(void *data)
|
|||
_pager_face_deskname_position_change(face);
|
||||
}
|
||||
}
|
||||
static void _pager_cb_update_policy(void *data)
|
||||
{
|
||||
Pager *pg;
|
||||
Pager_Face *pf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
pg = data;
|
||||
for (l = pg->faces; l; l = l->next)
|
||||
{
|
||||
pf = l->data;
|
||||
policy = pf->gmc->policy;
|
||||
|
||||
if (pg->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
e_gadman_client_policy_set(pf->gmc , policy);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -32,6 +32,8 @@ struct _Config
|
|||
double popup_speed;
|
||||
/* Show popup? */
|
||||
unsigned int popup;
|
||||
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
|
|
|
@ -20,7 +20,9 @@ INCLUDES = -I. \
|
|||
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
|
||||
pkg_LTLIBRARIES = module.la
|
||||
module_la_SOURCES = e_mod_main.c \
|
||||
e_mod_main.h
|
||||
e_mod_main.h \
|
||||
e_mod_config.c \
|
||||
e_mod_config.h
|
||||
module_la_LIBADD = @e_libs@ @dlopen_libs@
|
||||
module_la_LDFLAGS = -module -avoid-version
|
||||
module_la_DEPENDENCIES = $(top_builddir)/config.h
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
#include "e.h"
|
||||
#include "e_mod_main.h"
|
||||
#include "config.h"
|
||||
|
||||
typedef struct _cfdata CFData;
|
||||
typedef struct _Cfg_File_Data Cfg_File_Data;
|
||||
|
||||
struct _cfdata
|
||||
{
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Cfg_File_Data
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
char *file;
|
||||
};
|
||||
|
||||
/* Protos */
|
||||
static Evas_Object *_create_widgets(E_Config_Dialog *cfd, Evas *evas, Config *cfdata);
|
||||
static void *_create_data(E_Config_Dialog *cfd);
|
||||
static void _free_data(E_Config_Dialog *cfd, CFData *cfdata);
|
||||
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata);
|
||||
static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
|
||||
|
||||
void
|
||||
_config_start_module(E_Container *con, Start *start)
|
||||
{
|
||||
E_Config_Dialog *cfd;
|
||||
E_Config_Dialog_View v;
|
||||
|
||||
v.create_cfdata = _create_data;
|
||||
v.free_cfdata = _free_data;
|
||||
v.basic.apply_cfdata = _basic_apply_data;
|
||||
v.basic.create_widgets = _basic_create_widgets;
|
||||
v.advanced.apply_cfdata = NULL;
|
||||
v.advanced.create_widgets = NULL;
|
||||
|
||||
cfd = e_config_dialog_new(con, _("Start Module Configuration"), NULL, 0, &v, start);
|
||||
}
|
||||
|
||||
static void
|
||||
_fill_data(Start *s, CFData *cfdata)
|
||||
{
|
||||
cfdata->allow_overlap = s->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void
|
||||
*_create_data(E_Config_Dialog *cfd)
|
||||
{
|
||||
CFData *cfdata;
|
||||
Start *s;
|
||||
|
||||
s = cfd->data;
|
||||
cfdata = E_NEW(CFData, 1);
|
||||
_fill_data(s, cfdata);
|
||||
return cfdata;
|
||||
}
|
||||
|
||||
static void
|
||||
_free_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||
{
|
||||
free(cfdata);
|
||||
}
|
||||
|
||||
static Evas_Object
|
||||
*_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
|
||||
{
|
||||
Evas_Object *o, *of, *ob;
|
||||
Start *s;
|
||||
|
||||
s = cfd->data;
|
||||
_fill_data(s, cfdata);
|
||||
|
||||
o = e_widget_list_add(evas, 0, 0);
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
static int
|
||||
_basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
|
||||
{
|
||||
Start *s;
|
||||
|
||||
s = cfd->data;
|
||||
e_border_button_bindings_ungrab_all();
|
||||
|
||||
if (cfdata->allow_overlap && !s->conf->allow_overlap)
|
||||
s->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && s->conf->allow_overlap)
|
||||
s->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
_start_cb_config_updated(s);
|
||||
return 1;
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
#ifdef E_TYPEDEFS
|
||||
#else
|
||||
#ifndef E_MOD_CONFIG_H
|
||||
#define E_MOD_CONFIG_H
|
||||
#include "e_mod_main.h"
|
||||
EAPI void _config_start_module(E_Container *con, Start *start);
|
||||
#endif
|
||||
#endif
|
|
@ -6,7 +6,7 @@
|
|||
#include "e_int_menus.h"
|
||||
|
||||
static Start *_start_new(void);
|
||||
static Start_Face *_start_face_new(E_Container *con);
|
||||
static Start_Face *_start_face_new(Start *s, E_Container *con);
|
||||
static void _start_free(Start *e);
|
||||
static void _start_face_free(Start_Face *face);
|
||||
static void _start_face_disable(Start_Face *e);
|
||||
|
@ -17,6 +17,9 @@ static void _start_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman
|
|||
static void _start_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info);
|
||||
static void _start_menu_cb_post_deactivate(void *data, E_Menu *m);
|
||||
|
||||
static void _start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _start_cb_update_policy(void *data);
|
||||
|
||||
static int button_count;
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
|
@ -79,6 +82,21 @@ e_modapi_about(E_Module *m)
|
|||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
e_modapi_config(E_Module *m)
|
||||
{
|
||||
Start *s;
|
||||
Start_Face *face;
|
||||
|
||||
s = m->data;
|
||||
if (s == NULL) return 0;
|
||||
if (s->faces == NULL) return 0;
|
||||
face = s->faces->data;
|
||||
if (face == NULL) return 0;
|
||||
_config_start_module(e_container_current_get(e_manager_current_get()), s);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static Start *
|
||||
_start_new(void)
|
||||
{
|
||||
|
@ -103,9 +121,15 @@ _start_new(void)
|
|||
#define T Config
|
||||
#define D conf_edd
|
||||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
|
||||
e->conf = e_config_domain_load("module.start", conf_edd);
|
||||
if (!e->conf) e->conf = E_NEW(Config, 1);
|
||||
if (!e->conf)
|
||||
{
|
||||
e->conf = E_NEW(Config, 1);
|
||||
e->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1);
|
||||
|
||||
_start_config_menu_new(e);
|
||||
|
||||
|
@ -122,9 +146,10 @@ _start_new(void)
|
|||
Start_Face *face;
|
||||
|
||||
con = l2->data;
|
||||
face = _start_face_new(con);
|
||||
face = _start_face_new(e, con);
|
||||
if (face)
|
||||
{
|
||||
face->start = e;
|
||||
e->faces = evas_list_append(e->faces, face);
|
||||
/* Config */
|
||||
if (!cl)
|
||||
|
@ -143,6 +168,10 @@ _start_new(void)
|
|||
/* This menu must be initialized after conf */
|
||||
_start_face_menu_new(face);
|
||||
|
||||
mi = e_menu_item_new(e->config_menu);
|
||||
e_menu_item_label_set(mi, _("Configuration"));
|
||||
e_menu_item_callback_set(mi, _start_face_cb_menu_configure, face);
|
||||
|
||||
mi = e_menu_item_new(e->config_menu);
|
||||
e_menu_item_label_set(mi, con->name);
|
||||
|
||||
|
@ -157,10 +186,11 @@ _start_new(void)
|
|||
}
|
||||
|
||||
static Start_Face *
|
||||
_start_face_new(E_Container *con)
|
||||
_start_face_new(Start *s, E_Container *con)
|
||||
{
|
||||
Start_Face *face;
|
||||
Evas_Object *o;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
face = E_NEW(Start_Face, 1);
|
||||
if (!face) return NULL;
|
||||
|
@ -186,12 +216,20 @@ _start_face_new(E_Container *con)
|
|||
|
||||
face->gmc = e_gadman_client_new(con->gadman);
|
||||
e_gadman_client_domain_set(face->gmc, "module.start", button_count++);
|
||||
e_gadman_client_policy_set(face->gmc,
|
||||
E_GADMAN_POLICY_ANYWHERE |
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (s->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(face->gmc, policy);
|
||||
|
||||
e_gadman_client_min_size_set(face->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(face->gmc, 512, 512);
|
||||
e_gadman_client_auto_size_set(face->gmc, 40, 40);
|
||||
|
@ -225,6 +263,10 @@ _start_face_menu_new(Start_Face *face)
|
|||
*/
|
||||
|
||||
/* Edit */
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Configuration"));
|
||||
e_menu_item_callback_set(mi, _start_face_cb_menu_configure, face);
|
||||
|
||||
mi = e_menu_item_new(mn);
|
||||
e_menu_item_label_set(mi, _("Edit Mode"));
|
||||
e_menu_item_callback_set(mi, _start_face_cb_menu_edit, face);
|
||||
|
@ -358,3 +400,39 @@ _start_menu_cb_post_deactivate(void *data, E_Menu *m)
|
|||
e_object_del(E_OBJECT(face->main_menu));
|
||||
face->main_menu = NULL;
|
||||
}
|
||||
void _start_cb_config_updated( void *data )
|
||||
{
|
||||
_start_cb_update_policy(data);
|
||||
}
|
||||
|
||||
void
|
||||
_start_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||
{
|
||||
Start_Face *face;
|
||||
|
||||
face = (Start_Face*)data;
|
||||
if (!face) return;
|
||||
_config_start_module(face->con, face->start);
|
||||
}
|
||||
|
||||
static void _start_cb_update_policy(void *data)
|
||||
{
|
||||
Start *s;
|
||||
Start_Face *sf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
s = data;
|
||||
for (l = s->faces; l; l = l->next)
|
||||
{
|
||||
sf = l->data;
|
||||
policy = sf->gmc->policy;
|
||||
|
||||
if (s->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
e_gadman_client_policy_set(sf->gmc , policy);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ typedef struct _Start_Face Start_Face;
|
|||
struct _Config
|
||||
{
|
||||
Evas_List *faces;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
|
@ -29,6 +30,7 @@ struct _Start_Face
|
|||
E_Container *con;
|
||||
E_Menu *menu;
|
||||
E_Menu *main_menu;
|
||||
Start *start;
|
||||
|
||||
Config_Face *conf;
|
||||
|
||||
|
@ -47,4 +49,6 @@ EAPI int e_modapi_info (E_Module *m);
|
|||
EAPI int e_modapi_about (E_Module *m);
|
||||
/* EAPI int e_modapi_config (E_Module *module); */
|
||||
|
||||
EAPI void _start_cb_config_updated(void *data);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -32,6 +32,8 @@ struct _E_Config_Dialog_Data
|
|||
int high_method;
|
||||
int high_temp;
|
||||
|
||||
int allow_overlap;
|
||||
|
||||
int sensor;
|
||||
};
|
||||
|
||||
|
@ -146,6 +148,8 @@ _fill_data(Temperature *t, E_Config_Dialog_Data *cfdata)
|
|||
{
|
||||
cfdata->sensor = 2;
|
||||
}
|
||||
|
||||
cfdata->allow_overlap = t->conf->allow_overlap;
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -248,6 +252,11 @@ _basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cf
|
|||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
}
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -280,6 +289,11 @@ _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
t->conf->high = cfdata->high_method;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !t->conf->allow_overlap)
|
||||
t->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && t->conf->allow_overlap)
|
||||
t->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
@ -392,6 +406,12 @@ _advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data
|
|||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
}
|
||||
|
||||
of = e_widget_framelist_add(evas, _("Extras"), 0);
|
||||
ob = e_widget_check_add(evas, _("Allow Overlap"), &(cfdata->allow_overlap));
|
||||
e_widget_framelist_object_append(of, ob);
|
||||
e_widget_list_object_append(o, of, 1, 1, 0.5);
|
||||
|
||||
return o;
|
||||
}
|
||||
|
||||
|
@ -446,6 +466,11 @@ _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
|
|||
break;
|
||||
}
|
||||
|
||||
if (cfdata->allow_overlap && !t->conf->allow_overlap)
|
||||
t->conf->allow_overlap = 1;
|
||||
else if (!cfdata->allow_overlap && t->conf->allow_overlap)
|
||||
t->conf->allow_overlap = 0;
|
||||
|
||||
e_border_button_bindings_grab_all();
|
||||
e_config_save_queue();
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ static void _temperature_free(Temperature *e);
|
|||
static void _temperature_config_menu_new(Temperature *e);
|
||||
static int _temperature_cb_check(void *data);
|
||||
|
||||
static Temperature_Face *_temperature_face_new(E_Container *con);
|
||||
static Temperature_Face *_temperature_face_new(Temperature *t, E_Container *con);
|
||||
static void _temperature_face_free(Temperature_Face *ef);
|
||||
static void _temperature_face_enable(Temperature_Face *face);
|
||||
static void _temperature_face_disable(Temperature_Face *face);
|
||||
|
@ -33,6 +33,8 @@ static void _temperature_face_level_set(Temperature_Face *ef, double level);
|
|||
static void _temperature_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
static void _temperature_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||
|
||||
static void _temperature_cb_update_policy(void *data);
|
||||
|
||||
static E_Config_DD *conf_edd;
|
||||
static E_Config_DD *conf_face_edd;
|
||||
|
||||
|
@ -160,6 +162,7 @@ _temperature_new()
|
|||
E_CONFIG_LIST(D, T, faces, conf_face_edd);
|
||||
E_CONFIG_VAL(D, T, sensor_name, STR);
|
||||
E_CONFIG_VAL(D, T, units, INT);
|
||||
E_CONFIG_VAL(D, T, allow_overlap, INT);
|
||||
|
||||
e->conf = e_config_domain_load("module.temperature", conf_edd);
|
||||
if (!e->conf)
|
||||
|
@ -170,11 +173,13 @@ _temperature_new()
|
|||
e->conf->high = 80;
|
||||
e->conf->sensor_name = "temp1";
|
||||
e->conf->units = CELCIUS;
|
||||
e->conf->allow_overlap = 0;
|
||||
}
|
||||
E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 1000.0);
|
||||
E_CONFIG_LIMIT(e->conf->low, 0, 100);
|
||||
E_CONFIG_LIMIT(e->conf->high, 0, 220);
|
||||
E_CONFIG_LIMIT(e->conf->units, CELCIUS, FAHRENHEIT);
|
||||
E_CONFIG_LIMIT(e->conf->allow_overlap, 0, 1);
|
||||
|
||||
_temperature_config_menu_new(e);
|
||||
e->have_temp = -1;
|
||||
|
@ -193,7 +198,7 @@ _temperature_new()
|
|||
Temperature_Face *ef;
|
||||
|
||||
con = l2->data;
|
||||
ef = _temperature_face_new(con);
|
||||
ef = _temperature_face_new(e, con);
|
||||
if (ef)
|
||||
{
|
||||
ef->temp = e;
|
||||
|
@ -270,10 +275,11 @@ _temperature_config_menu_new(Temperature *e)
|
|||
}
|
||||
|
||||
static Temperature_Face *
|
||||
_temperature_face_new(E_Container *con)
|
||||
_temperature_face_new(Temperature *t, E_Container *con)
|
||||
{
|
||||
Evas_Object *o;
|
||||
Temperature_Face *ef;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
ef = E_NEW(Temperature_Face, 1);
|
||||
if (!ef) return NULL;
|
||||
|
@ -299,12 +305,19 @@ _temperature_face_new(E_Container *con)
|
|||
|
||||
ef->gmc = e_gadman_client_new(ef->con->gadman);
|
||||
e_gadman_client_domain_set(ef->gmc, "module.temperature", temperature_count++);
|
||||
e_gadman_client_policy_set(ef->gmc,
|
||||
E_GADMAN_POLICY_ANYWHERE |
|
||||
|
||||
policy = E_GADMAN_POLICY_ANYWHERE |
|
||||
E_GADMAN_POLICY_HMOVE |
|
||||
E_GADMAN_POLICY_VMOVE |
|
||||
E_GADMAN_POLICY_HSIZE |
|
||||
E_GADMAN_POLICY_VSIZE);
|
||||
E_GADMAN_POLICY_VSIZE;
|
||||
|
||||
if (t->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(ef->gmc, policy);
|
||||
e_gadman_client_min_size_set(ef->gmc, 4, 4);
|
||||
e_gadman_client_max_size_set(ef->gmc, 128, 128);
|
||||
e_gadman_client_auto_size_set(ef->gmc, 40, 40);
|
||||
|
@ -623,5 +636,28 @@ _temperature_face_cb_config_updated(Temperature *temp)
|
|||
/* Call all funcs needed to handle update */
|
||||
ecore_timer_del(temp->temperature_check_timer);
|
||||
temp->temperature_check_timer = ecore_timer_add(temp->conf->poll_time, _temperature_cb_check, temp);
|
||||
_temperature_cb_update_policy(temp);
|
||||
}
|
||||
|
||||
void
|
||||
_temperature_cb_update_policy(void *data)
|
||||
{
|
||||
Temperature *temp;
|
||||
Temperature_Face *tf;
|
||||
Evas_List *l;
|
||||
E_Gadman_Policy policy;
|
||||
|
||||
temp = data;
|
||||
for (l = temp->faces; l; l = l->next)
|
||||
{
|
||||
tf = l->data;
|
||||
policy = tf->gmc->policy;
|
||||
|
||||
if (temp->conf->allow_overlap == 0)
|
||||
policy &= ~E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
else
|
||||
policy |= E_GADMAN_POLICY_ALLOW_OVERLAP;
|
||||
|
||||
e_gadman_client_policy_set(tf->gmc, policy);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ struct _Config
|
|||
Evas_List *faces;
|
||||
char *sensor_name;
|
||||
Unit units;
|
||||
int allow_overlap;
|
||||
};
|
||||
|
||||
struct _Config_Face
|
||||
|
|
Loading…
Reference in New Issue