SVN revision: 15087
This commit is contained in:
sebastid 2005-06-03 12:23:34 +00:00 committed by sebastid
parent 49cdf502fb
commit a1ce91af14
4 changed files with 102 additions and 11 deletions

View File

@ -7,13 +7,16 @@
* E can have multiple virtual roots AND multiple desktops AND several
* zones when using xinerama
*/
/*
* T = For taskbar
*/
_NET_ACTIVE_WINDOW [?] /* Listen to active window requests */
_NET_CLIENT_LIST [X]
_NET_CLIENT_LIST_STACKING [X]
_NET_CLOSE_WINDOW [P]
_NET_CURRENT_DESKTOP [P]
_NET_DESKTOP_GEOMETRY [?] /* Listen to _NET_DESKTOP_GEOMETRY requests */
_NET_DESKTOP_GEOMETRY [P]
_NET_DESKTOP_LAYOUT [P]
_NET_DESKTOP_NAMES [ ]
_NET_DESKTOP_VIEWPORT [P]
@ -37,10 +40,10 @@ _NET_WM_ACTION_RESIZE [ ]
_NET_WM_ACTION_SHADE [ ]
_NET_WM_ACTION_STICK [ ]
_NET_WM_ALLOWED_ACTIONS [ ]
_NET_WM_DESKTOP [?] /* Remove this property on unmap */
_NET_WM_HANDLED_ICONS [ ]
_NET_WM_DESKTOP [ ]
_NET_WM_HANDLED_ICONS [T]
_NET_WM_ICON [X]
_NET_WM_ICON_GEOMETRY [ ]
_NET_WM_ICON_GEOMETRY [T]
_NET_WM_ICON_NAME [X]
_NET_WM_MOVERESIZE [ ]
_NET_WM_NAME [X]
@ -63,11 +66,11 @@ _NET_WM_STATE_FULLSCREEN [X]
_NET_WM_STATE_ABOVE [X]
_NET_WM_STATE_BELOW [X]
_NET_WM_STATE_DEMANDS_ATTENTION [ ]
_NET_WM_STRUT [ ]
_NET_WM_STRUT_PARTIAL [ ]
_NET_WM_STRUT [X]
_NET_WM_STRUT_PARTIAL [X]
_NET_WM_SYNC_REQUEST [ ]
_NET_WM_SYNC_REQUEST_COUNTER [ ]
_NET_WM_USER_TIME [ ]
_NET_WM_USER_TIME [X]
_NET_WM_VISIBLE_ICON_NAME [X] /* E uses _NET_WM_ICON_NAME, doesn't need to set this */
_NET_WM_VISIBLE_NAME [X] /* E uses _NET_WM_NAME, doesn't need to set this */
/* Do we have to do anything special with these, except
@ -81,4 +84,4 @@ _NET_WM_WINDOW_TYPE_UTILITY [X]
_NET_WM_WINDOW_TYPE_SPLASH [X]
_NET_WM_WINDOW_TYPE_DIALOG [X]
_NET_WM_WINDOW_TYPE_NORMAL [X]
_NET_WORKAREA [ ]
_NET_WORKAREA [X]

View File

@ -355,6 +355,20 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
{
bd->client.netwm.fetch.icon = 1;
}
else if (atoms[i] == ECORE_X_ATOM_NET_WM_USER_TIME)
{
bd->client.netwm.fetch.user_time = 1;
}
else if (atoms[i] == ECORE_X_ATOM_NET_WM_STRUT)
{
printf("ECORE_X_ATOM_NET_WM_STRUT\n");
bd->client.netwm.fetch.strut = 1;
}
else if (atoms[i] == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL)
{
printf("ECORE_X_ATOM_NET_WM_STRUT_PARTIAL\n");
bd->client.netwm.fetch.strut = 1;
}
}
free(atoms);
}
@ -1971,6 +1985,21 @@ _e_border_cb_window_property(void *data, int ev_type, void *ev)
bd->client.netwm.fetch.icon = 1;
bd->changed = 1;
}
else if (e->atom == ECORE_X_ATOM_NET_WM_USER_TIME)
{
bd->client.netwm.fetch.user_time = 1;
bd->changed = 1;
}
else if (e->atom == ECORE_X_ATOM_NET_WM_STRUT)
{
bd->client.netwm.fetch.strut = 1;
bd->changed = 1;
}
else if (e->atom == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL)
{
bd->client.netwm.fetch.strut = 1;
bd->changed = 1;
}
*/
return 1;
}
@ -2944,6 +2973,44 @@ _e_border_eval(E_Border *bd)
bd->changes.icon = 1;
bd->client.netwm.fetch.icon = 0;
}
if (bd->client.netwm.fetch.user_time)
{
ecore_x_netwm_user_time_get(bd->client.win, &bd->client.netwm.user_time);
bd->client.netwm.fetch.user_time = 0;
}
if (bd->client.netwm.fetch.strut)
{
if (!ecore_x_netwm_strut_partial_get(bd->client.win,
&bd->client.netwm.strut.left,
&bd->client.netwm.strut.right,
&bd->client.netwm.strut.top,
&bd->client.netwm.strut.bottom,
&bd->client.netwm.strut.left_start_y,
&bd->client.netwm.strut.left_end_y,
&bd->client.netwm.strut.right_start_y,
&bd->client.netwm.strut.right_end_y,
&bd->client.netwm.strut.top_start_x,
&bd->client.netwm.strut.top_end_x,
&bd->client.netwm.strut.bottom_start_x,
&bd->client.netwm.strut.bottom_end_x))
{
ecore_x_netwm_strut_get(bd->client.win,
&bd->client.netwm.strut.left, &bd->client.netwm.strut.right,
&bd->client.netwm.strut.top, &bd->client.netwm.strut.bottom);
bd->client.netwm.strut.left_start_y = 0;
bd->client.netwm.strut.left_end_y = 0;
bd->client.netwm.strut.right_start_y = 0;
bd->client.netwm.strut.right_end_y = 0;
bd->client.netwm.strut.top_start_x = 0;
bd->client.netwm.strut.top_end_x = 0;
bd->client.netwm.strut.bottom_start_x = 0;
bd->client.netwm.strut.bottom_end_x = 0;
}
bd->client.netwm.fetch.strut = 0;
}
if (bd->changes.icon)
{
if (bd->icon_object)

View File

@ -168,6 +168,21 @@ struct _E_Border
int height;
int size;
} icon;
unsigned int user_time;
struct {
int left;
int right;
int top;
int bottom;
int left_start_y;
int left_end_y;
int right_start_y;
int right_end_y;
int top_start_x;
int top_end_x;
int bottom_start_x;
int bottom_end_x;
} strut;
/* NetWM Window state */
struct {
@ -189,6 +204,8 @@ struct _E_Border
unsigned char name : 1;
unsigned char icon_name : 1;
unsigned char icon : 1;
unsigned char user_time : 1;
unsigned char strut : 1;
/* No, fetch on new_client, shouldn't be changed after map.
unsigned char pid : 1;
*/

View File

@ -43,8 +43,6 @@ e_hints_init(void)
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST_STACKING, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_GEOMETRY, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_FRAME_EXTENTS, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTED, 1);
@ -68,6 +66,10 @@ e_hints_init(void)
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_ABOVE, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_BELOW, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_USER_TIME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_NAME, 1);
@ -80,6 +82,7 @@ e_hints_init(void)
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL, 1);
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WORKAREA, 1);
}
free(roots);
}
@ -108,7 +111,6 @@ e_hints_e16_comms_pretend(E_Manager *man)
void
e_hints_manager_init(E_Manager *man)
{
ecore_x_netwm_desk_size_set(man->root, man->w, man->h);
e_hints_e16_comms_pretend(man);
}
@ -1033,7 +1035,9 @@ e_hints_window_desktop_set(E_Border *bd)
deskpos[1] = bd->desk->y;
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_DESK, deskpos, 2);
#if 0
ecore_x_netwm_desktop_set(bd->client.win, current);
#endif
bd->client.netwm.desktop = current;
}
}