static void _e_border_event_border_desk_set_free(void *data, void *ev);
static void _e_border_event_border_raise_free(void *data, void *ev);
static void _e_border_event_border_lower_free(void *data, void *ev);
+static void _e_border_event_border_icon_change_free(void *data, void *ev);
static void _e_border_event_border_resize_free(void *data, void *ev);
static void _e_border_event_border_move_free(void *data, void *ev);
static void _e_border_event_border_show_free(void *data, void *ev);
int E_EVENT_BORDER_UNSTICK = 0;
int E_EVENT_BORDER_RAISE = 0;
int E_EVENT_BORDER_LOWER = 0;
+int E_EVENT_BORDER_ICON_CHANGE = 0;
#define GRAV_SET(bd, grav) \
printf("GRAV TO %i\n", grav); \
E_EVENT_BORDER_UNSTICK = ecore_event_type_new();
E_EVENT_BORDER_RAISE = ecore_event_type_new();
E_EVENT_BORDER_LOWER = ecore_event_type_new();
+ E_EVENT_BORDER_ICON_CHANGE = ecore_event_type_new();
return 1;
}
}
}
}
+ {
+ E_Event_Border_Icon_Change *ev;
+
+ ev = calloc(1, sizeof(E_Event_Border_Icon_Change));
+ ev->border = bd;
+ e_object_ref(E_OBJECT(bd));
+ ecore_event_add(E_EVENT_BORDER_ICON_CHANGE, ev, _e_border_event_border_icon_change_free, NULL);
+ }
}
bd->client.icccm.fetch.name_class = 0;
}
free(e);
}
+static void
+_e_border_event_border_icon_change_free(void *data, void *ev)
+{
+ E_Event_Border_Icon_Change *e;
+
+ e = ev;
+ e_object_unref(E_OBJECT(e->border));
+ free(e);
+}
+
static void
_e_border_zone_update(E_Border *bd)
static int _pager_face_cb_event_border_desk_set(void *data, int type, void *event);
static int _pager_face_cb_event_border_raise(void *data, int type, void *event);
static int _pager_face_cb_event_border_lower(void *data, int type, void *event);
+static int _pager_face_cb_event_border_icon_change(void *data, int type, void *event);
static int _pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event);
static int _pager_face_cb_event_desk_show(void *data, int type, void *event);
static void _pager_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi);
face->ev_handler_border_desk_set =
ecore_event_handler_add(E_EVENT_BORDER_LOWER,
_pager_face_cb_event_border_lower, face);
+ face->ev_handler_border_icon_change =
+ ecore_event_handler_add(E_EVENT_BORDER_ICON_CHANGE,
+ _pager_face_cb_event_border_icon_change, face);
face->ev_handler_zone_desk_count_set =
ecore_event_handler_add(E_EVENT_ZONE_DESK_COUNT_SET,
_pager_face_cb_event_zone_desk_count_set, face);
ecore_event_handler_del(face->ev_handler_border_stick);
ecore_event_handler_del(face->ev_handler_border_unstick);
ecore_event_handler_del(face->ev_handler_border_desk_set);
+ ecore_event_handler_del(face->ev_handler_border_raise);
+ ecore_event_handler_del(face->ev_handler_border_lower);
+ ecore_event_handler_del(face->ev_handler_border_icon_change);
ecore_event_handler_del(face->ev_handler_zone_desk_count_set);
ecore_event_handler_del(face->ev_handler_desk_show);
o = edje_object_add(pd->face->evas);
pw->icon_object = o;
edje_object_file_set(o, app->path, "icon");
- if (visible) evas_object_show(o);
+ evas_object_show(o);
edje_object_part_swallow(pw->window_object, "icon", o);
}
pw = _pager_desk_border_find(pd, ev->border);
if (pw)
{
- if (ev->border->desk->visible)
- evas_object_hide(pw->window_object);
+ if (ev->border->desk->visible)
+ {
+ pd->wins = evas_list_remove(pd->wins, pw);
+ _pager_window_free(pw);
+ }
}
}
return 1;
if (ev->border->desk->visible)
evas_object_show(pw->window_object);
}
+ else
+ {
+ if (ev->border->sticky)
+ {
+ /* create it and add it */
+ pw = _pager_window_new(pd, ev->border);
+ if (pw)
+ pd->wins = evas_list_append(pd->wins, pw);
+ }
+ else
+ {
+ if (ev->border->desk == pd->desk)
+ {
+ Pager_Win *pw;
+
+ pw = _pager_window_new(pd, ev->border);
+ if (pw)
+ pd->wins = evas_list_append(pd->wins, pw);
+ }
+ }
+ }
}
return 1;
}
}
static int
+_pager_face_cb_event_border_icon_change(void *data, int type, void *event)
+{
+ E_Event_Border_Icon_Change *ev;
+ Pager_Face *face;
+ Evas_List *l;
+
+ face = data;
+ ev = event;
+ if (face->zone != ev->border->zone) return 1;
+ for (l = face->desks; l; l = l->next)
+ {
+ Pager_Desk *pd;
+ Pager_Win *pw, *pw2 = NULL;
+
+ pd = l->data;
+ pw = _pager_desk_border_find(pd, ev->border);
+ if (pw)
+ {
+ E_App *app;
+
+ if (pw->icon_object)
+ {
+ evas_object_del(pw->icon_object);
+ pw->icon_object = NULL;
+ }
+ app = e_app_window_name_class_find(ev->border->client.icccm.name,
+ ev->border->client.icccm.class);
+ if (app)
+ {
+ Evas_Object *o;
+
+ o = edje_object_add(pd->face->evas);
+ pw->icon_object = o;
+ edje_object_file_set(o, app->path, "icon");
+ evas_object_show(o);
+ edje_object_part_swallow(pw->window_object, "icon", o);
+ }
+ }
+ }
+ return 1;
+}
+
+static int
_pager_face_cb_event_zone_desk_count_set(void *data, int type, void *event)
{
E_Event_Zone_Desk_Count_Set *ev;