Enlightenment CVS committal
Author : raster
Project : e17
Module : apps/e
Dir : e17/apps/e/src/bin
Modified Files:
e_hints.c e_manager.c
Log Message:
fix battery module sizing and handle netwm activate messages.
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_hints.c,v
retrieving revision 1.97
retrieving revision 1.98
diff -u -3 -r1.97 -r1.98
--- e_hints.c 13 Mar 2008 19:09:15 -0000 1.97
+++ e_hints.c 30 Jun 2008 08:48:29 -0000 1.98
@@ -259,6 +259,7 @@
E_Border_List *bl;
E_Border *b;
Ecore_X_Window *clients = NULL;
+ Ecore_X_Window *clients_focus = NULL;
/* Get client count by adding client lists on all containers */
for (ml = e_manager_list(); ml; ml = ml->next)
@@ -281,6 +282,7 @@
for (ml = e_manager_list(); ml; ml = ml->next)
{
m = ml->data;
+ i = 0;
for (cl = m->containers; cl; cl = cl->next)
{
c = cl->data;
@@ -289,12 +291,16 @@
clients[i++] = b->client.win;
e_container_border_list_free(bl);
}
- }
- for (ml = e_manager_list(); ml; ml = ml->next)
- {
- m = ml->data;
- ecore_x_netwm_client_list_set(m->root, clients, num);
- ecore_x_netwm_client_list_stacking_set(m->root, clients, num);
+ if (i > 0)
+ {
+ ecore_x_netwm_client_list_stacking_set(m->root, clients, i);
+ ecore_x_netwm_client_list_set(m->root, clients, i);
+ }
+ else
+ {
+ ecore_x_netwm_client_list_set(m->root, NULL, 0);
+ ecore_x_netwm_client_list_stacking_set(m->root, NULL, 0);
+ }
}
}
else
===================================================================
RCS file: /cvs/e/e17/apps/e/src/bin/e_manager.c,v
retrieving revision 1.70
retrieving revision 1.71
diff -u -3 -r1.70 -r1.71
--- e_manager.c 19 Jun 2008 11:56:09 -0000 1.70
+++ e_manager.c 30 Jun 2008 08:48:29 -0000 1.71
@@ -13,6 +13,7 @@
static int _e_manager_cb_frame_extents_request(void *data, int ev_type, void
*ev);
static int _e_manager_cb_ping(void *data, int ev_type, void *ev);
static int _e_manager_cb_screensaver_notify(void *data, int ev_type, void *ev);
+static int _e_manager_cb_client_message(void *data, int ev_type, void *ev);
static Evas_Bool _e_manager_frame_extents_free_cb(const Evas_Hash *hash
__UNUSED__,
const char *key __UNUSED__,
@@ -142,6 +143,8 @@
if (h) man->handlers = evas_list_append(man->handlers, h);
h = ecore_event_handler_add(ECORE_X_EVENT_SCREENSAVER_NOTIFY,
_e_manager_cb_screensaver_notify, man);
if (h) man->handlers = evas_list_append(man->handlers, h);
+ h = ecore_event_handler_add(ECORE_X_EVENT_CLIENT_MESSAGE,
_e_manager_cb_client_message, man);
+ if (h) man->handlers = evas_list_append(man->handlers, h);
man->pointer = e_pointer_window_new(man->root, 1);
@@ -785,6 +788,51 @@
return 1;
}
+static int
+_e_manager_cb_client_message(void *data, int ev_type, void *ev)
+{
+ E_Manager *man;
+ Ecore_X_Event_Client_Message *e;
+ E_Border *bd;
+
+ man = data;
+ e = ev;
+
+ if (e->message_type == ECORE_X_ATOM_NET_ACTIVE_WINDOW)
+ {
+ bd = e_border_find_by_client_window(e->win);
+ if ((bd) && (!bd->focused))
+ {
+ if (bd->iconic)
+ {
+ if (e_config->clientlist_warp_to_iconified_desktop == 1)
+ e_desk_show(bd->desk);
+
+ if (!bd->lock_user_iconify)
+ e_border_uniconify(bd);
+ }
+ if (!bd->iconic) e_desk_show(bd->desk);
+ if (!bd->lock_user_stacking) e_border_raise(bd);
+ if (!bd->lock_focus_out)
+ {
+ if (e_config->focus_policy != E_FOCUS_CLICK)
+ ecore_x_pointer_warp(bd->zone->container->win,
+ bd->x + (bd->w / 2), bd->y + (bd->h /
2));
+ e_border_focus_set(bd, 1, 1);
+ }
+#if 0 /* notes */
+ if (e->data.l[0] == 0 /* 0 == old, 1 == client, 2 == pager */)
+ {
+ }
+ timestamp = e->data.l[1];
+ requestor_id e->data.l[2];
+#endif
+ }
+ }
+
+ return 1;
+}
+
static Evas_Bool
_e_manager_frame_extents_free_cb(const Evas_Hash *hash __UNUSED__, const char
*key __UNUSED__,
void *data, void *fdata __UNUSED__)
@@ -823,5 +871,4 @@
static int _e_manager_cb_window_property(void *data, int ev_type, void
*ev){return 1;}
static int _e_manager_cb_window_colormap(void *data, int ev_type, void
*ev){return 1;}
static int _e_manager_cb_window_shape(void *data, int ev_type, void
*ev){return 1;}
-static int _e_manager_cb_client_message(void *data, int ev_type, void
*ev){return 1;}
#endif
-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs