forked from enlightenment/enlightenment
remember the borders' .desktop file after restart
SVN revision: 42067
This commit is contained in:
parent
b3c2986d55
commit
1e8112a09e
|
@ -14,6 +14,7 @@ EAPI Ecore_X_Atom E_ATOM_HIDDEN = 0;
|
||||||
EAPI Ecore_X_Atom E_ATOM_BORDER_SIZE = 0;
|
EAPI Ecore_X_Atom E_ATOM_BORDER_SIZE = 0;
|
||||||
EAPI Ecore_X_Atom E_ATOM_WINDOW_STATE = 0;
|
EAPI Ecore_X_Atom E_ATOM_WINDOW_STATE = 0;
|
||||||
EAPI Ecore_X_Atom E_ATOM_WINDOW_STATE_CENTERED = 0;
|
EAPI Ecore_X_Atom E_ATOM_WINDOW_STATE_CENTERED = 0;
|
||||||
|
EAPI Ecore_X_Atom E_ATOM_DESKTOP_FILE = 0;
|
||||||
|
|
||||||
/* externally accessible functions */
|
/* externally accessible functions */
|
||||||
EAPI int
|
EAPI int
|
||||||
|
@ -29,11 +30,12 @@ e_atoms_init(void)
|
||||||
"__E_WINDOW_HIDDEN",
|
"__E_WINDOW_HIDDEN",
|
||||||
"__E_WINDOW_BORDER_SIZE",
|
"__E_WINDOW_BORDER_SIZE",
|
||||||
"__E_ATOM_WINDOW_STATE",
|
"__E_ATOM_WINDOW_STATE",
|
||||||
"__E_ATOM_WINDOW_STATE_CENTERED"
|
"__E_ATOM_WINDOW_STATE_CENTERED",
|
||||||
|
"__E_ATOM_DESKTOP_FILE"
|
||||||
};
|
};
|
||||||
Ecore_X_Atom atoms[10];
|
Ecore_X_Atom atoms[11];
|
||||||
|
|
||||||
ecore_x_atoms_get(atom_names, 10, atoms);
|
ecore_x_atoms_get(atom_names, 11, atoms);
|
||||||
E_ATOM_MANAGED = atoms[0];
|
E_ATOM_MANAGED = atoms[0];
|
||||||
E_ATOM_CONTAINER = atoms[1];
|
E_ATOM_CONTAINER = atoms[1];
|
||||||
E_ATOM_ZONE = atoms[2];
|
E_ATOM_ZONE = atoms[2];
|
||||||
|
@ -44,6 +46,7 @@ e_atoms_init(void)
|
||||||
E_ATOM_BORDER_SIZE = atoms[7];
|
E_ATOM_BORDER_SIZE = atoms[7];
|
||||||
E_ATOM_WINDOW_STATE = atoms[8];
|
E_ATOM_WINDOW_STATE = atoms[8];
|
||||||
E_ATOM_WINDOW_STATE_CENTERED = atoms[9];
|
E_ATOM_WINDOW_STATE_CENTERED = atoms[9];
|
||||||
|
E_ATOM_DESKTOP_FILE = atoms[10];
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ extern EAPI Ecore_X_Atom E_ATOM_MAPPED;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_SHADE_DIRECTION;
|
extern EAPI Ecore_X_Atom E_ATOM_SHADE_DIRECTION;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_HIDDEN;
|
extern EAPI Ecore_X_Atom E_ATOM_HIDDEN;
|
||||||
extern EAPI Ecore_X_Atom E_ATOM_BORDER_SIZE;
|
extern EAPI Ecore_X_Atom E_ATOM_BORDER_SIZE;
|
||||||
|
extern EAPI Ecore_X_Atom E_ATOM_DESKTOP_FILE;
|
||||||
|
|
||||||
/* extra e window states */
|
/* extra e window states */
|
||||||
/* if we add more states, we need to fix
|
/* if we add more states, we need to fix
|
||||||
|
|
|
@ -7368,7 +7368,8 @@ _e_border_eval(E_Border *bd)
|
||||||
if ((bd->client.icccm.name) && (bd->client.icccm.class))
|
if ((bd->client.icccm.name) && (bd->client.icccm.class))
|
||||||
bd->desktop = efreet_util_desktop_wm_class_find(bd->client.icccm.name,
|
bd->desktop = efreet_util_desktop_wm_class_find(bd->client.icccm.name,
|
||||||
bd->client.icccm.class);
|
bd->client.icccm.class);
|
||||||
if (bd->desktop) efreet_desktop_ref(bd->desktop);
|
/* already refd by desktop_wm_class_find */
|
||||||
|
/* if (bd->desktop) efreet_desktop_ref(bd->desktop); */
|
||||||
}
|
}
|
||||||
if (!bd->desktop)
|
if (!bd->desktop)
|
||||||
{
|
{
|
||||||
|
@ -7376,6 +7377,19 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->client.netwm.pid);
|
bd->client.netwm.pid);
|
||||||
if (bd->desktop) efreet_desktop_ref(bd->desktop);
|
if (bd->desktop) efreet_desktop_ref(bd->desktop);
|
||||||
}
|
}
|
||||||
|
if (!bd->desktop && bd->client.icccm.name)
|
||||||
|
{
|
||||||
|
/* this works for most cases as fallback. useful when app is
|
||||||
|
run from a shell */
|
||||||
|
bd->desktop = efreet_util_desktop_exec_find(bd->client.icccm.name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bd->desktop)
|
||||||
|
{
|
||||||
|
ecore_x_window_prop_string_set(bd->client.win, E_ATOM_DESKTOP_FILE,
|
||||||
|
bd->desktop->orig_path);
|
||||||
|
}
|
||||||
|
|
||||||
bd->icon_object = e_border_icon_add(bd, bd->bg_evas);
|
bd->icon_object = e_border_icon_add(bd, bd->bg_evas);
|
||||||
if ((bd->focused) && (bd->icon_object))
|
if ((bd->focused) && (bd->icon_object))
|
||||||
edje_object_signal_emit(bd->icon_object, "e,state,focused", "e");
|
edje_object_signal_emit(bd->icon_object, "e,state,focused", "e");
|
||||||
|
|
|
@ -256,6 +256,8 @@ e_manager_manage_windows(E_Manager *man)
|
||||||
E_Desk *desk = NULL;
|
E_Desk *desk = NULL;
|
||||||
E_Border *bd = NULL;
|
E_Border *bd = NULL;
|
||||||
unsigned int id;
|
unsigned int id;
|
||||||
|
char *path;
|
||||||
|
Efreet_Desktop *desktop = NULL;
|
||||||
|
|
||||||
/* get all information from window before it is
|
/* get all information from window before it is
|
||||||
* reset by e_border_new */
|
* reset by e_border_new */
|
||||||
|
@ -282,6 +284,14 @@ e_manager_manage_windows(E_Manager *man)
|
||||||
deskxy[0],
|
deskxy[0],
|
||||||
deskxy[1]);
|
deskxy[1]);
|
||||||
|
|
||||||
|
path = ecore_x_window_prop_string_get(windows[i],
|
||||||
|
E_ATOM_DESKTOP_FILE);
|
||||||
|
if (path)
|
||||||
|
{
|
||||||
|
desktop = efreet_desktop_get(path);
|
||||||
|
free(path);
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
bd = e_border_new(con, windows[i], 1, 0);
|
bd = e_border_new(con, windows[i], 1, 0);
|
||||||
if (bd)
|
if (bd)
|
||||||
|
@ -292,6 +302,7 @@ e_manager_manage_windows(E_Manager *man)
|
||||||
* be set according to the desk */
|
* be set according to the desk */
|
||||||
// if (zone) e_border_zone_set(bd, zone);
|
// if (zone) e_border_zone_set(bd, zone);
|
||||||
if (desk) e_border_desk_set(bd, desk);
|
if (desk) e_border_desk_set(bd, desk);
|
||||||
|
bd->desktop = desktop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue