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_WINDOW_STATE = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_WINDOW_STATE_CENTERED = 0;
|
||||
EAPI Ecore_X_Atom E_ATOM_DESKTOP_FILE = 0;
|
||||
|
||||
/* externally accessible functions */
|
||||
EAPI int
|
||||
|
@ -29,11 +30,12 @@ e_atoms_init(void)
|
|||
"__E_WINDOW_HIDDEN",
|
||||
"__E_WINDOW_BORDER_SIZE",
|
||||
"__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_CONTAINER = atoms[1];
|
||||
E_ATOM_ZONE = atoms[2];
|
||||
|
@ -44,6 +46,7 @@ e_atoms_init(void)
|
|||
E_ATOM_BORDER_SIZE = atoms[7];
|
||||
E_ATOM_WINDOW_STATE = atoms[8];
|
||||
E_ATOM_WINDOW_STATE_CENTERED = atoms[9];
|
||||
E_ATOM_DESKTOP_FILE = atoms[10];
|
||||
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_HIDDEN;
|
||||
extern EAPI Ecore_X_Atom E_ATOM_BORDER_SIZE;
|
||||
extern EAPI Ecore_X_Atom E_ATOM_DESKTOP_FILE;
|
||||
|
||||
/* extra e window states */
|
||||
/* 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))
|
||||
bd->desktop = efreet_util_desktop_wm_class_find(bd->client.icccm.name,
|
||||
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)
|
||||
{
|
||||
|
@ -7376,6 +7377,19 @@ _e_border_eval(E_Border *bd)
|
|||
bd->client.netwm.pid);
|
||||
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);
|
||||
if ((bd->focused) && (bd->icon_object))
|
||||
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_Border *bd = NULL;
|
||||
unsigned int id;
|
||||
char *path;
|
||||
Efreet_Desktop *desktop = NULL;
|
||||
|
||||
/* get all information from window before it is
|
||||
* reset by e_border_new */
|
||||
|
@ -282,6 +284,14 @@ e_manager_manage_windows(E_Manager *man)
|
|||
deskxy[0],
|
||||
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);
|
||||
if (bd)
|
||||
|
@ -292,6 +302,7 @@ e_manager_manage_windows(E_Manager *man)
|
|||
* be set according to the desk */
|
||||
// if (zone) e_border_zone_set(bd, zone);
|
||||
if (desk) e_border_desk_set(bd, desk);
|
||||
bd->desktop = desktop;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue