#include "e.h"
-/* static prototypes */
+static Evas_List action_protos = NULL;
+static Evas_List current_actions = NULL;
+
static void _e_action_find(char *action, int act, int button, char *key, Ev_Key_Modifiers mods, void *o);
static void _e_action_free(E_Action *a);
static void e_act_move_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
static void e_act_move_go (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy);
-static void e_act_resize_start (void *o, E_Action *a, void *data, int x, int y,
- int rx, int ry);
-static void e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y,
- int rx, int ry);
-static void e_act_resize_go (void *o, E_Action *a, void *data, int x, int y,
- int rx, int ry, int dx, int dy);
+static void e_act_resize_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
+static void e_act_resize_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
+static void e_act_resize_go (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy);
static void e_act_resize_h_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
static void e_act_resize_h_stop (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
static void e_act_zoom_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry);
-/* static globals */
-static Evas_List action_protos = NULL;
-static Evas_List current_actions = NULL;
-
static void
_e_action_find(char *action, int act, int button, char *key, Ev_Key_Modifiers mods, void *o)
{
if (!e_db_int_get(db, "/actions/count", &num)) goto error;
for (i = 0; i < num; i++)
{
- char buf[4096];
- Evas_List l;
- a = NULL;
-
- a = NULL;
- sprintf(buf, "/actions/%i/name", i);
- a_name = e_db_str_get(db, buf);
- sprintf(buf, "/actions/%i/action", i);
- a_action = e_db_str_get(db, buf);
- sprintf(buf, "/actions/%i/params", i);
- a_params = e_db_str_get(db, buf);
- sprintf(buf, "/actions/%i/event", i);
- e_db_int_get(db, buf, &a_event);
- sprintf(buf, "/actions/%i/button", i);
- e_db_int_get(db, buf, &a_button);
- sprintf(buf, "/actions/%i/key", i);
- a_key = e_db_str_get(db, buf);
- sprintf(buf, "/actions/%i/modifiers", i);
- e_db_int_get(db, buf, &a_modifiers);
-
- if (act != a_event) goto next;
- if (!((a_name) &&
- (action) &&
- (!strcmp(a_name, action)))) goto next;
- if ((act >= ACT_MOUSE_CLICK) &&
- (act <= ACT_MOUSE_CLICKED) &&
- (!((a_button == -1) ||
- (a_button == button)))) goto next;
- if ((act >= ACT_KEY_DOWN) &&
- (act <= ACT_KEY_UP) &&
- (!((a_key) && (key) &&
- (!strcmp(a_key, key))))) goto next;
- if ((act >= ACT_MOUSE_CLICK) &&
- (act <= ACT_KEY_UP) &&
- (!((a_modifiers == -1) ||
- (a_modifiers == (int)mods)))) goto next;
- for (l = action_protos; l; l = l->next)
- {
- E_Action_Proto *ap;
-
- ap = l->data;
- if (!strcmp(ap->action, a_action))
- {
-
- a = NEW(E_Action, 1);
- ZERO(a, E_Action, 1);
-
- OBJ_INIT(a, _e_action_free);
-
- a->name = a_name;
- a->action = a_action;
- a->params = a_params;
- a->event = a_event;
- a->button = a_button;
- a->key = a_key;
- a->modifiers = a_modifiers;
- a->action_proto = ap;
- a->object = o;
- a->started = 0;
- current_actions = evas_list_append(current_actions, a);
- }
- }
- next:
- if (!a)
- {
- IF_FREE(a_name);
- IF_FREE(a_action);
- IF_FREE(a_params);
- IF_FREE(a_key);
- }
+ char buf[4096];
+ Evas_List l;
+ a = NULL;
+
+ a = NULL;
+ sprintf(buf, "/actions/%i/name", i);
+ a_name = e_db_str_get(db, buf);
+ sprintf(buf, "/actions/%i/action", i);
+ a_action = e_db_str_get(db, buf);
+ sprintf(buf, "/actions/%i/params", i);
+ a_params = e_db_str_get(db, buf);
+ sprintf(buf, "/actions/%i/event", i);
+ e_db_int_get(db, buf, &a_event);
+ sprintf(buf, "/actions/%i/button", i);
+ e_db_int_get(db, buf, &a_button);
+ sprintf(buf, "/actions/%i/key", i);
+ a_key = e_db_str_get(db, buf);
+ sprintf(buf, "/actions/%i/modifiers", i);
+ e_db_int_get(db, buf, &a_modifiers);
+
+ if (act != a_event) goto next;
+ if (!((a_name) &&
+ (action) &&
+ (!strcmp(a_name, action)))) goto next;
+ if ((act >= ACT_MOUSE_CLICK) &&
+ (act <= ACT_MOUSE_CLICKED) &&
+ (!((a_button == -1) ||
+ (a_button == button)))) goto next;
+ if ((act >= ACT_KEY_DOWN) &&
+ (act <= ACT_KEY_UP) &&
+ (!((a_key) && (key) &&
+ (!strcmp(a_key, key))))) goto next;
+ if ((act >= ACT_MOUSE_CLICK) &&
+ (act <= ACT_KEY_UP) &&
+ (!((a_modifiers == -1) ||
+ (a_modifiers == (int)mods)))) goto next;
+ for (l = action_protos; l; l = l->next)
+ {
+ E_Action_Proto *ap;
+
+ ap = l->data;
+ if (!strcmp(ap->action, a_action))
+ {
+
+ a = NEW(E_Action, 1);
+ ZERO(a, E_Action, 1);
+
+ OBJ_INIT(a, _e_action_free);
+
+ a->name = a_name;
+ a->action = a_action;
+ a->params = a_params;
+ a->event = a_event;
+ a->button = a_button;
+ a->key = a_key;
+ a->modifiers = a_modifiers;
+ a->action_proto = ap;
+ a->object = o;
+ a->started = 0;
+ current_actions = evas_list_append(current_actions, a);
+ }
+ }
+ next:
+ if (!a)
+ {
+ IF_FREE(a_name);
+ IF_FREE(a_action);
+ IF_FREE(a_params);
+ IF_FREE(a_key);
+ }
}
error:
e_db_close(db);
again:
for (l = current_actions; l; l = l->next)
{
- E_Action *a;
-
- a = l->data;
- if (!a->started)
- {
- if (a->action_proto->func_stop)
- a->started = 1;
- if (a->action_proto->func_start)
- {
- E_Object *obj;
-
- if (a->object)
- {
- obj = a->object;
- if (a->started)
- OBJ_REF(obj);
- }
- a->action_proto->func_start(a->object, a, data, x, y, rx, ry);
- }
- }
- if (!a->started)
- {
- current_actions = evas_list_remove(current_actions, a);
- OBJ_DO_FREE(a);
- goto again;
- }
+ E_Action *a;
+
+ a = l->data;
+ if (!a->started)
+ {
+ if (a->action_proto->func_stop)
+ a->started = 1;
+ if (a->action_proto->func_start)
+ {
+ E_Object *obj;
+
+ if (a->object)
+ {
+ obj = a->object;
+ if (a->started)
+ OBJ_REF(obj);
+ }
+ a->action_proto->func_start(a->object, a, data, x, y, rx, ry);
+ }
+ }
+ if (!a->started)
+ {
+ current_actions = evas_list_remove(current_actions, a);
+ OBJ_DO_FREE(a);
+ goto again;
+ }
}
}
again:
for (l = current_actions; l; l = l->next)
{
- E_Action *a;
-
- a = l->data;
- if ((a->started) && (a->action_proto->func_stop))
- {
- int ok = 0;
-
- if ((a->event == ACT_MOUSE_IN) &&
- (act == ACT_MOUSE_OUT))
- ok = 1;
- if ((a->event == ACT_MOUSE_OUT) &&
- (act == ACT_MOUSE_IN))
- ok = 1;
- if ((a->event >= ACT_MOUSE_CLICK) &&
- (a->event <= ACT_MOUSE_TRIPLE) &&
- (act >= ACT_MOUSE_UP) &&
- (act <= ACT_MOUSE_CLICKED) &&
- (a->button == button))
- ok = 1;
- if ((a->event == ACT_MOUSE_MOVE) &&
- ((act == ACT_MOUSE_OUT) ||
- (act == ACT_MOUSE_IN) ||
- ((act >= ACT_MOUSE_CLICK) &&
- (act <= ACT_MOUSE_TRIPLE)) ||
- (act >= ACT_MOUSE_UP)))
- ok = 1;
- if ((a->event == ACT_KEY_DOWN) &&
- (act == ACT_KEY_UP) &&
- (key) && (a->key) && (!strcmp(key, a->key)))
- ok = 1;
- if ((a->event == ACT_KEY_UP) &&
- (act == ACT_KEY_DOWN))
- ok = 1;
- if (ok)
- {
- E_Object *obj;
-
- if (a->object)
- {
- obj = a->object;
- OBJ_UNREF(obj);
- }
- a->action_proto->func_stop(a->object, a, data, x, y, rx, ry);
- a->started = 0;
- }
- }
- if (!a->started)
- {
- current_actions = evas_list_remove(current_actions, a);
- OBJ_DO_FREE(a);
- goto again;
- }
+ E_Action *a;
+
+ a = l->data;
+ if ((a->started) && (a->action_proto->func_stop))
+ {
+ int ok = 0;
+
+ if ((a->event == ACT_MOUSE_IN) &&
+ (act == ACT_MOUSE_OUT))
+ ok = 1;
+ if ((a->event == ACT_MOUSE_OUT) &&
+ (act == ACT_MOUSE_IN))
+ ok = 1;
+ if ((a->event >= ACT_MOUSE_CLICK) &&
+ (a->event <= ACT_MOUSE_TRIPLE) &&
+ (act >= ACT_MOUSE_UP) &&
+ (act <= ACT_MOUSE_CLICKED) &&
+ (a->button == button))
+ ok = 1;
+ if ((a->event == ACT_MOUSE_MOVE) &&
+ ((act == ACT_MOUSE_OUT) ||
+ (act == ACT_MOUSE_IN) ||
+ ((act >= ACT_MOUSE_CLICK) &&
+ (act <= ACT_MOUSE_TRIPLE)) ||
+ (act >= ACT_MOUSE_UP)))
+ ok = 1;
+ if ((a->event == ACT_KEY_DOWN) &&
+ (act == ACT_KEY_UP) &&
+ (key) && (a->key) && (!strcmp(key, a->key)))
+ ok = 1;
+ if ((a->event == ACT_KEY_UP) &&
+ (act == ACT_KEY_DOWN))
+ ok = 1;
+ if (ok)
+ {
+ E_Object *obj;
+
+ if (a->object)
+ {
+ obj = a->object;
+ OBJ_UNREF(obj);
+ }
+ a->action_proto->func_stop(a->object, a, data, x, y, rx, ry);
+ a->started = 0;
+ }
+ }
+ if (!a->started)
+ {
+ current_actions = evas_list_remove(current_actions, a);
+ OBJ_DO_FREE(a);
+ goto again;
+ }
}
+ return;
+ UN(action);
+ UN(mods);
+ UN(o);
}
void
for (l = current_actions; l; l = l->next)
{
- E_Action *a;
-
- a = l->data;
- if ((a->started) && (a->action_proto->func_go))
- a->action_proto->func_go(a->object, a, data, x, y, rx, ry, dx, dy);
+ E_Action *a;
+
+ a = l->data;
+ if ((a->started) && (a->action_proto->func_go))
+ a->action_proto->func_go(a->object, a, data, x, y, rx, ry, dx, dy);
}
+ return;
+ UN(action);
+ UN(act);
+ UN(button);
+ UN(key);
+ UN(mods);
+ UN(o);
}
void
again:
for (l = current_actions; l; l = l->next)
{
- E_Action *a;
-
- a = l->data;
- if ((a->started) && (o == a->object))
- {
- E_Object *obj;
-
- if (a->object)
- {
- obj = a->object;
- OBJ_UNREF(obj);
- }
- if (a->action_proto->func_stop)
- a->action_proto->func_stop(a->object, a, data, x, y, rx, ry);
- a->started = 0;
- current_actions = evas_list_remove(current_actions, a);
- OBJ_DO_FREE(a);
- goto again;
- }
+ E_Action *a;
+
+ a = l->data;
+ if ((a->started) && (o == a->object))
+ {
+ E_Object *obj;
+
+ if (a->object)
+ {
+ obj = a->object;
+ OBJ_UNREF(obj);
+ }
+ if (a->action_proto->func_stop)
+ a->action_proto->func_stop(a->object, a, data, x, y, rx, ry);
+ a->started = 0;
+ current_actions = evas_list_remove(current_actions, a);
+ OBJ_DO_FREE(a);
+ goto again;
+ }
}
}
void
e_action_add_proto(char *action,
- void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry),
- void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry),
- void (*func_go) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy))
+ void (*func_start) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry),
+ void (*func_stop) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry),
+ void (*func_go) (void *o, E_Action *a, void *data, int x, int y, int rx, int ry, int dx, int dy))
{
E_Action_Proto *ap;
b->current.requested.dy = 0;
b->previous.requested.dx = 0;
b->previous.requested.dy = 0;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
b->previous.requested.dx = 0;
b->previous.requested.dy = 0;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
if (dy != 0) b->current.requested.dy = dy;
b->changed = 1;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
/* 2 | 3 */
if (x > (b->current.w / 2))
{
- if (y > (b->current.h / 2))
- {
- b->mode.resize = 3;
- SET_BORDER_GRAVITY(b, NorthWestGravity);
- }
- else
- {
- b->mode.resize = 1;
- SET_BORDER_GRAVITY(b, SouthWestGravity);
- }
+ if (y > (b->current.h / 2))
+ {
+ b->mode.resize = 3;
+ SET_BORDER_GRAVITY(b, NorthWestGravity);
+ }
+ else
+ {
+ b->mode.resize = 1;
+ SET_BORDER_GRAVITY(b, SouthWestGravity);
+ }
}
else
{
- if (y > (b->current.h / 2))
- {
- b->mode.resize = 2;
- SET_BORDER_GRAVITY(b, NorthEastGravity);
- }
- else
- {
- b->mode.resize = 0;
- SET_BORDER_GRAVITY(b, SouthEastGravity);
- }
+ if (y > (b->current.h / 2))
+ {
+ b->mode.resize = 2;
+ SET_BORDER_GRAVITY(b, NorthEastGravity);
+ }
+ else
+ {
+ b->mode.resize = 0;
+ SET_BORDER_GRAVITY(b, SouthEastGravity);
+ }
}
+ return;
+ UN(a);
+ UN(data);
+ UN(rx);
+ UN(ry);
}
static void
b->mode.resize = 0;
b->changed = 1;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
b = o;
if (b->mode.resize == 0)
{
- b->current.requested.w -= dx;
- b->current.requested.h -= dy;
- b->current.requested.x += dx;
- b->current.requested.y += dy;
+ b->current.requested.w -= dx;
+ b->current.requested.h -= dy;
+ b->current.requested.x += dx;
+ b->current.requested.y += dy;
}
else if (b->mode.resize == 1)
{
- b->current.requested.w += dx;
- b->current.requested.h -= dy;
- b->current.requested.y += dy;
+ b->current.requested.w += dx;
+ b->current.requested.h -= dy;
+ b->current.requested.y += dy;
}
else if (b->mode.resize == 2)
{
- b->current.requested.w -= dx;
- b->current.requested.h += dy;
- b->current.requested.x += dx;
+ b->current.requested.w -= dx;
+ b->current.requested.h += dy;
+ b->current.requested.x += dx;
}
else if (b->mode.resize == 3)
{
- b->current.requested.w += dx;
- b->current.requested.h += dy;
+ b->current.requested.w += dx;
+ b->current.requested.h += dy;
}
b->changed = 1;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
/* 4 | 5 */
if (x > (b->current.w / 2))
{
- b->mode.resize = 5;
- SET_BORDER_GRAVITY(b, NorthWestGravity);
+ b->mode.resize = 5;
+ SET_BORDER_GRAVITY(b, NorthWestGravity);
}
else
{
- b->mode.resize = 4;
- SET_BORDER_GRAVITY(b, NorthEastGravity);
+ b->mode.resize = 4;
+ SET_BORDER_GRAVITY(b, NorthEastGravity);
}
+ return;
+ UN(a);
+ UN(data);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
b->mode.resize = 0;
b->changed = 1;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
b = o;
if (b->mode.resize == 4)
{
- b->current.requested.w -= dx;
- b->current.requested.x += dx;
+ b->current.requested.w -= dx;
+ b->current.requested.x += dx;
}
else if (b->mode.resize == 5)
{
- b->current.requested.w += dx;
+ b->current.requested.w += dx;
}
b->changed = 1;
e_border_adjust_limits(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
+ UN(dy);
}
/* 7 */
if (y > (b->current.h / 2))
{
- b->mode.resize = 7;
- SET_BORDER_GRAVITY(b, NorthWestGravity);
+ b->mode.resize = 7;
+ SET_BORDER_GRAVITY(b, NorthWestGravity);
}
else
{
- b->mode.resize = 6;
- SET_BORDER_GRAVITY(b, SouthWestGravity);
+ b->mode.resize = 6;
+ SET_BORDER_GRAVITY(b, SouthWestGravity);
}
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(rx);
+ UN(ry);
}
static void
b->mode.resize = 0;
e_border_adjust_limits(b);
b->changed = 1;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
static void
b = o;
if (b->mode.resize == 6)
{
- b->current.requested.h -= dy;
- b->current.requested.y += dy;
+ b->current.requested.h -= dy;
+ b->current.requested.y += dy;
}
else if (b->mode.resize == 7)
{
- b->current.requested.h += dy;
+ b->current.requested.h += dy;
}
e_border_adjust_limits(b);
b->changed = 1;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
+ UN(dx);
}
b = o;
if (b->win.client) e_icccm_delete(b->win.client);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
b = o;
if (b->win.client) e_window_kill_client(b->win.client);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
+static void e_act_cb_shade(int val, void *data);
+static void
+e_act_cb_shade(int val, void *data)
+{
+ E_Border *b;
+ static double t = 0.0;
+ double dif;
+ int si;
+ int pl, pr, pt, pb;
+ int pix_per_sec = 200;
+
+ b = data;
+ if (b->client.shaded >= 0)
+ {
+ t = e_get_time();
+ b->client.shaded = -1;
+ }
+
+ dif = e_get_time() - t;
+ pl = pr = pt = pb = 0;
+ if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
+
+ si = val - (int)(dif * (double)pix_per_sec);
+
+ if (si <= (pt + pb)) si = pt + pb;
+ b->current.requested.h = si;
+ b->changed = 1;
+ e_border_adjust_limits(b);
+ if (si != (pt + pb))
+ e_add_event_timer("e_act_cb_shade()", 0.02, e_act_cb_shade, val, data);
+ else
+ b->client.shaded = 1;
+}
+
+static void e_act_cb_unshade(int val, void *data);
+static void
+e_act_cb_unshade(int val, void *data)
+{
+ E_Border *b;
+ static double t = 0.0;
+ double dif;
+ int si;
+ int pl, pr, pt, pb;
+ int pix_per_sec = 200;
+
+ b = data;
+ if (b->client.shaded >= 0)
+ {
+ t = e_get_time();
+ b->client.shaded = -1;
+ }
+
+ dif = e_get_time() - t;
+ pl = pr = pt = pb = 0;
+ if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
+
+ si = val - (int)(dif * (double)pix_per_sec);
+
+ if (si <= (pt + pb)) si = pt + pb;
+ b->current.requested.h = si;
+ b->changed = 1;
+ e_border_adjust_limits(b);
+ if (si != (pt + pb))
+ e_add_event_timer("e_act_cb_shade()", 0.02, e_act_cb_shade, val, data);
+ else
+ b->client.shaded = 1;
+}
static void
e_act_shade_start (void *o, E_Action *a, void *data, int x, int y, int rx, int ry)
E_Border *b;
b = o;
+ /* in the process of being shaded - abort */
+ if (b->client.shaded < 0) return;
+ if (b->client.shaded == 0)
+ e_act_cb_shade(b->client.h, b);
+ else
+ e_act_cb_unshade(b->client.h, b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
b = o;
e_border_raise(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
b = o;
e_border_lower(b);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
b = o;
exit(0);
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ e_exec_restart();
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ if (b->client.sticky) b->client.sticky = 0;
+ else b->client.sticky = 1;
+ b->changed = 1;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
E_Border *b;
b = o;
+ return;
+ UN(a);
+ UN(data);
+ UN(x);
+ UN(y);
+ UN(rx);
+ UN(ry);
}
#include "e.h"
-/* static prototypes */
+/* Window border rendering, querying, setting & modification code */
+
+/* globals local to window borders */
+static Evas_List evases = NULL;
+static Evas_List borders = NULL;
+
+static int mouse_x, mouse_y, mouse_win_x, mouse_win_y;
+static int mouse_buttons = 0;
+
+static int border_mouse_x = 0;
+static int border_mouse_y = 0;
+static int border_mouse_buttons = 0;
+
+static Eevent *current_ev = NULL;
+
static void e_idle(void *data);
static void e_map_request(Eevent * ev);
static void e_configure_request(Eevent * ev);
static void e_window_expose(Eevent * ev);
static void e_cb_mouse_in(void *data, Ebits_Object o, char *class, int bt, int x, int y, int ox, int oy, int ow, int oh);
-static void e_cb_mouse_out(void *data, Ebits_Object o, char *class, int bt, int
- x, int y, int ox, int oy, int ow, int oh);
+static void e_cb_mouse_out(void *data, Ebits_Object o, char *class, int bt, int x, int y, int ox, int oy, int ow, int oh);
static void e_cb_mouse_down(void *data, Ebits_Object o, char *class, int bt, int x, int y, int ox, int oy, int ow, int oh);
static void e_cb_mouse_up(void *data, Ebits_Object o, char *class, int bt, int x, int y, int ox, int oy, int ow, int oh);
static void e_cb_mouse_move(void *data, Ebits_Object o, char *class, int bt, int x, int y, int ox, int oy, int ow, int oh);
static void e_border_poll(int val, void *data);
-/* Window border rendering, querying, setting & modification code */
-
-/* globals local to window borders */
-static Evas_List evases = NULL;
-static Evas_List borders = NULL;
-
-static int mouse_x, mouse_y, mouse_win_x, mouse_win_y;
-static int mouse_buttons = 0;
-
-static int border_mouse_x = 0;
-static int border_mouse_y = 0;
-static int border_mouse_buttons = 0;
-
-static Eevent *current_ev = NULL;
-
/* what to dowhen we're idle */
static void
e_idle(void *data)
for (l = borders; l; l = l->next)
{
- E_Border *b;
-
- b = l->data;
- e_border_update(b);
+ E_Border *b;
+
+ b = l->data;
+ e_border_update(b);
}
for (l = evases; l; l = l->next)
{
- Evas evas;
-
- evas = l->data;
- evas_render(evas);
+ Evas evas;
+
+ evas = l->data;
+ evas_render(evas);
}
e_db_runtime_flush();
+ return;
+ UN(data);
}
/* */
current_ev = ev;
e = ev->event;
{
- E_Border *b;
-
- printf("map request %x\n", (int) e->win);
- b = e_border_find_by_window(e->win);
- if (!b)
- {
- b = e_border_adopt(e->win, 0);
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (!b)
+ {
+ b = e_border_adopt(e->win, 0);
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- int pl, pr, pt, pb;
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ int pl, pr, pt, pb;
- pl = pr = pt = pb = 0;
- if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
- if (e->mask & EV_VALUE_X)
- {
- printf("request move to %i %i\n", e->x, e->y);
- }
- if (e->mask & EV_VALUE_X)
- b->current.requested.x = e->x;
- if (e->mask & EV_VALUE_Y)
- b->current.requested.y = e->y;
- if (e->mask & EV_VALUE_W)
- b->current.requested.w = e->w + pl + pr;
- if (e->mask & EV_VALUE_H)
- b->current.requested.h = e->h + pt + pb;
- if ((e->mask & EV_VALUE_SIBLING) && (e->mask & EV_VALUE_STACKING))
- {
- E_Border *b_rel;
-
- b_rel = e_border_find_by_window(e->stack_win);
- if (b_rel)
- {
- if (e->detail == EV_STACK_ABOVE) e_border_raise_above(b, b_rel);
- else if (e->detail == EV_STACK_BELOW) e_border_lower_below(b, b_rel);
- /* FIXME: need to handle & fix
- * EV_STACK_TOP_IF
- * EV_STACK_BOTTOM_IF
- * EV_STACK_OPPOSITE
- */
- else if (e->detail == EV_STACK_TOP_IF) e_border_raise(b);
- else if (e->detail == EV_STACK_BOTTOM_IF) e_border_lower(b);
- }
- }
- else if (e->mask & EV_VALUE_STACKING)
- {
- if (e->detail == EV_STACK_ABOVE) e_border_raise(b);
- else if (e->detail == EV_STACK_BELOW) e_border_lower(b);
- /* FIXME: need to handle & fix
- * EV_STACK_TOP_IF
- * EV_STACK_BOTTOM_IF
- * EV_STACK_OPPOSITE
- */
- else if (e->detail == EV_STACK_TOP_IF) e_border_raise(b);
- else if (e->detail == EV_STACK_BOTTOM_IF) e_border_lower(b);
- }
- b->changed = 1;
- e_border_adjust_limits(b);
- }
- else
- {
- if ((e->mask & EV_VALUE_X) && (e->mask & EV_VALUE_W))
- e_window_move_resize(e->win, e->x, e->y, e->w, e->h);
- else if ((e->mask & EV_VALUE_W))
- e_window_resize(e->win, e->w, e->h);
- else if ((e->mask & EV_VALUE_X))
- e_window_move(e->win, e->x, e->y);
- }
+ pl = pr = pt = pb = 0;
+ if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
+ if (e->mask & EV_VALUE_X)
+ b->current.requested.x = e->x;
+ if (e->mask & EV_VALUE_Y)
+ b->current.requested.y = e->y;
+ if (e->mask & EV_VALUE_W)
+ b->current.requested.w = e->w + pl + pr;
+ if (e->mask & EV_VALUE_H)
+ b->current.requested.h = e->h + pt + pb;
+ if ((e->mask & EV_VALUE_SIBLING) && (e->mask & EV_VALUE_STACKING))
+ {
+ E_Border *b_rel;
+
+ b_rel = e_border_find_by_window(e->stack_win);
+ if (b_rel)
+ {
+ if (e->detail == EV_STACK_ABOVE) e_border_raise_above(b, b_rel);
+ else if (e->detail == EV_STACK_BELOW) e_border_lower_below(b, b_rel);
+ /* FIXME: need to handle & fix
+ * EV_STACK_TOP_IF
+ * EV_STACK_BOTTOM_IF
+ * EV_STACK_OPPOSITE
+ */
+ else if (e->detail == EV_STACK_TOP_IF) e_border_raise(b);
+ else if (e->detail == EV_STACK_BOTTOM_IF) e_border_lower(b);
+ }
+ }
+ else if (e->mask & EV_VALUE_STACKING)
+ {
+ if (e->detail == EV_STACK_ABOVE) e_border_raise(b);
+ else if (e->detail == EV_STACK_BELOW) e_border_lower(b);
+ /* FIXME: need to handle & fix
+ * EV_STACK_TOP_IF
+ * EV_STACK_BOTTOM_IF
+ * EV_STACK_OPPOSITE
+ */
+ else if (e->detail == EV_STACK_TOP_IF) e_border_raise(b);
+ else if (e->detail == EV_STACK_BOTTOM_IF) e_border_lower(b);
+ }
+ b->changed = 1;
+ e_border_adjust_limits(b);
+ }
+ else
+ {
+ if ((e->mask & EV_VALUE_X) && (e->mask & EV_VALUE_W))
+ e_window_move_resize(e->win, e->x, e->y, e->w, e->h);
+ else if ((e->mask & EV_VALUE_W))
+ e_window_resize(e->win, e->w, e->h);
+ else if ((e->mask & EV_VALUE_X))
+ e_window_move(e->win, e->x, e->y);
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ e_icccm_handle_property_change(e->atom, b);
+ }
}
current_ev = NULL;
}
/* */
static void
+e_client_message(Eevent * ev)
+{
+ Ev_Message *e;
+
+ current_ev = ev;
+ e = ev->event;
+
+ e_icccm_handle_client_message(e);
+
+ current_ev = NULL;
+}
+
+/* */
+static void
e_unmap(Eevent * ev)
{
Ev_Window_Unmap *e;
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (b->win.client == e->win)
- {
- if (b->ignore_unmap > 0) b->ignore_unmap--;
- else
- {
- printf("unmap %x\n",(int) e->win);
- e_action_stop_by_object(b, NULL,
- mouse_win_x, mouse_win_y,
- border_mouse_x, border_mouse_y);
- OBJ_UNREF(b);
- OBJ_IF_FREE(b)
- {
- e_window_reparent(e->win, 0, 0, 0);
- e_icccm_release(e->win);
- OBJ_FREE(b);
- }
- }
- }
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (b->win.client == e->win)
+ {
+ if (b->ignore_unmap > 0) b->ignore_unmap--;
+ else
+ {
+ e_action_stop_by_object(b, NULL,
+ mouse_win_x, mouse_win_y,
+ border_mouse_x, border_mouse_y);
+ OBJ_UNREF(b);
+ OBJ_IF_FREE(b)
+ {
+ e_window_reparent(e->win, 0, 0, 0);
+ e_icccm_release(e->win);
+ OBJ_FREE(b);
+ }
+ }
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- printf("destroy %x\n", (int) e->win);
- if (b->win.client == e->win)
- {
- e_action_stop_by_object(b, NULL,
- mouse_win_x, mouse_win_y,
- border_mouse_x, border_mouse_y);
- OBJ_UNREF(b);
- OBJ_IF_FREE(b)
- {
- e_window_reparent(e->win, 0, 0, 0);
- e_icccm_release(e->win);
- OBJ_FREE(b);
- }
- }
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (b->win.client == e->win)
+ {
+ e_action_stop_by_object(b, NULL,
+ mouse_win_x, mouse_win_y,
+ border_mouse_x, border_mouse_y);
+ OBJ_UNREF(b);
+ OBJ_IF_FREE(b)
+ {
+ e_window_reparent(e->win, 0, 0, 0);
+ e_icccm_release(e->win);
+ OBJ_FREE(b);
+ }
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->lower) e_border_lower(b);
- else e_border_raise(b);
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->lower) e_border_lower(b);
+ else e_border_raise(b);
+ }
}
current_ev = NULL;
}
e = ev->event;
#if 0
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if ((b) && (e->parent_from == b->win.container))
- {
- if (b)
- {
- e_action_stop_by_object(b, NULL,
- mouse_win_x, mouse_win_y,
- border_mouse_x, border_mouse_y);
- OBJ_UNREF(b);
- OBJ_IF_FREE(b)
- {
- e_window_reparent(e->win, 0, 0, 0);
- e_icccm_release(e->win);
- OBJ_FREE(b);
- }
- }
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if ((b) && (e->parent_from == b->win.container))
+ {
+ if (b)
+ {
+ e_action_stop_by_object(b, NULL,
+ mouse_win_x, mouse_win_y,
+ border_mouse_x, border_mouse_y);
+ OBJ_UNREF(b);
+ OBJ_IF_FREE(b)
+ {
+ e_window_reparent(e->win, 0, 0, 0);
+ e_icccm_release(e->win);
+ OBJ_FREE(b);
+ }
+ }
+ }
}
#endif
current_ev = NULL;
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- b->current.selected = 1;
- b->changed = 1;
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ b->current.selected = 1;
+ b->changed = 1;
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- char *settings_db = PACKAGE_DATA_DIR"/data/settings.db";
- E_DB_File *db;
- int focus_mode;
- char buf[4096];
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ char *settings_db = PACKAGE_DATA_DIR"/data/settings.db";
+ E_DB_File *db;
+ int focus_mode;
+ char buf[4096];
- b->current.selected = 0;
- /* settings - click to focus would affect grabs */
- db = e_db_open_read(settings_db);
- sprintf(buf, "/focus/mode");
- if ((db) && (e_db_int_get(db, buf, &focus_mode)) && (!b->current.selected))
- {
- if (focus_mode == 2) /* click to focus */
- {
- E_Grab *g;
-
- g = NEW(E_Grab, 1);
- ZERO(g, E_Grab, 1);
- g->button = 0;
- g->mods = 0;
- g->any_mod = 1;
- g->remove_after = 1;
- b->grabs = evas_list_append(b->grabs, g);
- e_button_grab(b->win.main, 0, XEV_BUTTON | XEV_MOUSE_MOVE, EV_KEY_MODIFIER_NONE, 1);
- e_db_close(db);
- }
- }
- b->changed = 1;
- }
+ b->current.selected = 0;
+ /* settings - click to focus would affect grabs */
+ db = e_db_open_read(settings_db);
+ sprintf(buf, "/focus/mode");
+ if ((db) && (e_db_int_get(db, buf, &focus_mode)) && (!b->current.selected))
+ {
+ if (focus_mode == 2) /* click to focus */
+ {
+ E_Grab *g;
+
+ g = NEW(E_Grab, 1);
+ ZERO(g, E_Grab, 1);
+ g->button = 0;
+ g->mods = 0;
+ g->any_mod = 1;
+ g->remove_after = 1;
+ b->grabs = evas_list_append(b->grabs, g);
+ e_button_grab(b->win.main, 0, XEV_BUTTON | XEV_MOUSE_MOVE, EV_KEY_MODIFIER_NONE, 1);
+ e_db_close(db);
+ }
+ }
+ b->changed = 1;
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
+ E_Border *b;
- b = e_border_find_by_window(e->win);
- if (b)
- {
- }
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- mouse_win_x = e->x;
- mouse_win_y = e->y;
- mouse_x = e->rx;
- mouse_y = e->ry;
- mouse_buttons |= (1 << e->button);
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->win == b->win.main) e_cb_border_mouse_down(b, ev);
- else
- {
- Evas evas;
- int x, y;
-
- evas = b->evas.l;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_down(evas, x, y, e->button);
- evas = b->evas.r;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_down(evas, x, y, e->button);
- evas = b->evas.t;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_down(evas, x, y, e->button);
- evas = b->evas.b;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_down(evas, x, y, e->button);
- }
- }
+ E_Border *b;
+
+ mouse_win_x = e->x;
+ mouse_win_y = e->y;
+ mouse_x = e->rx;
+ mouse_y = e->ry;
+ mouse_buttons |= (1 << e->button);
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->win == b->win.main) e_cb_border_mouse_down(b, ev);
+ else
+ {
+ Evas evas;
+ int x, y;
+
+ evas = b->evas.l;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_down(evas, x, y, e->button);
+ evas = b->evas.r;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_down(evas, x, y, e->button);
+ evas = b->evas.t;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_down(evas, x, y, e->button);
+ evas = b->evas.b;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_down(evas, x, y, e->button);
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- mouse_win_x = e->x;
- mouse_win_y = e->y;
- mouse_x = e->rx;
- mouse_y = e->ry;
- mouse_buttons &= ~(1 << e->button);
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->win == b->win.main) e_cb_border_mouse_up(b, ev);
- else
- {
- Evas evas;
- int x, y;
-
- evas = b->evas.l;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_up(evas, x, y, e->button);
- evas = b->evas.r;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_up(evas, x, y, e->button);
- evas = b->evas.t;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_up(evas, x, y, e->button);
- evas = b->evas.b;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_button_up(evas, x, y, e->button);
- }
- }
+ E_Border *b;
+
+ mouse_win_x = e->x;
+ mouse_win_y = e->y;
+ mouse_x = e->rx;
+ mouse_y = e->ry;
+ mouse_buttons &= ~(1 << e->button);
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->win == b->win.main) e_cb_border_mouse_up(b, ev);
+ else
+ {
+ Evas evas;
+ int x, y;
+
+ evas = b->evas.l;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_up(evas, x, y, e->button);
+ evas = b->evas.r;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_up(evas, x, y, e->button);
+ evas = b->evas.t;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_up(evas, x, y, e->button);
+ evas = b->evas.b;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_button_up(evas, x, y, e->button);
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- Evas_List l;
- E_Border *b;
-
- mouse_win_x = e->x;
- mouse_win_y = e->y;
- mouse_x = e->rx;
- mouse_y = e->ry;
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->win == b->win.main) e_cb_border_mouse_move(b, ev);
- else
- {
- Evas evas;
- int x, y;
-
- evas = b->evas.l;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas = b->evas.r;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas = b->evas.t;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas = b->evas.b;
- e_window_get_root_relative_location(evas_get_window(evas),
- &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- }
- }
+ E_Border *b;
+
+ mouse_win_x = e->x;
+ mouse_win_y = e->y;
+ mouse_x = e->rx;
+ mouse_y = e->ry;
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->win == b->win.main) e_cb_border_mouse_move(b, ev);
+ else
+ {
+ Evas evas;
+ int x, y;
+
+ evas = b->evas.l;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas = b->evas.r;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas = b->evas.t;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas = b->evas.b;
+ e_window_get_root_relative_location(evas_get_window(evas),
+ &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->win == b->win.main) e_cb_border_mouse_in(b, ev);
- if (e->win == b->win.input)
- {
- int x, y;
- Evas evas;
-
- evas = b->evas.l;
- e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas_event_enter(evas);
-
- evas = b->evas.r;
- e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas_event_enter(evas);
-
- evas = b->evas.t;
- e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas_event_enter(evas);
-
- evas = b->evas.b;
- e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
- x = e->rx - x;
- y = e->ry - y;
- evas_event_move(evas, x, y);
- evas_event_enter(evas);
- }
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->win == b->win.main) e_cb_border_mouse_in(b, ev);
+ if (e->win == b->win.input)
+ {
+ int x, y;
+ Evas evas;
+
+ evas = b->evas.l;
+ e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas_event_enter(evas);
+
+ evas = b->evas.r;
+ e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas_event_enter(evas);
+
+ evas = b->evas.t;
+ e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas_event_enter(evas);
+
+ evas = b->evas.b;
+ e_window_get_root_relative_location(evas_get_window(evas), &x, &y);
+ x = e->rx - x;
+ y = e->ry - y;
+ evas_event_move(evas, x, y);
+ evas_event_enter(evas);
+ }
+ }
}
current_ev = NULL;
}
current_ev = ev;
e = ev->event;
{
- E_Border *b;
-
- b = e_border_find_by_window(e->win);
- if (b)
- {
- if (e->win == b->win.main) e_cb_border_mouse_out(b, ev);
- if (e->win == b->win.input)
- {
- evas_event_leave(b->evas.l);
- evas_event_leave(b->evas.r);
- evas_event_leave(b->evas.t);
- evas_event_leave(b->evas.b);
- }
- }
+ E_Border *b;
+
+ b = e_border_find_by_window(e->win);
+ if (b)
+ {
+ if (e->win == b->win.main) e_cb_border_mouse_out(b, ev);
+ if (e->win == b->win.input)
+ {
+ evas_event_leave(b->evas.l);
+ evas_event_leave(b->evas.r);
+ evas_event_leave(b->evas.t);
+ evas_event_leave(b->evas.b);
+ }
+ }
}
current_ev = NULL;
current_ev = NULL;
current_ev = ev;
e = ev->event;
{
- Evas_List l;
-
- for (l = evases; l; l = l->next)
- {
- Evas evas;
-
- evas = l->data;
- if (evas_get_window(evas) == e->win)
- evas_update_rect(evas, e->x, e->y, e->w, e->h);
- }
+ Evas_List l;
+
+ for (l = evases; l; l = l->next)
+ {
+ Evas evas;
+
+ evas = l->data;
+ if (evas_get_window(evas) == e->win)
+ evas_update_rect(evas, e->x, e->y, e->w, e->h);
+ }
}
current_ev = NULL;
}
if (!current_ev) return;
e_action_stop(class, ACT_MOUSE_IN, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
e_action_start(class, ACT_MOUSE_IN, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ return;
+ UN(o);
+ UN(bt);
+ UN(ox);
+ UN(oy);
+ UN(ow);
+ UN(oh);
}
static void
if (!current_ev) return;
e_action_stop(class, ACT_MOUSE_OUT, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
e_action_start(class, ACT_MOUSE_OUT, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ return;
+ UN(o);
+ UN(bt);
+ UN(ox);
+ UN(oy);
+ UN(ow);
+ UN(oh);
}
static void
border_mouse_buttons = mouse_buttons;
if (!current_ev) return;
{
- int act;
- Ev_Key_Modifiers mods;
-
- mods = ((Ev_Mouse_Down *)(current_ev->event))->mods;
- act = ACT_MOUSE_CLICK;
- if (((Ev_Mouse_Down *)(current_ev->event))->double_click) act = ACT_MOUSE_DOUBLE;
- else if (((Ev_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE;
- e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
- e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ int act;
+ Ev_Key_Modifiers mods;
+
+ mods = ((Ev_Mouse_Down *)(current_ev->event))->mods;
+ act = ACT_MOUSE_CLICK;
+ if (((Ev_Mouse_Down *)(current_ev->event))->double_click) act = ACT_MOUSE_DOUBLE;
+ else if (((Ev_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE;
+ e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
}
+ return;
+ UN(o);
+ UN(ox);
+ UN(oy);
+ UN(ow);
+ UN(oh);
}
static void
border_mouse_buttons = mouse_buttons;
if (!current_ev) return;
{
- int act;
- Ev_Key_Modifiers mods;
-
- mods = ((Ev_Mouse_Up *)(current_ev->event))->mods;
- act = ACT_MOUSE_UP;
- if ((x >= ox) && (x < (ox + ow)) && (y >= oy) && (y < (oy + oh)))
- act = ACT_MOUSE_CLICKED;
- e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
- e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ int act;
+ Ev_Key_Modifiers mods;
+
+ mods = ((Ev_Mouse_Up *)(current_ev->event))->mods;
+ act = ACT_MOUSE_UP;
+ if ((x >= ox) && (x < (ox + ow)) && (y >= oy) && (y < (oy + oh)))
+ act = ACT_MOUSE_CLICKED;
+ e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
}
+ return;
+ UN(o);
}
static void
border_mouse_y = mouse_y;
if (!current_ev) return;
e_action_go(class, ACT_MOUSE_MOVE, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y, dx, dy);
+ return;
+ UN(o);
+ UN(bt);
+ UN(ox);
+ UN(oy);
+ UN(ow);
+ UN(oh);
}
/* callbacks for certain things */
static void
e_cb_border_mouse_in(E_Border *b, Eevent *e)
{
- E_Action *a;
int x, y;
char *class = "Window_Grab";
if (border_mouse_buttons) return;
/* pointer focus stuff */
- e_focus_to_window(b->win.client);
+ if (b->client.takes_focus) e_focus_to_window(b->win.client);
border_mouse_x = mouse_x;
border_mouse_y = mouse_y;
static void
e_cb_border_mouse_out(E_Border *b, Eevent *e)
{
- E_Action *a;
int x, y;
char *class = "Window_Grab";
/* pointer focus stuff */
e_focus_to_window(0);
+ x = mouse_x;
+ y = mouse_y;
border_mouse_x = mouse_x;
border_mouse_y = mouse_y;
border_mouse_buttons = mouse_buttons;
if (!current_ev) return;
e_action_stop(class, ACT_MOUSE_OUT, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
e_action_start(class, ACT_MOUSE_OUT, 0, NULL, EV_KEY_MODIFIER_NONE, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ return;
+ UN(e);
}
static void
e_cb_border_mouse_down(E_Border *b, Eevent *e)
{
- E_Action *a;
int x, y, bt;
char *class = "Window_Grab";
y = ((Ev_Mouse_Down *)(e->event))->y;
bt = ((Ev_Mouse_Down *)(e->event))->button;
{
- Evas_List l;
-
- again:
- for (l = b->grabs; l; l = l->next)
- {
- E_Grab *g;
-
- g = l->data;
- /* find a grab that triggered this */
- if ((((Ev_Mouse_Down *)(e->event))->button == g->button) &&
- ((g->any_mod) ||
- (((Ev_Mouse_Down *)(e->event))->mods == g->mods)))
- {
- if (g->allow)
- e_pointer_replay(((Ev_Mouse_Down *)(e->event))->time);
- if (g->remove_after)
- {
- e_button_ungrab(b->win.main, g->button, g->mods, g->any_mod);
- free(g);
- b->grabs = evas_list_remove(b->grabs, g);
- goto again;
- }
- }
- }
+ Evas_List l;
+
+ again:
+ for (l = b->grabs; l; l = l->next)
+ {
+ E_Grab *g;
+
+ g = l->data;
+ /* find a grab that triggered this */
+ if ((((Ev_Mouse_Down *)(e->event))->button == g->button) &&
+ ((g->any_mod) ||
+ (((Ev_Mouse_Down *)(e->event))->mods == g->mods)))
+ {
+ if (g->allow)
+ e_pointer_replay(((Ev_Mouse_Down *)(e->event))->time);
+ if (g->remove_after)
+ {
+ e_button_ungrab(b->win.main, g->button, g->mods, g->any_mod);
+ free(g);
+ b->grabs = evas_list_remove(b->grabs, g);
+ goto again;
+ }
+ }
+ }
}
{
- int act;
- Ev_Key_Modifiers mods;
-
- mods = ((Ev_Mouse_Down *)(current_ev->event))->mods;
- act = ACT_MOUSE_CLICK;
- if (((Ev_Mouse_Down *)(current_ev->event))->double_click) act = ACT_MOUSE_DOUBLE;
- else if (((Ev_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE;
- e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
- e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ int act;
+ Ev_Key_Modifiers mods;
+
+ mods = ((Ev_Mouse_Down *)(current_ev->event))->mods;
+ act = ACT_MOUSE_CLICK;
+ if (((Ev_Mouse_Down *)(current_ev->event))->double_click) act = ACT_MOUSE_DOUBLE;
+ else if (((Ev_Mouse_Down *)(current_ev->event))->triple_click) act = ACT_MOUSE_TRIPLE;
+ e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
}
/*
* e_pointer_ungrab(((Ev_Mouse_Up *)(e->event))->time);
static void
e_cb_border_mouse_up(E_Border *b, Eevent *e)
{
- E_Action *a;
int x, y, bt;
char *class = "Window_Grab";
y = ((Ev_Mouse_Up *)(e->event))->y;
bt = ((Ev_Mouse_Up *)(e->event))->button;
{
- int act;
- Ev_Key_Modifiers mods;
-
- mods = ((Ev_Mouse_Up *)(current_ev->event))->mods;
- act = ACT_MOUSE_UP;
- e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
- e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ int act;
+ Ev_Key_Modifiers mods;
+
+ mods = ((Ev_Mouse_Up *)(current_ev->event))->mods;
+ act = ACT_MOUSE_UP;
+ e_action_stop(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
+ e_action_start(class, act, bt, NULL, mods, b, NULL, x, y, border_mouse_x, border_mouse_y);
}
}
static void
e_cb_border_move_resize(E_Border *b)
{
+ return;
+ UN(b);
}
static void
e_cb_border_visibility(E_Border *b)
{
+ return;
+ UN(b);
}
static void e_border_poll(int val, void *data)
{
e_add_event_timer("e_border_poll()", 1.00, e_border_poll, val + 1, NULL);
+ return;
+ UN(data);
}
/* border creation, deletion, modification and general queries */
{
E_Border *b;
- printf("adopt %x\n", (int) win);
/* create the struct */
b = e_border_new();
/* set the right event on the client */
e_window_set_events(win,
- XEV_VISIBILITY |
- ResizeRedirectMask |
- XEV_CONFIGURE |
- XEV_FOCUS |
- XEV_PROPERTY |
- XEV_COLORMAP);
+ XEV_VISIBILITY |
+ ResizeRedirectMask |
+ XEV_CONFIGURE |
+ XEV_FOCUS |
+ XEV_PROPERTY |
+ XEV_COLORMAP);
/* parent of the client window listens for these */
e_window_set_events(b->win.container, XEV_CHILD_CHANGE | XEV_CHILD_REDIRECT);
/* add to save set & border of 0 */
e_icccm_get_size_info(win, b);
e_icccm_get_mwm_hints(win, b);
e_icccm_get_layer(win, b);
- printf("%i\n", b->client.layer);
+ /* we have now placed the bugger */
+ b->placed = 1;
/* desk area */
e_icccm_set_desk_area(win, 0, 0);
e_icccm_set_desk(win, e_desktops_get_current());
if (use_client_pos)
{
- int x, y;
-
- e_window_get_geometry(win, &x, &y, NULL, NULL);
- b->current.requested.x = x;
- b->current.requested.y = y;
+ int x, y;
+
+ e_window_get_geometry(win, &x, &y, NULL, NULL);
+ b->current.requested.x = x;
+ b->current.requested.y = y;
}
/* reparent the window finally */
e_window_reparent(win, b->win.container, 0, 0);
/* figure what border to use */
e_border_apply_border(b);
{
- int pl, pr, pt, pb;
+ int pl, pr, pt, pb;
- pl = pr = pt = pb = 0;
- if (b->bits.l) ebits_get_insets(b->bits.l, &pl, &pr, &pt, &pb);
- b->current.requested.x += pl;
- b->current.requested.y += pt;
- b->changed = 1;
+ pl = pr = pt = pb = 0;
+ if (b->bits.l) ebits_get_insets(b->bits.l, &pl, &pr, &pt, &pb);
+ b->current.requested.x += pl;
+ b->current.requested.y += pt;
+ b->changed = 1;
}
/* show the client */
e_icccm_state_mapped(win);
b->client.border = 1;
b->client.handles = 1;
b->client.titlebar = 1;
+ b->client.takes_focus = 1;
desk = e_desktops_get(e_desktops_get_current());
e_desktops_add_border(desk, b);
e_window_show(b->win.container);
b->evas.l = evas_new_all(e_display_get(),
- b->win.main,
- 0, 0, 1, 1,
- RENDER_METHOD_ALPHA_SOFTWARE,
- max_colors,
- font_cache,
- image_cache,
- font_dir);
+ b->win.main,
+ 0, 0, 1, 1,
+ RENDER_METHOD_ALPHA_SOFTWARE,
+ max_colors,
+ font_cache,
+ image_cache,
+ font_dir);
b->win.l = evas_get_window(b->evas.l);
e_add_child(b->win.main, b->win.l);
b->evas.r = evas_new_all(e_display_get(),
- b->win.main,
- 0, 0, 1, 1,
- RENDER_METHOD_ALPHA_SOFTWARE,
- max_colors,
- font_cache,
- image_cache,
- font_dir);
+ b->win.main,
+ 0, 0, 1, 1,
+ RENDER_METHOD_ALPHA_SOFTWARE,
+ max_colors,
+ font_cache,
+ image_cache,
+ font_dir);
b->win.r = evas_get_window(b->evas.r);
e_add_child(b->win.main, b->win.r);
b->evas.t = evas_new_all(e_display_get(),
- b->win.main,
- 0, 0, 1, 1,
- RENDER_METHOD_ALPHA_SOFTWARE,
- max_colors,
- font_cache,
- image_cache,
- font_dir);
+ b->win.main,
+ 0, 0, 1, 1,
+ RENDER_METHOD_ALPHA_SOFTWARE,
+ max_colors,
+ font_cache,
+ image_cache,
+ font_dir);
b->win.t = evas_get_window(b->evas.t);
e_add_child(b->win.main, b->win.t);
b->evas.b = evas_new_all(e_display_get(),
- b->win.main,
- 0, 0, 1, 1,
- RENDER_METHOD_ALPHA_SOFTWARE,
- max_colors,
- font_cache,
- image_cache,
- font_dir);
+ b->win.main,
+ 0, 0, 1, 1,
+ RENDER_METHOD_ALPHA_SOFTWARE,
+ max_colors,
+ font_cache,
+ image_cache,
+ font_dir);
b->win.b = evas_get_window(b->evas.b);
e_add_child(b->win.main, b->win.b);
if (b->grabs)
{
- for (l = b->grabs; l; l = l->next)
- {
- FREE(l->data);
- }
- evas_list_free(b->grabs);
+ for (l = b->grabs; l; l = l->next)
+ {
+ FREE(l->data);
+ }
+ evas_list_free(b->grabs);
}
free(b);
if (b->grabs)
{
- for (l = b->grabs; l; l = l->next)
- {
- E_Grab *g;
-
- g = l->data;
- e_button_ungrab(b->win.main, g->button, g->mods, g->any_mod);
- FREE(g);
- }
- evas_list_free(b->grabs);
- b->grabs = NULL;
+ for (l = b->grabs; l; l = l->next)
+ {
+ E_Grab *g;
+
+ g = l->data;
+ e_button_ungrab(b->win.main, g->button, g->mods, g->any_mod);
+ FREE(g);
+ }
+ evas_list_free(b->grabs);
+ b->grabs = NULL;
}
}
sprintf(buf, "/focus/mode");
if ((db) && (e_db_int_get(db, buf, &focus_mode)) && (!b->current.selected))
{
- if (focus_mode == 2) /* click to focus */
- {
- E_Grab *g;
-
- g = NEW(E_Grab, 1);
- ZERO(g, E_Grab, 1);
- g->button = 0;
- g->mods = 0;
- g->any_mod = 1;
- g->remove_after = 1;
- b->grabs = evas_list_append(b->grabs, g);
- e_button_grab(b->win.main, 0, XEV_BUTTON | XEV_MOUSE_MOVE, EV_KEY_MODIFIER_NONE, 1);
- e_db_close(db);
- }
+ if (focus_mode == 2) /* click to focus */
+ {
+ E_Grab *g;
+
+ g = NEW(E_Grab, 1);
+ ZERO(g, E_Grab, 1);
+ g->button = 0;
+ g->mods = 0;
+ g->any_mod = 1;
+ g->remove_after = 1;
+ b->grabs = evas_list_append(b->grabs, g);
+ e_button_grab(b->win.main, 0, XEV_BUTTON | XEV_MOUSE_MOVE, EV_KEY_MODIFIER_NONE, 1);
+ e_db_close(db);
+ }
}
/* other grabs - liek alt+left to move */
db = e_db_open_read(grabs_db);
if (db)
{
- int i, num;
-
- sprintf(buf, "/grabs/count");
- if (!e_db_int_get(db, buf, &num))
- {
- e_db_close(db);
- return;
- }
- for (i = 0; i < num; i++)
- {
- int button, any_mod, mod;
- Ev_Key_Modifiers mods;
-
- button = -1;
- mods = EV_KEY_MODIFIER_NONE;
- any_mod = 0;
- sprintf(buf, "/grabs/%i/button", i);
- if (!e_db_int_get(db, buf, &button)) continue;
- sprintf(buf, "/grabs/%i/modifiers", i);
- if (!e_db_int_get(db, buf, &mod)) continue;
- if (mod == -1) any_mod = 1;
- mods = (Ev_Key_Modifiers)mod;
-
- if (button >= 0)
- {
- E_Grab *g;
-
- g = NEW(E_Grab, 1);
- ZERO(g, E_Grab, 1);
- g->button = button;
- g->mods = mods;
- g->any_mod = any_mod;
- g->remove_after = 0;
- b->grabs = evas_list_append(b->grabs, g);
- e_button_grab(b->win.main, button, XEV_BUTTON | XEV_MOUSE_MOVE, mods, 0);
- }
- }
- e_db_close(db);
+ int i, num;
+
+ sprintf(buf, "/grabs/count");
+ if (!e_db_int_get(db, buf, &num))
+ {
+ e_db_close(db);
+ return;
+ }
+ for (i = 0; i < num; i++)
+ {
+ int button, any_mod, mod;
+ Ev_Key_Modifiers mods;
+
+ button = -1;
+ mods = EV_KEY_MODIFIER_NONE;
+ any_mod = 0;
+ sprintf(buf, "/grabs/%i/button", i);
+ if (!e_db_int_get(db, buf, &button)) continue;
+ sprintf(buf, "/grabs/%i/modifiers", i);
+ if (!e_db_int_get(db, buf, &mod)) continue;
+ if (mod == -1) any_mod = 1;
+ mods = (Ev_Key_Modifiers)mod;
+
+ if (button >= 0)
+ {
+ E_Grab *g;
+
+ g = NEW(E_Grab, 1);
+ ZERO(g, E_Grab, 1);
+ g->button = button;
+ g->mods = mods;
+ g->any_mod = any_mod;
+ g->remove_after = 0;
+ b->grabs = evas_list_append(b->grabs, g);
+ e_button_grab(b->win.main, button, XEV_BUTTON | XEV_MOUSE_MOVE, mods, 0);
+ }
+ }
+ e_db_close(db);
}
}
mod_date_grabs = mod;
if (!changed)
{
- mod = e_file_modified_time(settings_db);
- if (mod != mod_date_settings) changed = 1;
- mod_date_settings = mod;
+ mod = e_file_modified_time(settings_db);
+ if (mod != mod_date_settings) changed = 1;
+ mod_date_settings = mod;
}
if (!changed) return;
for (l = borders; l; l = l->next)
{
- E_Border *b;
-
- b = l->data;
- e_border_remove_mouse_grabs(b);
- e_border_attach_mouse_grabs(b);
+ E_Border *b;
+
+ b = l->data;
+ e_border_remove_mouse_grabs(b);
+ e_border_attach_mouse_grabs(b);
}
}
for (l = borders; l; l = l->next)
{
- E_Border *b;
-
- b = l->data;
-
- if ((win == b->win.main) ||
- (win == b->win.client) ||
- (win == b->win.container) ||
- (win == b->win.input) ||
- (win == b->win.l) ||
- (win == b->win.r) ||
- (win == b->win.t) ||
- (win == b->win.b))
- return b;
+ E_Border *b;
+
+ b = l->data;
+
+ if ((win == b->win.main) ||
+ (win == b->win.client) ||
+ (win == b->win.container) ||
+ (win == b->win.input) ||
+ (win == b->win.l) ||
+ (win == b->win.r) ||
+ (win == b->win.t) ||
+ (win == b->win.b))
+ return b;
}
return NULL;
}
if (b->bits.t)
{
- ebits_add_to_evas(b->bits.l, b->evas.l);
- ebits_move(b->bits.l, 0, 0);
- ebits_show(b->bits.l);
+ ebits_add_to_evas(b->bits.l, b->evas.l);
+ ebits_move(b->bits.l, 0, 0);
+ ebits_show(b->bits.l);
- ebits_add_to_evas(b->bits.r, b->evas.r);
- ebits_move(b->bits.r, 0, 0);
- ebits_show(b->bits.r);
+ ebits_add_to_evas(b->bits.r, b->evas.r);
+ ebits_move(b->bits.r, 0, 0);
+ ebits_show(b->bits.r);
- ebits_add_to_evas(b->bits.t, b->evas.t);
- ebits_move(b->bits.t, 0, 0);
- ebits_show(b->bits.t);
+ ebits_add_to_evas(b->bits.t, b->evas.t);
+ ebits_move(b->bits.t, 0, 0);
+ ebits_show(b->bits.t);
- ebits_add_to_evas(b->bits.b, b->evas.b);
- ebits_move(b->bits.b, 0, 0);
- ebits_show(b->bits.b);
-
- e_border_set_color_class(b, "Title BG", 100, 200, 255, 255);
+ ebits_add_to_evas(b->bits.b, b->evas.b);
+ ebits_move(b->bits.b, 0, 0);
+ ebits_show(b->bits.b);
+
+ e_border_set_color_class(b, "Title BG", 100, 200, 255, 255);
-#define HOOK_CB(_class) \
+#define HOOK_CB(_class) \
ebits_set_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_IN, e_cb_mouse_in, b); \
ebits_set_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_OUT, e_cb_mouse_out, b); \
ebits_set_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_DOWN, e_cb_mouse_down, b); \
ebits_set_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_UP, e_cb_mouse_up, b); \
ebits_set_bit_callback(b->bits.t, _class, CALLBACK_MOUSE_MOVE, e_cb_mouse_move, b);
- HOOK_CB("Title_Bar");
- HOOK_CB("Resize");
- HOOK_CB("Resize_Horizontal");
- HOOK_CB("Resize_Vertical");
- HOOK_CB("Close");
- HOOK_CB("Iconify");
- HOOK_CB("Max_Size");
- HOOK_CB("Menu");
-
- e_border_adjust_limits(b);
+ HOOK_CB("Title_Bar");
+ HOOK_CB("Resize");
+ HOOK_CB("Resize_Horizontal");
+ HOOK_CB("Resize_Vertical");
+ HOOK_CB("Close");
+ HOOK_CB("Iconify");
+ HOOK_CB("Max_Size");
+ HOOK_CB("Menu");
+
+ e_border_adjust_limits(b);
}
}
else
{
b->current.x = b->current.requested.x;
- b->current.y = b->current.requested.y;
+ b->current.y = b->current.requested.y;
}
b->current.w = b->current.requested.w;
pl = pr = pt = pb = 0;
if (b->current.w < 1) b->current.w = 1;
if (b->current.h < 1) b->current.h = 1;
-
+
if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
if (b->current.w < (pl + pr + 1)) b->current.w = pl + pr + 1;
h = b->current.h - pt - pb;
mx = my = 1;
- if (b->bits.t) ebits_get_min_size(b->bits.t, &mx, &my);
+ if (b->bits.t) ebits_get_min_size(b->bits.t, &mx, &my);
if (b->current.w < mx) b->current.w = mx;
if (b->current.h < my) b->current.h = my;
mx = my = 999999;
- if (b->bits.t) ebits_get_max_size(b->bits.t, &mx, &my);
+ if (b->bits.t) ebits_get_max_size(b->bits.t, &mx, &my);
if (b->current.w > mx) b->current.w = mx;
if (b->current.h > my) b->current.h = my;
if (h > b->client.max.h) h = b->client.max.h;
if ((w > 0) && (h > 0))
{
- w -= b->client.base.w;
- h -= b->client.base.h;
- if ((w > 0) && (h > 0))
- {
- int i, j;
- double aspect;
-
- aspect = ((double)w) / ((double)h);
- if ((b->mode.resize == 4) || (b->mode.resize == 5))
- {
- if (aspect < b->client.min.aspect)
- h = (int)((double)w / b->client.min.aspect);
- if (aspect > b->client.max.aspect)
- h = (int)((double)w / b->client.max.aspect);
- }
- else if ((b->mode.resize == 6) || (b->mode.resize == 7))
- {
- if (aspect < b->client.min.aspect)
- w = (int)((double)h * b->client.min.aspect);
- if (aspect > b->client.max.aspect)
- w = (int)((double)h * b->client.max.aspect);
- }
- else
- {
- if (aspect < b->client.min.aspect)
- w = (int)((double)h * b->client.min.aspect);
- if (aspect > b->client.max.aspect)
- h = (int)((double)w / b->client.max.aspect);
- }
- i = w / b->client.step.w;
- j = h / b->client.step.h;
- w = i * b->client.step.w;
- h = j * b->client.step.h;
- }
- w += b->client.base.w;
- h += b->client.base.h;
+ w -= b->client.base.w;
+ h -= b->client.base.h;
+ if ((w > 0) && (h > 0))
+ {
+ int i, j;
+ double aspect;
+
+ aspect = ((double)w) / ((double)h);
+ if ((b->mode.resize == 4) || (b->mode.resize == 5))
+ {
+ if (aspect < b->client.min.aspect)
+ h = (int)((double)w / b->client.min.aspect);
+ if (aspect > b->client.max.aspect)
+ h = (int)((double)w / b->client.max.aspect);
+ }
+ else if ((b->mode.resize == 6) || (b->mode.resize == 7))
+ {
+ if (aspect < b->client.min.aspect)
+ w = (int)((double)h * b->client.min.aspect);
+ if (aspect > b->client.max.aspect)
+ w = (int)((double)h * b->client.max.aspect);
+ }
+ else
+ {
+ if (aspect < b->client.min.aspect)
+ w = (int)((double)h * b->client.min.aspect);
+ if (aspect > b->client.max.aspect)
+ h = (int)((double)w / b->client.max.aspect);
+ }
+ i = w / b->client.step.w;
+ j = h / b->client.step.h;
+ w = i * b->client.step.w;
+ h = j * b->client.step.h;
+ }
+ w += b->client.base.w;
+ h += b->client.base.h;
}
b->current.w = w + pl + pr;
b->current.h = h + pt + pb;
}
else if ((b->mode.resize == 0) || (b->mode.resize == 4))
{
- b->current.x += (b->current.requested.w - b->current.w);
- b->current.y += (b->current.requested.h - b->current.h);
+ b->current.x += (b->current.requested.w - b->current.w);
+ b->current.y += (b->current.requested.h - b->current.h);
}
else if ((b->mode.resize == 1) || (b->mode.resize == 6))
{
- b->current.y += (b->current.requested.h - b->current.h);
+ b->current.y += (b->current.requested.h - b->current.h);
}
else if ((b->mode.resize == 2))
{
- b->current.x += (b->current.requested.w - b->current.w);
+ b->current.x += (b->current.requested.w - b->current.w);
}
}
shape_changed = 1;
if (b->bits.new)
{
- e_window_gravity_set(b->win.container, StaticGravity);
- border_changed = 1;
+ e_window_gravity_set(b->win.container, StaticGravity);
+ border_changed = 1;
}
if ((border_changed) && (b->has_shape))
shape_changed = 1;
if (state_changed)
{
- e_border_apply_border(b);
- if (!border_changed)
- {
- e_window_gravity_set(b->win.container, StaticGravity);
- border_changed = 1;
- size_changed = 1;
- }
+ e_border_apply_border(b);
+ if (!border_changed)
+ {
+ e_window_gravity_set(b->win.container, StaticGravity);
+ border_changed = 1;
+ size_changed = 1;
+ }
}
if ((location_changed) && (!size_changed))
{
- int pl, pr, pt, pb;
-
- e_window_move(b->win.main, b->current.x, b->current.y);
- pl = pr = pt = pb = 0;
- if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
- e_icccm_move_resize(b->win.client,
- b->current.x + pl, b->current.y + pt,
- b->current.w - pl - pr, b->current.h - pt - pb);
- e_cb_border_move_resize(b);
+ int pl, pr, pt, pb;
+
+ e_window_move(b->win.main, b->current.x, b->current.y);
+ pl = pr = pt = pb = 0;
+ if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
+ e_icccm_move_resize(b->win.client,
+ b->current.x + pl, b->current.y + pt,
+ b->current.w - pl - pr, b->current.h - pt - pb);
+ e_cb_border_move_resize(b);
}
else if (size_changed)
{
- int pl, pr, pt, pb, x, y, w, h;
- int smaller;
-
- smaller = 0;
- if ((b->current.w < b->previous.w) || (b->current.h < b->previous.h))
- smaller = 1;
- pl = pr = pt = pb = 0;
- if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
- e_window_resize(b->win.client, b->current.w - pl - pr, b->current.h - pt - pb);
- e_window_move_resize(b->win.input,
- 0, 0, b->current.w, b->current.h);
- e_window_move_resize(b->win.main,
- b->current.x, b->current.y,
- b->current.w, b->current.h);
- e_window_move_resize(b->win.container, pl, pt,
- b->current.w - pl - pr, b->current.h - pt -pb);
- x = 0, y = pt, w = pl, h = (b->current.h - pt - pb);
- e_window_move_resize(b->win.l, x, y, w, h);
- evas_set_output_size(b->evas.l, w, h);
- evas_set_output_viewport(b->evas.l, x, y, w, h);
-
- x = 0, y = 0, w = b->current.w, h = pt;
- e_window_move_resize(b->win.t, x, y, w, h);
- evas_set_output_size(b->evas.t, w, h);
- evas_set_output_viewport(b->evas.t, x, y, w, h);
-
- x = b->current.w - pr, y = pt, w = pr, h = (b->current.h - pt - pb);
- e_window_move_resize(b->win.r, x, y, w, h);
- evas_set_output_size(b->evas.r, w, h);
- evas_set_output_viewport(b->evas.r, x, y, w, h);
-
- x = 0, y = b->current.h - pb, w = b->current.w, h = pb;
- e_window_move_resize(b->win.b, x, y, w, h);
- evas_set_output_size(b->evas.b, w, h);
- evas_set_output_viewport(b->evas.b, x, y, w, h);
-
- if (b->bits.l) ebits_resize(b->bits.l, b->current.w, b->current.h);
- if (b->bits.r) ebits_resize(b->bits.r, b->current.w, b->current.h);
- if (b->bits.t) ebits_resize(b->bits.t, b->current.w, b->current.h);
- if (b->bits.b) ebits_resize(b->bits.b, b->current.w, b->current.h);
-
- e_icccm_move_resize(b->win.client,
- b->current.x + pl, b->current.y + pt,
- b->current.w - pl - pr, b->current.h - pt - pb);
- e_cb_border_move_resize(b);
+ int pl, pr, pt, pb, x, y, w, h;
+ int smaller;
+
+ smaller = 0;
+ if ((b->current.w < b->previous.w) || (b->current.h < b->previous.h))
+ smaller = 1;
+ pl = pr = pt = pb = 0;
+ if (b->bits.t) ebits_get_insets(b->bits.t, &pl, &pr, &pt, &pb);
+ e_window_resize(b->win.client, b->current.w - pl - pr, b->current.h - pt - pb);
+ e_window_move_resize(b->win.input,
+ 0, 0, b->current.w, b->current.h);
+ e_window_move_resize(b->win.main,
+ b->current.x, b->current.y,
+ b->current.w, b->current.h);
+ e_window_move_resize(b->win.container, pl, pt,
+ b->current.w - pl - pr, b->current.h - pt -pb);
+ x = 0, y = pt, w = pl, h = (b->current.h - pt - pb);
+ if ((w <1) && (h < 1)) e_window_hide(b->win.l);
+ else
+ {
+ e_window_show(b->win.l);
+ e_window_move_resize(b->win.l, x, y, w, h);
+ evas_set_output_size(b->evas.l, w, h);
+ evas_set_output_viewport(b->evas.l, x, y, w, h);
+ }
+
+ x = 0, y = 0, w = b->current.w, h = pt;
+ if ((w <1) && (h < 1)) e_window_hide(b->win.t);
+ else
+ {
+ e_window_show(b->win.t);
+ e_window_move_resize(b->win.t, x, y, w, h);
+ evas_set_output_size(b->evas.t, w, h);
+ evas_set_output_viewport(b->evas.t, x, y, w, h);
+ }
+
+ x = b->current.w - pr, y = pt, w = pr, h = (b->current.h - pt - pb);
+ if ((w <1) && (h < 1)) e_window_hide(b->win.r);
+ else
+ {
+ e_window_show(b->win.r);
+ e_window_move_resize(b->win.r, x, y, w, h);
+ evas_set_output_size(b->evas.r, w, h);
+ evas_set_output_viewport(b->evas.r, x, y, w, h);
+ }
+
+ x = 0, y = b->current.h - pb, w = b->current.w, h = pb;
+ if ((w <1) && (h < 1)) e_window_hide(b->win.b);
+ else
+ {
+ e_window_show(b->win.b);
+ e_window_move_resize(b->win.b, x, y, w, h);
+ evas_set_output_size(b->evas.b, w, h);
+ evas_set_output_viewport(b->evas.b, x, y, w, h);
+ }
+
+ if (b->bits.l) ebits_resize(b->bits.l, b->current.w, b->current.h);
+ if (b->bits.r) ebits_resize(b->bits.r, b->current.w, b->current.h);
+ if (b->bits.t) ebits_resize(b->bits.t, b->current.w, b->current.h);
+ if (b->bits.b) ebits_resize(b->bits.b, b->current.w, b->current.h);
+
+ e_icccm_move_resize(b->win.client,
+ b->current.x + pl, b->current.y + pt,
+ b->current.w - pl - pr, b->current.h - pt - pb);
+ e_cb_border_move_resize(b);
}
if (visibility_changed)
{
- if (b->current.visible)
- e_window_show(b->win.main);
- else
- e_window_hide(b->win.main);
- e_cb_border_visibility(b);
+ if (b->current.visible)
+ e_window_show(b->win.main);
+ else
+ e_window_hide(b->win.main);
+ e_cb_border_visibility(b);
}
if (border_changed)
void
e_border_set_layer(E_Border *b, int layer)
{
- Evas_List l;
- E_Border *rel = NULL;
int dl;
if (b->client.layer == layer) return;
if (!b->desk->windows)
{
- b->desk->windows = evas_list_append(b->desk->windows, b);
- b->desk->changed = 1;
- e_window_raise(b->win.main);
- return;
+ b->desk->windows = evas_list_append(b->desk->windows, b);
+ b->desk->changed = 1;
+ e_window_raise(b->win.main);
+ return;
}
for (l = b->desk->windows; l; l = l->next)
{
- rel = l->data;
- if (rel->client.layer > b->client.layer)
- {
- b->desk->windows = evas_list_remove(b->desk->windows, b);
- b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel);
- b->desk->changed = 1;
- e_window_stack_below(b->win.main, rel->win.main);
- return;
- }
- if ((!l->next) && (l->data != b))
- {
- b->desk->windows = evas_list_remove(b->desk->windows, b);
- b->desk->windows = evas_list_append(b->desk->windows, b);
- b->desk->changed = 1;
- e_window_raise(b->win.main);
- return;
- }
+ rel = l->data;
+ if (rel->client.layer > b->client.layer)
+ {
+ b->desk->windows = evas_list_remove(b->desk->windows, b);
+ b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel);
+ b->desk->changed = 1;
+ e_window_stack_below(b->win.main, rel->win.main);
+ return;
+ }
+ if ((!l->next) && (l->data != b))
+ {
+ b->desk->windows = evas_list_remove(b->desk->windows, b);
+ b->desk->windows = evas_list_append(b->desk->windows, b);
+ b->desk->changed = 1;
+ e_window_raise(b->win.main);
+ return;
+ }
}
}
if (!b->desk->windows)
{
- b->desk->windows = evas_list_append(b->desk->windows, b);
- b->desk->changed = 1;
- e_window_raise(b->win.main);
- return;
+ b->desk->windows = evas_list_append(b->desk->windows, b);
+ b->desk->changed = 1;
+ e_window_raise(b->win.main);
+ return;
}
for (l = b->desk->windows; l; l = l->next)
{
- rel = l->data;
- if (rel->client.layer == b->client.layer)
- {
- if (b == rel) return;
- b->desk->windows = evas_list_remove(b->desk->windows, b);
- b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel);
- b->desk->changed = 1;
- e_window_stack_below(b->win.main, rel->win.main);
- return;
- }
+ rel = l->data;
+ if (rel->client.layer == b->client.layer)
+ {
+ if (b == rel) return;
+ b->desk->windows = evas_list_remove(b->desk->windows, b);
+ b->desk->windows = evas_list_prepend_relative(b->desk->windows, b, rel);
+ b->desk->changed = 1;
+ e_window_stack_below(b->win.main, rel->win.main);
+ return;
+ }
}
}
{
if (!b->desk->windows)
{
- b->desk->windows = evas_list_append(b->desk->windows, b);
- b->desk->changed = 1;
- e_window_raise(b->win.main);
- return;
+ b->desk->windows = evas_list_append(b->desk->windows, b);
+ b->desk->changed = 1;
+ e_window_raise(b->win.main);
+ return;
}
if (!evas_list_find(b->desk->windows, above)) return;
if (b->client.layer < above->client.layer) b->client.layer = above->client.layer;
{
if (!b->desk->windows)
{
- b->desk->windows = evas_list_append(b->desk->windows, b);
- b->desk->changed = 1;
- return;
+ b->desk->windows = evas_list_append(b->desk->windows, b);
+ b->desk->changed = 1;
+ return;
}
if (!evas_list_find(b->desk->windows, below)) return;
if (b->client.layer > below->client.layer) b->client.layer = below->client.layer;
wins = e_window_get_children(win, &num);
if (wins)
{
- for (i = 0; i < num; i++)
- {
- if (e_window_is_manageable(wins[i]))
- {
- E_Border *b;
-
- printf("manage %x\n", (int) wins[i]);
- b = e_border_adopt(wins[i], 1);
- {
- int pl, pr, pt, pb;
-
- pl = pr = pt = pb = 0;
- if (b->bits.l) ebits_get_insets(b->bits.l, &pl, &pr, &pt, &pb);
- b->current.requested.x -= pl;
- b->current.requested.y -= pt;
- printf("back %i %i\n", pl, pt);
- b->changed = 1;
- e_border_adjust_limits(b);
- }
- b->ignore_unmap = 2;
- }
- }
- free(wins);
+ for (i = 0; i < num; i++)
+ {
+ if (e_window_is_manageable(wins[i]))
+ {
+ E_Border *b;
+
+ b = e_border_adopt(wins[i], 1);
+ {
+ int pl, pr, pt, pb;
+
+ pl = pr = pt = pb = 0;
+ if (b->bits.l) ebits_get_insets(b->bits.l, &pl, &pr, &pt, &pb);
+ b->current.requested.x -= pl;
+ b->current.requested.y -= pt;
+ b->changed = 1;
+ e_border_adjust_limits(b);
+ }
+ b->ignore_unmap = 2;
+ }
+ }
+ free(wins);
}
}