forked from enlightenment/efl
Add icon name set/get, colormap window set/unset ICCCM functions
SVN revision: 12269
This commit is contained in:
parent
00ea891439
commit
2925454ff0
|
@ -1012,7 +1012,14 @@ EAPI int ecore_x_client_message8_send(Ecore_X_Window win, Ecore_X_A
|
||||||
ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
|
ecore_x_icccm_command_set(Ecore_X_Window win, int argc, char **argv);
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
|
ecore_x_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv);
|
||||||
|
EAPI char *
|
||||||
|
ecore_x_icccm_icon_name_get(Ecore_X_Window win);
|
||||||
|
EAPI void
|
||||||
|
ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t);
|
||||||
|
EAPI void
|
||||||
|
ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin);
|
||||||
|
EAPI void
|
||||||
|
ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin);
|
||||||
|
|
||||||
typedef enum _Ecore_X_MWM_Hint_Func
|
typedef enum _Ecore_X_MWM_Hint_Func
|
||||||
{
|
{
|
||||||
|
|
|
@ -591,16 +591,156 @@ ecore_x_window_icccm_command_get(Ecore_X_Window win, int *argc, char ***argv)
|
||||||
XGetCommand(_ecore_x_disp, win, argv, argc);
|
XGetCommand(_ecore_x_disp, win, argv, argc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a window icon name.
|
||||||
|
* @param win The window
|
||||||
|
* @param t The icon name string
|
||||||
|
*
|
||||||
|
* Set a window icon name
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ecore_x_icccm_icon_name_set(Ecore_X_Window win, const char *t)
|
||||||
|
{
|
||||||
|
ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_icon_name, (char *)t);
|
||||||
|
ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_icon_name,
|
||||||
|
(char *)t);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a window icon name.
|
||||||
|
* @param win The window
|
||||||
|
* @return The windows icon name string
|
||||||
|
*
|
||||||
|
* Return the icon name of a window. String must be free'd when done with.
|
||||||
|
*/
|
||||||
|
char *
|
||||||
|
ecore_x_icccm_icon_name_get(Ecore_X_Window win)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
|
||||||
|
name = ecore_x_window_prop_string_get(win, _ecore_x_atom_net_wm_icon_name);
|
||||||
|
if (!name) name = ecore_x_window_prop_string_get(win, _ecore_x_atom_wm_icon_name);
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a subwindow to the list of windows that need a different colormap installed.
|
||||||
|
* @param win The toplevel window
|
||||||
|
* @param subwin The subwindow to be added to the colormap windows list
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ecore_x_icccm_colormap_window_set(Ecore_X_Window win, Ecore_X_Window subwin)
|
||||||
|
{
|
||||||
|
int num = 0, i;
|
||||||
|
unsigned char *old_data = NULL;
|
||||||
|
unsigned char *data = NULL;
|
||||||
|
Window *oldset = NULL;
|
||||||
|
Window *newset = NULL;
|
||||||
|
|
||||||
|
if(!ecore_x_window_prop_property_get(win,
|
||||||
|
_ecore_x_atom_wm_colormap_windows,
|
||||||
|
XA_WINDOW,
|
||||||
|
32,
|
||||||
|
&old_data,
|
||||||
|
&num))
|
||||||
|
{
|
||||||
|
newset = calloc(1, sizeof(Window));
|
||||||
|
if (!newset) return;
|
||||||
|
newset[0] = subwin;
|
||||||
|
num = 1;
|
||||||
|
data = (unsigned char *)newset;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newset = calloc(num + 1, sizeof(Window));
|
||||||
|
oldset = (Window *) old_data;
|
||||||
|
if (!newset) return;
|
||||||
|
for (i = 0; i < num; ++i)
|
||||||
|
{
|
||||||
|
if (oldset[i] == subwin)
|
||||||
|
{
|
||||||
|
XFree(old_data);
|
||||||
|
free(newset);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
newset[i] = oldset[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
newset[num++] = subwin;
|
||||||
|
XFree(old_data);
|
||||||
|
data = (unsigned char *)newset;
|
||||||
|
}
|
||||||
|
|
||||||
|
ecore_x_window_prop_property_set(win,
|
||||||
|
_ecore_x_atom_wm_colormap_windows,
|
||||||
|
XA_WINDOW,
|
||||||
|
32,
|
||||||
|
data,
|
||||||
|
num);
|
||||||
|
free(newset);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a window from the list of colormap windows.
|
||||||
|
* @param win The toplevel window
|
||||||
|
* @param subwin The window to be removed from the colormap window list.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
ecore_x_icccm_colormap_window_unset(Ecore_X_Window win, Ecore_X_Window subwin)
|
||||||
|
{
|
||||||
|
int num = 0, i, j, k = 0;
|
||||||
|
unsigned char *old_data = NULL;
|
||||||
|
unsigned char *data = NULL;
|
||||||
|
Window *oldset = NULL;
|
||||||
|
Window *newset = NULL;
|
||||||
|
|
||||||
|
if (!ecore_x_window_prop_property_get(win,
|
||||||
|
_ecore_x_atom_wm_colormap_windows,
|
||||||
|
XA_WINDOW,
|
||||||
|
32,
|
||||||
|
&old_data,
|
||||||
|
&num))
|
||||||
|
return;
|
||||||
|
|
||||||
|
oldset = (Window *) old_data;
|
||||||
|
for (i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
if (oldset[i] == subwin)
|
||||||
|
{
|
||||||
|
if (num == 1)
|
||||||
|
{
|
||||||
|
XDeleteProperty(_ecore_x_disp,
|
||||||
|
win,
|
||||||
|
_ecore_x_atom_wm_colormap_windows);
|
||||||
|
XFree(old_data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newset = calloc(num - 1, sizeof(Window));
|
||||||
|
data = (unsigned char *)newset;
|
||||||
|
for (j = 0; j < num; ++j)
|
||||||
|
if (oldset[j] != subwin)
|
||||||
|
newset[k++] = oldset[j];
|
||||||
|
ecore_x_window_prop_property_set(win,
|
||||||
|
_ecore_x_atom_wm_colormap_windows,
|
||||||
|
XA_WINDOW,
|
||||||
|
32,
|
||||||
|
data,
|
||||||
|
k);
|
||||||
|
XFree(old_data);
|
||||||
|
free(newset);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
XFree(old_data);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FIXME: move these things in here as they are icccm related */
|
/* FIXME: move these things in here as they are icccm related */
|
||||||
/* get/set wm protocols */
|
|
||||||
/* get/set name/class */
|
|
||||||
/* get/set machine */
|
|
||||||
/* get/set command */
|
|
||||||
/* get/set icon name */
|
|
||||||
/* get/set colormap windows */
|
|
||||||
/* get/set window role */
|
/* get/set window role */
|
||||||
/* get/set client leader */
|
/* get/set client leader */
|
||||||
/* get/set transient for */
|
/* get/set transient for */
|
||||||
|
|
|
@ -324,6 +324,7 @@ ecore_x_window_prop_visible_title_get(Ecore_X_Window win)
|
||||||
* @param t The icon name string
|
* @param t The icon name string
|
||||||
*
|
*
|
||||||
* Set a window icon name
|
* Set a window icon name
|
||||||
|
* DEPRECATED. Please use ecore_x_icccm_icon_name_set() instead.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t)
|
ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t)
|
||||||
|
@ -339,6 +340,7 @@ ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t)
|
||||||
* @return The windows icon name string
|
* @return The windows icon name string
|
||||||
*
|
*
|
||||||
* Return the icon name of a window. String must be free'd when done with.
|
* Return the icon name of a window. String must be free'd when done with.
|
||||||
|
* DEPRECATED. Please use ecore_x_icccm_icon_name_get() instead.
|
||||||
*/
|
*/
|
||||||
char *
|
char *
|
||||||
ecore_x_window_prop_icon_name_get(Ecore_X_Window win)
|
ecore_x_window_prop_icon_name_get(Ecore_X_Window win)
|
||||||
|
|
Loading…
Reference in New Issue