parent
946ac4c2bc
commit
5e3c526dde
|
@ -763,35 +763,34 @@ static Ecore_X_Atom
|
||||||
_ecore_x_netwm_state_atom_get(Ecore_X_Window_State s)
|
_ecore_x_netwm_state_atom_get(Ecore_X_Window_State s)
|
||||||
{
|
{
|
||||||
switch(s)
|
switch(s)
|
||||||
{
|
{
|
||||||
case ECORE_X_WINDOW_STATE_MODAL:
|
case ECORE_X_WINDOW_STATE_MODAL:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_MODAL;
|
return ECORE_X_ATOM_NET_WM_STATE_MODAL;
|
||||||
case ECORE_X_WINDOW_STATE_STICKY:
|
case ECORE_X_WINDOW_STATE_STICKY:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_STICKY;
|
return ECORE_X_ATOM_NET_WM_STATE_STICKY;
|
||||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
case ECORE_X_WINDOW_STATE_MAXIMIZED_VERT:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
|
return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_VERT;
|
||||||
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
case ECORE_X_WINDOW_STATE_MAXIMIZED_HORZ:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
|
return ECORE_X_ATOM_NET_WM_STATE_MAXIMIZED_HORZ;
|
||||||
case ECORE_X_WINDOW_STATE_SHADED:
|
case ECORE_X_WINDOW_STATE_SHADED:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_SHADED;
|
return ECORE_X_ATOM_NET_WM_STATE_SHADED;
|
||||||
case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
|
case ECORE_X_WINDOW_STATE_SKIP_TASKBAR:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR;
|
return ECORE_X_ATOM_NET_WM_STATE_SKIP_TASKBAR;
|
||||||
case ECORE_X_WINDOW_STATE_SKIP_PAGER:
|
case ECORE_X_WINDOW_STATE_SKIP_PAGER:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER;
|
return ECORE_X_ATOM_NET_WM_STATE_SKIP_PAGER;
|
||||||
case ECORE_X_WINDOW_STATE_HIDDEN:
|
case ECORE_X_WINDOW_STATE_HIDDEN:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
|
return ECORE_X_ATOM_NET_WM_STATE_HIDDEN;
|
||||||
case ECORE_X_WINDOW_STATE_FULLSCREEN:
|
case ECORE_X_WINDOW_STATE_FULLSCREEN:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
|
return ECORE_X_ATOM_NET_WM_STATE_FULLSCREEN;
|
||||||
case ECORE_X_WINDOW_STATE_ABOVE:
|
case ECORE_X_WINDOW_STATE_ABOVE:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_ABOVE;
|
return ECORE_X_ATOM_NET_WM_STATE_ABOVE;
|
||||||
case ECORE_X_WINDOW_STATE_BELOW:
|
case ECORE_X_WINDOW_STATE_BELOW:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_BELOW;
|
return ECORE_X_ATOM_NET_WM_STATE_BELOW;
|
||||||
case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
|
case ECORE_X_WINDOW_STATE_DEMANDS_ATTENTION:
|
||||||
return ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
|
return ECORE_X_ATOM_NET_WM_STATE_DEMANDS_ATTENTION;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -809,13 +808,13 @@ ecore_x_netwm_window_state_isset(Ecore_X_Window win, Ecore_X_Window_State s)
|
||||||
atoms = (Ecore_X_Atom *) data;
|
atoms = (Ecore_X_Atom *) data;
|
||||||
|
|
||||||
for (i = 0; i < num; ++i)
|
for (i = 0; i < num; ++i)
|
||||||
{
|
{
|
||||||
if (atoms[i] == atom)
|
if (atoms[i] == atom)
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XFree(data);
|
XFree(data);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -837,44 +836,44 @@ ecore_x_netwm_window_state_set(Ecore_X_Window win, Ecore_X_Window_State state, i
|
||||||
oldset = (Ecore_X_Atom *) old_data;
|
oldset = (Ecore_X_Atom *) old_data;
|
||||||
|
|
||||||
if (on)
|
if (on)
|
||||||
{
|
{
|
||||||
if (ecore_x_netwm_window_state_isset(win, state))
|
if (ecore_x_netwm_window_state_isset(win, state))
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newset = calloc(num + 1, sizeof(Ecore_X_Atom));
|
newset = calloc(num + 1, sizeof(Ecore_X_Atom));
|
||||||
if (!newset) return;
|
if (!newset) return;
|
||||||
data = (unsigned char *) newset;
|
data = (unsigned char *) newset;
|
||||||
|
|
||||||
for (i = 0; i < num; i++)
|
for (i = 0; i < num; i++)
|
||||||
newset[i] = oldset[i];
|
newset[i] = oldset[i];
|
||||||
newset[num] = atom;
|
newset[num] = atom;
|
||||||
|
|
||||||
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_STATE,
|
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_STATE,
|
||||||
XA_ATOM, 32, data, num + 1);
|
XA_ATOM, 32, data, num + 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ecore_x_netwm_window_state_isset(win, state))
|
if (!ecore_x_netwm_window_state_isset(win, state))
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newset = calloc(num - 1, sizeof(Atom));
|
newset = calloc(num - 1, sizeof(Atom));
|
||||||
if (!newset)
|
if (!newset)
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data = (unsigned char *) newset;
|
data = (unsigned char *) newset;
|
||||||
for (i = 0; i < num; i++)
|
for (i = 0; i < num; i++)
|
||||||
if (oldset[i] != atom)
|
if (oldset[i] != atom)
|
||||||
newset[j++] = oldset[i];
|
newset[j++] = oldset[i];
|
||||||
|
|
||||||
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_STATE,
|
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_STATE,
|
||||||
XA_ATOM, 32, data, num - 1);
|
XA_ATOM, 32, data, num - 1);
|
||||||
}
|
}
|
||||||
XFree(oldset);
|
XFree(oldset);
|
||||||
free(newset);
|
free(newset);
|
||||||
}
|
}
|
||||||
|
@ -906,26 +905,26 @@ static Ecore_X_Atom
|
||||||
_ecore_x_netwm_window_type_atom_get(Ecore_X_Window_Type type)
|
_ecore_x_netwm_window_type_atom_get(Ecore_X_Window_Type type)
|
||||||
{
|
{
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case ECORE_X_WINDOW_TYPE_DESKTOP:
|
case ECORE_X_WINDOW_TYPE_DESKTOP:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DESKTOP;
|
||||||
case ECORE_X_WINDOW_TYPE_DOCK:
|
case ECORE_X_WINDOW_TYPE_DOCK:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DOCK;
|
||||||
case ECORE_X_WINDOW_TYPE_TOOLBAR:
|
case ECORE_X_WINDOW_TYPE_TOOLBAR:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_TOOLBAR;
|
||||||
case ECORE_X_WINDOW_TYPE_MENU:
|
case ECORE_X_WINDOW_TYPE_MENU:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_MENU;
|
||||||
case ECORE_X_WINDOW_TYPE_UTILITY:
|
case ECORE_X_WINDOW_TYPE_UTILITY:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_UTILITY;
|
||||||
case ECORE_X_WINDOW_TYPE_SPLASH:
|
case ECORE_X_WINDOW_TYPE_SPLASH:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH;
|
||||||
case ECORE_X_WINDOW_TYPE_DIALOG:
|
case ECORE_X_WINDOW_TYPE_DIALOG:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG;
|
||||||
case ECORE_X_WINDOW_TYPE_NORMAL:
|
case ECORE_X_WINDOW_TYPE_NORMAL:
|
||||||
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
|
return ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -962,14 +961,14 @@ ecore_x_netwm_window_type_get(Ecore_X_Window win)
|
||||||
atoms = (Ecore_X_Atom *) data;
|
atoms = (Ecore_X_Atom *) data;
|
||||||
|
|
||||||
for (i = 0; i < num; ++i)
|
for (i = 0; i < num; ++i)
|
||||||
{
|
{
|
||||||
type = _ecore_x_netwm_window_type_type_get(atoms[i]);
|
type = _ecore_x_netwm_window_type_type_get(atoms[i]);
|
||||||
if (type)
|
if (type)
|
||||||
{
|
{
|
||||||
ret = type;
|
ret = type;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XFree(data);
|
XFree(data);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1020,13 +1019,13 @@ ecore_x_netwm_allowed_action_isset(Ecore_X_Window win, Ecore_X_Action action)
|
||||||
atoms = (Ecore_X_Atom *) data;
|
atoms = (Ecore_X_Atom *) data;
|
||||||
|
|
||||||
for (i = 0; i < num; ++i)
|
for (i = 0; i < num; ++i)
|
||||||
{
|
{
|
||||||
if (atom == atoms[i])
|
if (atom == atoms[i])
|
||||||
{
|
{
|
||||||
ret = 1;
|
ret = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
XFree(data);
|
XFree(data);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -1048,44 +1047,44 @@ ecore_x_netwm_allowed_action_set(Ecore_X_Window win, Ecore_X_Action action, int
|
||||||
oldset = (Ecore_X_Atom *) old_data;
|
oldset = (Ecore_X_Atom *) old_data;
|
||||||
|
|
||||||
if (on)
|
if (on)
|
||||||
{
|
{
|
||||||
if (ecore_x_netwm_allowed_action_isset(win, action))
|
if (ecore_x_netwm_allowed_action_isset(win, action))
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newset = calloc(num + 1, sizeof(Ecore_X_Atom));
|
newset = calloc(num + 1, sizeof(Ecore_X_Atom));
|
||||||
if (!newset) return;
|
if (!newset) return;
|
||||||
data = (unsigned char *) newset;
|
data = (unsigned char *) newset;
|
||||||
|
|
||||||
for (i = 0; i < num; i++)
|
for (i = 0; i < num; i++)
|
||||||
newset[i] = oldset[i];
|
newset[i] = oldset[i];
|
||||||
newset[num] = atom;
|
newset[num] = atom;
|
||||||
|
|
||||||
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
|
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
|
||||||
XA_ATOM, 32, data, num + 1);
|
XA_ATOM, 32, data, num + 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!ecore_x_netwm_allowed_action_isset(win, action))
|
if (!ecore_x_netwm_allowed_action_isset(win, action))
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
newset = calloc(num - 1, sizeof(Atom));
|
newset = calloc(num - 1, sizeof(Atom));
|
||||||
if (!newset)
|
if (!newset)
|
||||||
{
|
{
|
||||||
XFree(old_data);
|
XFree(old_data);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
data = (unsigned char *) newset;
|
data = (unsigned char *) newset;
|
||||||
for (i = 0; i < num; i++)
|
for (i = 0; i < num; i++)
|
||||||
if (oldset[i] != atom)
|
if (oldset[i] != atom)
|
||||||
newset[j++] = oldset[i];
|
newset[j++] = oldset[i];
|
||||||
|
|
||||||
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
|
ecore_x_window_prop_property_set(win, ECORE_X_ATOM_NET_WM_ALLOWED_ACTIONS,
|
||||||
XA_ATOM, 32, data, num - 1);
|
XA_ATOM, 32, data, num - 1);
|
||||||
}
|
}
|
||||||
XFree(oldset);
|
XFree(oldset);
|
||||||
free(newset);
|
free(newset);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue