From: <enl...@li...> - 2003-06-22 22:04:29
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore Modified Files: Tag: SPLIT configure.in ecore-config.in Log Message: Only link in build options that were selected at compile time when linking against this lib. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/configure.in,v retrieving revision 1.8.2.12 retrieving revision 1.8.2.13 diff -u -3 -r1.8.2.12 -r1.8.2.13 --- configure.in 26 Apr 2003 03:39:13 -0000 1.8.2.12 +++ configure.in 22 Jun 2003 22:03:58 -0000 1.8.2.13 @@ -91,6 +91,9 @@ AC_MSG_CHECKING(whether ecore_x module is to be built) +ecore_x_cflags=""; +ecore_x_libs=""; + x_dir=""; x_includes=""; x_cflags=""; @@ -107,6 +110,7 @@ x_cflags="-I"$x_dir"/include" x_libs="-L"$x_dir"/lib -lX11 -lXext" x_ldflags=""; + ecore_x_libs="-lecore_x"; ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_X, false) @@ -118,19 +122,32 @@ AC_SUBST(x_ldflags) AC_SUBST(x_libs) +AC_SUBST(ecore_x_cflags) +AC_SUBST(ecore_x_libs) + AC_MSG_CHECKING(whether ecore_job module is to be built) +ecore_job_cflags=""; +ecore_job_libs=""; + AC_ARG_ENABLE(ecore-job, [ --enable-ecore-job enable the ecore_job module], [ AC_MSG_RESULT(yes) AM_CONDITIONAL(BUILD_ECORE_JOB, test "$enableval" = "yes") AC_DEFINE(BUILD_ECORE_JOB) + ecore_job_libs="-lecore_job"; ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_JOB, false) ] ) +AC_SUBST(ecore_job_cflags) +AC_SUBST(ecore_job_libs) + +ecore_fb_cflags=""; +ecore_fb_libs=""; + AC_MSG_CHECKING(whether ecore_fb module is to be built) AC_ARG_ENABLE(ecore-fb, @@ -138,12 +155,19 @@ AC_MSG_RESULT(yes) AM_CONDITIONAL(BUILD_ECORE_FB, test "$enableval" = "yes") AC_DEFINE(BUILD_ECORE_FB) + ecore_fb_libs="-lecore_fb"; ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_FB, false) ] ) +AC_SUBST(ecore_fb_cflags) +AC_SUBST(ecore_fb_libs) + +ecore_evas_cflags=""; +ecore_evas_libs=""; + evas_cflags=""; evas_libs=""; @@ -173,6 +197,7 @@ fi evas_cflags=`$EVAS_CONFIG --cflags` evas_libs=`$EVAS_CONFIG --libs` + ecore_evas_libs="-lecore_evas"; ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_EVAS, false) @@ -182,31 +207,48 @@ AC_SUBST(evas_cflags) AC_SUBST(evas_libs) +AC_SUBST(ecore_evas_cflags) +AC_SUBST(ecore_evas_libs) + AC_MSG_CHECKING(whether ecore_con module is to be built) +ecore_con_cflags=""; +ecore_con_libs=""; + AC_ARG_ENABLE(ecore-con, [ --enable-ecore-con enable the ecore_con module], [ AC_MSG_RESULT(yes) AM_CONDITIONAL(BUILD_ECORE_CON, test "$enableval" = "yes") AC_DEFINE(BUILD_ECORE_CON) + ecore_con_libs="-lecore_con" ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_CON, false) ] ) +AC_SUBST(ecore_con_cflags) +AC_SUBST(ecore_con_libs) + AC_MSG_CHECKING(whether ecore_ipc module is to be built) +ecore_ipc_cflags=""; +ecore_ipc_libs=""; + AC_ARG_ENABLE(ecore-ipc, [ --enable-ecore-ipc enable the ecore_ipc module], [ AC_MSG_RESULT(yes) AM_CONDITIONAL(BUILD_ECORE_IPC, test "$enableval" = "yes") AC_DEFINE(BUILD_ECORE_IPC) + ecore_ipc_libs="-lecore_ipc" ], [ AC_MSG_RESULT(no) AM_CONDITIONAL(BUILD_ECORE_IPC, false) ] ) + +AC_SUBST(ecore_ipc_cflags) +AC_SUBST(ecore_ipc_libs) AC_OUTPUT([ Makefile =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/ecore-config.in,v retrieving revision 1.1.2.4 retrieving revision 1.1.2.5 diff -u -3 -r1.1.2.4 -r1.1.2.5 --- ecore-config.in 22 Jun 2003 19:05:31 -0000 1.1.2.4 +++ ecore-config.in 22 Jun 2003 22:03:58 -0000 1.1.2.5 @@ -4,8 +4,6 @@ exec_prefix=@exec_prefix@ exec_prefix_set=no -@BUILD_ECORE_FB_TRUE@ecore_fb_libs=-lecore_fb - usage="\ Usage: ecore-config [--prefix[=DIR]] [--exec-prefix[=DIR]] [--version] [--libs] [--cflags]" @@ -48,7 +46,7 @@ ;; --libs) libdirs=-L@libdir@ - echo $libdirs -lecore -lecore_job -lecore_x -lecore_evas -lecore_con -lecore_ipc $ecore_fb_libs -lm + echo $libdirs -lecore @ecore_job_libs@ @ecore_x_libs@ @ecore_evas_libs@ @ecore_con_libs@ @ecore_ipc_libs@ @ecore_fb_libs@ -lm ;; *) echo "${usage}" 1>&2 |
From: <enl...@li...> - 2003-06-28 16:42:42
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/debian Modified Files: Tag: SPLIT rules Log Message: Build a basically usable debian package. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/debian/rules,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -3 -r1.3 -r1.3.2.1 --- rules 15 Mar 2002 00:18:24 -0000 1.3 +++ rules 28 Jun 2003 16:34:16 -0000 1.3.2.1 @@ -20,7 +20,11 @@ configure: configure-stamp configure-stamp: - ./autogen.sh --prefix=/usr || ./configure --prefix=/usr + ./autogen.sh --prefix=/usr --enable-ecore-x --enable-ecore-job \ + --enable-ecore-evas --enable-ecore-con \ + --enable-ecore-ipc || ./configure --prefix=/usr --enable-ecore-x \ + --enable-ecore-job --enable-ecore-evas \ + --enable-ecore-con --enable-ecore-ipc touch configure-stamp build: configure build-stamp |
From: <enl...@li...> - 2003-07-09 19:45:54
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/debian Modified Files: Tag: SPLIT changelog Log Message: Updated version number for debian packages. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/debian/changelog,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -3 -r1.3 -r1.3.2.1 --- changelog 31 Oct 2001 21:39:50 -0000 1.3 +++ changelog 9 Jul 2003 19:45:52 -0000 1.3.2.1 @@ -1,4 +1,4 @@ -ecore (0.0.2-0cvs2001103001) unstable; urgency=low +ecore (1.0.0_pre2-0cvs2003070901) unstable; urgency=low * a CVS release |
From: <enl...@li...> - 2003-10-08 20:34:09
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_window_prop.c Log Message: Patch from Tilman Sauerbeck to set the borderless hint w/o altering the window functionality. This was causing borderless windows to be unmovable under some window managers. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_x_window_prop.c 23 Sep 2003 22:33:10 -0000 1.3 +++ ecore_x_window_prop.c 8 Oct 2003 20:33:30 -0000 1.4 @@ -428,18 +428,15 @@ void ecore_x_window_prop_borderless_set(Ecore_X_Window win, int borderless) { - if (!borderless) - XDeleteProperty(_ecore_x_disp, win, _ecore_x_atom_motif_wm_hints); - else - { - const unsigned int data[5] = - { 0x3, 0x0, 0x0, 0x2ada27b0, 0x2aabd6b0}; - - ecore_x_window_prop_property_set(win, + unsigned int data[5] = {0}; + + data[0] = 2; /* just set the decorations hint! */ + data[2] = !borderless; + + ecore_x_window_prop_property_set(win, _ecore_x_atom_motif_wm_hints, _ecore_x_atom_motif_wm_hints, 32, (void *)data, 5); - } } /** |
From: <enl...@li...> - 2003-10-11 22:14:59
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_con Modified Files: ecore_con.c Log Message: Include netinet/in.h for connections to be portable to BSD. Added the atom declarations for the NetWM application window properties. Created ecore_x_window_prop_string_{set,get}. Changed ecore_x_window_prop_title_{set,get} to use the new string functions. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_con/ecore_con.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_con.c 6 Oct 2003 15:36:19 -0000 1.3 +++ ecore_con.c 11 Oct 2003 22:14:21 -0000 1.4 @@ -3,6 +3,7 @@ #include "ecore_con_private.h" #include "Ecore_Con.h" +#include <netinet/in.h> #include <sys/types.h> #include <sys/stat.h> #include <arpa/inet.h> |
From: <enl...@li...> - 2003-10-11 22:14:59
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_private.h ecore_x_window_prop.c Log Message: Include netinet/in.h for connections to be portable to BSD. Added the atom declarations for the NetWM application window properties. Created ecore_x_window_prop_string_{set,get}. Changed ecore_x_window_prop_title_{set,get} to use the new string functions. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- Ecore_X.h 9 Oct 2003 02:20:37 -0000 1.4 +++ Ecore_X.h 11 Oct 2003 22:14:21 -0000 1.5 @@ -489,6 +489,8 @@ void ecore_x_window_cursor_show(Ecore_X_Window win, int show); void ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number); +void ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, char *str); +char *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type); void ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_title_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x.c 9 Oct 2003 02:20:37 -0000 1.4 +++ ecore_x.c 11 Oct 2003 22:14:21 -0000 1.5 @@ -33,9 +33,22 @@ Atom _ecore_x_atom_win_layer = 0; Atom _ecore_x_atom_net_wm_desktop = 0; Atom _ecore_x_atom_net_current_desktop = 0; + +Atom _ecore_x_atom_net_wm_name = 0; +Atom _ecore_x_atom_net_wm_visible_name = 0; +Atom _ecore_x_atom_net_wm_icon_name = 0; +Atom _ecore_x_atom_net_wm_window_type = 0; Atom _ecore_x_atom_net_wm_state = 0; Atom _ecore_x_atom_net_wm_state_above = 0; Atom _ecore_x_atom_net_wm_state_below = 0; +Atom _ecore_x_atom_net_wm_allowed_actions = 0; +Atom _ecore_x_atom_net_wm_strut = 0; +Atom _ecore_x_atom_net_wm_strut_partial = 0; +Atom _ecore_x_atom_net_wm_icon_geometry = 0; +Atom _ecore_x_atom_net_wm_icon = 0; +Atom _ecore_x_atom_net_wm_pid = 0; +Atom _ecore_x_atom_net_wm_handle_icons = 0; +Atom _ecore_x_atom_net_wm_user_time = 0; Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM] = {0}; @@ -229,11 +242,22 @@ _ecore_x_atom_wm_name = XInternAtom(_ecore_x_disp, "WM_NAME", False); _ecore_x_atom_motif_wm_hints = XInternAtom(_ecore_x_disp, "_MOTIF_WM_HINTS", False); _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); - _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); + _ecore_x_atom_net_wm_name = XInternAtom(_ecore_x_disp, "_NET_WM_NAME", False); + _ecore_x_atom_net_wm_visible_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_NAME", False); + _ecore_x_atom_net_wm_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_NAME", False); + _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); + _ecore_x_atom_net_wm_window_type = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE", False); _ecore_x_atom_net_wm_state = XInternAtom(_ecore_x_disp, "_NET_WM_STATE", False); _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); + _ecore_x_atom_net_wm_allowed_actions = XInternAtom(_ecore_x_disp, "_NET_WM_ALLOWED_ACTIONS", False); + _ecore_x_atom_net_wm_strut = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT", False); + _ecore_x_atom_net_wm_strut_partial = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT_PARTIAL", False); + _ecore_x_atom_net_wm_icon_geometry = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_GEOMETRY", False); + _ecore_x_atom_net_wm_icon = XInternAtom(_ecore_x_disp, "_NET_WM_ICON", False); + _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); + _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = _ecore_x_atom_wm_delete_window; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = _ecore_x_atom_wm_take_focus; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_x_private.h 23 Sep 2003 22:33:10 -0000 1.3 +++ ecore_x_private.h 11 Oct 2003 22:14:22 -0000 1.4 @@ -64,6 +64,21 @@ extern Atom _ecore_x_atom_net_wm_state_above; extern Atom _ecore_x_atom_net_wm_state_below; +extern Atom _ecore_x_atom_net_wm_name; +extern Atom _ecore_x_atom_net_wm_visible_name; +extern Atom _ecore_x_atom_net_wm_icon_name; +extern Atom _ecore_x_atom_net_wm_desktop; +extern Atom _ecore_x_atom_net_wm_window_type; +extern Atom _ecore_x_atom_net_wm_state; +extern Atom _ecore_x_atom_net_wm_allowed_actions; +extern Atom _ecore_x_atom_net_wm_strut; +extern Atom _ecore_x_atom_net_wm_strut_partial; +extern Atom _ecore_x_atom_net_wm_icon_geometry; +extern Atom _ecore_x_atom_net_wm_icon; +extern Atom _ecore_x_atom_net_wm_pid; +extern Atom _ecore_x_atom_net_wm_handle_icons; +extern Atom _ecore_x_atom_net_wm_user_time; + extern Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM]; void _ecore_x_error_handler_init(void); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x_window_prop.c 8 Oct 2003 20:33:30 -0000 1.4 +++ ecore_x_window_prop.c 11 Oct 2003 22:14:22 -0000 1.5 @@ -85,56 +85,95 @@ } /** - * Set a window title. + * Set a window string property. * @param win The window - * @param t The title string + * @param type The property + * @param str The string * - * Set a window title + * Set a window string property * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> */ void -ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t) +ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, char *str) { - XStoreName(_ecore_x_disp, win, t); + XTextProperty xtp; + + xtp.value = str; + xtp.format = 8; + xtp.encoding = XA_STRING; + xtp.nitems = strlen(str); + XSetTextProperty(_ecore_x_disp, win, &xtp, type); } /** - * Get a window title. + * Get a window string property. * @param win The window - * @return The windows title string + * @param type The property * - * Return the title of a window. String must be free'd when done with. + * Get a window string property * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> */ char * -ecore_x_window_prop_title_get(Ecore_X_Window win) +ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type) { XTextProperty xtp; - - if (XGetWMName(_ecore_x_disp, win, &xtp)) + char *str = NULL; + + if (XGetTextProperty(_ecore_x_disp, win, &xtp, type)) { int items; char **list; Status s; - char *title = NULL; if (xtp.format == 8) { - s = XmbTextPropertyToTextList(_ecore_x_disp, &xtp, &list, &items); + s = Xutf8TextPropertyToTextList(_ecore_x_disp, &xtp, &list, &items); if ((s == Success) && (items > 0)) { - title = strdup(*list); + str = strdup(*list); XFreeStringList(list); } else - title = strdup((char *)xtp.value); + str = strdup((char *)xtp.value); } else - title = strdup((char *)xtp.value); + str = strdup((char *)xtp.value); XFree(xtp.value); - return title; } - return NULL; + return str; +} + +/** + * Set a window title. + * @param win The window + * @param t The title string + * + * Set a window title + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t) +{ + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_name, t); + ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_name, t); +} + +/** + * Get a window title. + * @param win The window + * @return The windows title string + * + * Return the title of a window. String must be free'd when done with. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +char * +ecore_x_window_prop_title_get(Ecore_X_Window win) +{ + char *title; + + title = ecore_x_window_prop_string_get(win, _ecore_x_atom_net_wm_name); + if (!title) title = ecore_x_window_prop_string_get(win, _ecore_x_atom_wm_name); + return title; } /** |
From: <enl...@li...> - 2003-10-11 22:15:53
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_window_prop.c Log Message: Added checks for the root window to the string property functions. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_x_window_prop.c 11 Oct 2003 22:14:22 -0000 1.5 +++ ecore_x_window_prop.c 11 Oct 2003 22:15:44 -0000 1.6 @@ -98,6 +98,7 @@ { XTextProperty xtp; + if (win == 0) win = DefaultRootWindow(_ecore_x_disp); xtp.value = str; xtp.format = 8; xtp.encoding = XA_STRING; @@ -119,6 +120,7 @@ XTextProperty xtp; char *str = NULL; + if (win == 0) win = DefaultRootWindow(_ecore_x_disp); if (XGetTextProperty(_ecore_x_disp, win, &xtp, type)) { int items; |
From: <enl...@li...> - 2003-10-11 23:18:43
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore Modified Files: autogen.sh Log Message: Use libtoolize over libtool for testing for the version. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/autogen.sh,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- autogen.sh 23 Sep 2003 08:09:19 -0000 1.4 +++ autogen.sh 11 Oct 2003 23:18:23 -0000 1.5 @@ -15,7 +15,7 @@ } (grep "^AM_PROG_LIBTOOL" $srcdir/configure.in >/dev/null) && { - (libtool --version) < /dev/null > /dev/null 2>&1 || { + (libtoolize --version) < /dev/null > /dev/null 2>&1 || { echo echo "**Error**: You must have \`libtool' installed." echo "Get ftp://ftp.gnu.org/pub/gnu/libtool-1.2d.tar.gz" |
From: <enl...@li...> - 2003-10-12 05:02:16
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_window_prop.c Log Message: Provide an API and events for _NET_WM_VISIBLE_NAME. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- Ecore_X.h 11 Oct 2003 22:14:21 -0000 1.5 +++ Ecore_X.h 12 Oct 2003 05:01:41 -0000 1.6 @@ -99,9 +99,10 @@ typedef struct _Ecore_X_Event_Client_Message Ecore_X_Event_Client_Message; typedef struct _Ecore_X_Event_Window_Shape Ecore_X_Event_Window_Shape; -typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Window_Delete_Request; -typedef struct _Ecore_X_Event_Window_Prop_Title_Change Ecore_X_Event_Window_Prop_Title_Change; -typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; +typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Window_Delete_Request; +typedef struct _Ecore_X_Event_Window_Prop_Title_Change Ecore_X_Event_Window_Prop_Title_Change; +typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change Ecore_X_Event_Window_Prop_Visible_Title_Change; +typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; struct _Ecore_X_Event_Key_Down { @@ -369,6 +370,13 @@ Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Visible_Title_Change +{ + Ecore_X_Window win; + char *title; + Ecore_X_Time time; +}; + struct _Ecore_X_Event_Window_Prop_Name_Class_Change { Ecore_X_Window win; @@ -413,6 +421,7 @@ extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST; extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE; +extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE; extern int ECORE_X_MODIFIER_SHIFT; @@ -493,6 +502,8 @@ char *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type); void ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_title_get(Ecore_X_Window win); +void ecore_x_window_prop_visible_title_set(Ecore_X_Window win, const char *t); +char *ecore_x_window_prop_visible_title_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); void ecore_x_window_prop_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, int on); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_x.c 11 Oct 2003 22:14:21 -0000 1.5 +++ ecore_x.c 12 Oct 2003 05:01:41 -0000 1.6 @@ -88,6 +88,7 @@ int ECORE_X_EVENT_WINDOW_DELETE_REQUEST = 0; int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = 0; +int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0; int ECORE_X_MODIFIER_SHIFT = 0; @@ -204,9 +205,10 @@ ECORE_X_EVENT_CLIENT_MESSAGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_SHAPE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); } ECORE_X_MODIFIER_SHIFT = _ecore_x_key_mask_get(XK_Shift_L); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_x_events.c 9 Oct 2003 02:20:37 -0000 1.3 +++ ecore_x_events.c 12 Oct 2003 05:01:41 -0000 1.4 @@ -4,6 +4,7 @@ static void _ecore_x_event_free_window_prop_name_class_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_title_change(void *data, void *ev); +static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev); static void _ecore_x_event_free_key_down(void *data, void *ev); static void _ecore_x_event_free_key_up(void *data, void *ev); static void _ecore_x_event_free_generic(void *data, void *ev); @@ -30,6 +31,16 @@ } static void +_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) +{ + Ecore_X_Event_Window_Prop_Visible_Title_Change *e; + + e = ev; + if (e->title) free(e->title); + free(e); +} + +static void _ecore_x_event_free_key_down(void *data, void *ev) { Ecore_X_Event_Key_Down *e; @@ -711,6 +722,15 @@ if (!e) return; e->title = ecore_x_window_prop_title_get(xevent->xproperty.window); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_title_change, NULL); + } + else if (xevent->xproperty.atom == _ecore_x_atom_net_wm_visible_name) + { + Ecore_X_Event_Window_Prop_Visible_Title_Change *e; + + e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Title_Change)); + if (!e) return; + e->title = ecore_x_window_prop_visible_title_get(xevent->xproperty.window); + ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_visible_title_change, NULL); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x_window_prop.c 11 Oct 2003 22:15:44 -0000 1.6 +++ ecore_x_window_prop.c 12 Oct 2003 05:01:41 -0000 1.7 @@ -111,7 +111,7 @@ * @param win The window * @param type The property * - * Get a window string property + * Return window string property of a window. String must be free'd when done. * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> */ char * @@ -175,6 +175,37 @@ title = ecore_x_window_prop_string_get(win, _ecore_x_atom_net_wm_name); if (!title) title = ecore_x_window_prop_string_get(win, _ecore_x_atom_wm_name); + return title; +} + +/** + * Set a window visible title. + * @param win The window + * @param t The visible title string + * + * Set a window visible title + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_visible_title_set(Ecore_X_Window win, const char *t) +{ + ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_visible_name, t); +} + +/** + * Get a window visible title. + * @param win The window + * @return The windows visible title string + * + * Return the visible title of a window. String must be free'd when done with. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +char * +ecore_x_window_prop_visible_title_get(Ecore_X_Window win) +{ + char *title; + + title = ecore_x_window_prop_string_get(win, _ecore_x_atom_net_wm_visible_name); return title; } |
From: <enl...@li...> - 2003-10-12 05:25:11
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_events.c Log Message: Catch the event when _NET_WM_NAME is changed, trigger an ecore title change event. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x_events.c 12 Oct 2003 05:01:41 -0000 1.4 +++ ecore_x_events.c 12 Oct 2003 05:25:08 -0000 1.5 @@ -714,7 +714,7 @@ &(e->name), &(e->clas)); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, e, _ecore_x_event_free_window_prop_name_class_change, NULL); } - else if (xevent->xproperty.atom == _ecore_x_atom_wm_name) + else if ((xevent->xproperty.atom == _ecore_x_atom_wm_name) || (xevent->xproperty.atom == _ecore_x_atom_net_wm_name)) { Ecore_X_Event_Window_Prop_Title_Change *e; |
From: <enl...@li...> - 2003-10-12 05:34:51
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x.c ecore_x_private.h ecore_x_window_prop.c Log Message: Follow the netwm spec and use UTF8 string encoding. Avoid non-portable Xlib functions too. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x.c 12 Oct 2003 05:01:41 -0000 1.6 +++ ecore_x.c 12 Oct 2003 05:34:47 -0000 1.7 @@ -50,6 +50,8 @@ Atom _ecore_x_atom_net_wm_handle_icons = 0; Atom _ecore_x_atom_net_wm_user_time = 0; +Atom _ecore_x_atom_utf8_string = 0; + Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM] = {0}; int ECORE_X_EVENT_KEY_DOWN = 0; @@ -260,6 +262,8 @@ _ecore_x_atom_net_wm_icon = XInternAtom(_ecore_x_disp, "_NET_WM_ICON", False); _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); + + _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = _ecore_x_atom_wm_delete_window; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = _ecore_x_atom_wm_take_focus; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x_private.h 11 Oct 2003 22:14:22 -0000 1.4 +++ ecore_x_private.h 12 Oct 2003 05:34:47 -0000 1.5 @@ -81,6 +81,8 @@ extern Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM]; +extern Atom _ecore_x_atom_utf8_string; + void _ecore_x_error_handler_init(void); void _ecore_x_event_handle_key_press(XEvent *xevent); void _ecore_x_event_handle_key_release(XEvent *xevent); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_x_window_prop.c 12 Oct 2003 05:01:41 -0000 1.7 +++ ecore_x_window_prop.c 12 Oct 2003 05:34:47 -0000 1.8 @@ -101,7 +101,7 @@ if (win == 0) win = DefaultRootWindow(_ecore_x_disp); xtp.value = str; xtp.format = 8; - xtp.encoding = XA_STRING; + xtp.encoding = _ecore_x_atom_utf8_string; xtp.nitems = strlen(str); XSetTextProperty(_ecore_x_disp, win, &xtp, type); } @@ -129,7 +129,7 @@ if (xtp.format == 8) { - s = Xutf8TextPropertyToTextList(_ecore_x_disp, &xtp, &list, &items); + s = XmbTextPropertyToTextList(_ecore_x_disp, &xtp, &list, &items); if ((s == Success) && (items > 0)) { str = strdup(*list); @@ -156,8 +156,8 @@ void ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t) { - ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_name, t); - ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_name, t); + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_name, (char *)t); + ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_name, (char *)t); } /** @@ -189,7 +189,8 @@ void ecore_x_window_prop_visible_title_set(Ecore_X_Window win, const char *t) { - ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_visible_name, t); + ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_visible_name, + (char *)t); } /** |
From: <enl...@li...> - 2003-10-12 06:25:27
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: Support WM_ICON_NAME and _NET_WM_ICON_NAME. Added test cases to ecore_test to verify these are setting and retrieving the values as well as generating the correct events. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_test.c 23 Sep 2003 22:33:10 -0000 1.3 +++ ecore_test.c 12 Oct 2003 06:25:25 -0000 1.4 @@ -417,6 +417,32 @@ } int +handler_x_window_prop_visible_title_change(void *data, int type, void *event) +{ + Ecore_X_Event_Window_Prop_Visible_Title_Change *e; + + e = event; + if (e->title) + printf("Visible title change to \"%s\"\n", e->title); + else + printf("Visible title deleted\n"); + return 1; +} + +int +handler_x_window_prop_icon_name_change(void *data, int type, void *event) +{ + Ecore_X_Event_Window_Prop_Icon_Name_Change *e; + + e = event; + if (e->name) + printf("Icon name change to \"%s\"\n", e->name); + else + printf("Icon name deleted\n"); + return 1; +} + +int handler_x_window_prop_name_class_change(void *data, int type, void *event) { Ecore_X_Event_Window_Prop_Name_Class_Change *e; @@ -432,8 +458,31 @@ void setup_ecore_x_test(void) { + char *tmp; + win = ecore_x_window_new(0, 0, 0, 120, 60); ecore_x_window_prop_title_set(win, "Ecore Test Program"); + tmp = ecore_x_window_prop_title_get(win); + printf("Title currently: %s\n", tmp); + free(tmp); + tmp = ecore_x_window_prop_visible_title_get(win); + if (!tmp) + { + printf("No visible title, setting it to Ecore ... Program\n"); + ecore_x_window_prop_visible_title_set(win, "Ecore ... Program"); + tmp = ecore_x_window_prop_visible_title_get(win); + } + printf("Visible title: %s\n", tmp); + free(tmp); + tmp = ecore_x_window_prop_icon_name_get(win); + if (!tmp) + { + printf("No icon name, setting it to Ecore_Test\n"); + ecore_x_window_prop_icon_name_set(win, "Ecore_Test"); + tmp = ecore_x_window_prop_icon_name_get(win); + } + printf("Icon Name: %s\n", tmp); + free(tmp); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); ecore_x_window_show(win); @@ -453,6 +502,8 @@ ecore_event_handler_add(ECORE_X_EVENT_WINDOW_CONFIGURE, handler_x_window_configure, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_DELETE_REQUEST, handler_x_window_delete_request, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, handler_x_window_prop_title_change, NULL); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, handler_x_window_prop_visible_title_change, NULL); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, handler_x_window_prop_icon_name_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, handler_x_window_prop_name_class_change, NULL); } #endif |
From: <enl...@li...> - 2003-10-12 06:26:00
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_private.h ecore_x_window_prop.c Log Message: Support WM_ICON_NAME and _NET_WM_ICON_NAME. Added test cases to ecore_test to verify these are setting and retrieving the values as well as generating the correct events. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- Ecore_X.h 12 Oct 2003 05:01:41 -0000 1.6 +++ Ecore_X.h 12 Oct 2003 06:25:25 -0000 1.7 @@ -102,6 +102,7 @@ typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Window_Delete_Request; typedef struct _Ecore_X_Event_Window_Prop_Title_Change Ecore_X_Event_Window_Prop_Title_Change; typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change Ecore_X_Event_Window_Prop_Visible_Title_Change; +typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change Ecore_X_Event_Window_Prop_Icon_Name_Change; typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; struct _Ecore_X_Event_Key_Down @@ -377,6 +378,13 @@ Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Icon_Name_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + struct _Ecore_X_Event_Window_Prop_Name_Class_Change { Ecore_X_Window win; @@ -422,6 +430,7 @@ extern int ECORE_X_EVENT_WINDOW_DELETE_REQUEST; extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE; +extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE; extern int ECORE_X_MODIFIER_SHIFT; @@ -504,6 +513,8 @@ char *ecore_x_window_prop_title_get(Ecore_X_Window win); void ecore_x_window_prop_visible_title_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_visible_title_get(Ecore_X_Window win); +void ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t); +char *ecore_x_window_prop_icon_name_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); void ecore_x_window_prop_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, int on); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_x.c 12 Oct 2003 05:34:47 -0000 1.7 +++ ecore_x.c 12 Oct 2003 06:25:25 -0000 1.8 @@ -29,6 +29,7 @@ Atom _ecore_x_atom_wm_protocols = 0; Atom _ecore_x_atom_wm_class = 0; Atom _ecore_x_atom_wm_name = 0; +Atom _ecore_x_atom_wm_icon_name = 0; Atom _ecore_x_atom_motif_wm_hints = 0; Atom _ecore_x_atom_win_layer = 0; Atom _ecore_x_atom_net_wm_desktop = 0; @@ -92,6 +93,7 @@ int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0; +int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0; int ECORE_X_MODIFIER_SHIFT = 0; int ECORE_X_MODIFIER_CTRL = 0; @@ -211,6 +213,7 @@ ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = ecore_event_type_new(); } ECORE_X_MODIFIER_SHIFT = _ecore_x_key_mask_get(XK_Shift_L); @@ -244,6 +247,7 @@ _ecore_x_atom_wm_protocols = XInternAtom(_ecore_x_disp, "WM_PROTOCOLS", False); _ecore_x_atom_wm_class = XInternAtom(_ecore_x_disp, "WM_CLASS", False); _ecore_x_atom_wm_name = XInternAtom(_ecore_x_disp, "WM_NAME", False); + _ecore_x_atom_wm_icon_name = XInternAtom(_ecore_x_disp, "WM_ICON_NAME", False); _ecore_x_atom_motif_wm_hints = XInternAtom(_ecore_x_disp, "_MOTIF_WM_HINTS", False); _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_x_events.c 12 Oct 2003 05:25:08 -0000 1.5 +++ ecore_x_events.c 12 Oct 2003 06:25:25 -0000 1.6 @@ -5,6 +5,7 @@ static void _ecore_x_event_free_window_prop_name_class_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_title_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev); +static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev); static void _ecore_x_event_free_key_down(void *data, void *ev); static void _ecore_x_event_free_key_up(void *data, void *ev); static void _ecore_x_event_free_generic(void *data, void *ev); @@ -31,16 +32,6 @@ } static void -_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) -{ - Ecore_X_Event_Window_Prop_Visible_Title_Change *e; - - e = ev; - if (e->title) free(e->title); - free(e); -} - -static void _ecore_x_event_free_key_down(void *data, void *ev) { Ecore_X_Event_Key_Down *e; @@ -65,6 +56,26 @@ } static void +_ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev) +{ + Ecore_X_Event_Window_Prop_Icon_Name_Change *e; + + e = ev; + if (e->name) free(e->name); + free(e); +} + +static void +_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) +{ + Ecore_X_Event_Window_Prop_Visible_Title_Change *e; + + e = ev; + if (e->title) free(e->title); + free(e); +} + +static void _ecore_x_event_free_generic(void *data, void *ev) { free(ev); @@ -731,6 +742,15 @@ if (!e) return; e->title = ecore_x_window_prop_visible_title_get(xevent->xproperty.window); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, e, _ecore_x_event_free_window_prop_visible_title_change, NULL); + } + else if ((xevent->xproperty.atom == _ecore_x_atom_wm_icon_name) || (xevent->xproperty.atom == _ecore_x_atom_net_wm_icon_name)) + { + Ecore_X_Event_Window_Prop_Icon_Name_Change *e; + + e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Icon_Name_Change)); + if (!e) return; + e->name = ecore_x_window_prop_icon_name_get(xevent->xproperty.window); + ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_icon_name_change, NULL); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_x_private.h 12 Oct 2003 05:34:47 -0000 1.5 +++ ecore_x_private.h 12 Oct 2003 06:25:25 -0000 1.6 @@ -56,6 +56,7 @@ extern Atom _ecore_x_atom_wm_protocols; extern Atom _ecore_x_atom_wm_class; extern Atom _ecore_x_atom_wm_name; +extern Atom _ecore_x_atom_wm_icon_name; extern Atom _ecore_x_atom_motif_wm_hints; extern Atom _ecore_x_atom_win_layer; extern Atom _ecore_x_atom_net_wm_desktop; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_x_window_prop.c 12 Oct 2003 05:34:47 -0000 1.8 +++ ecore_x_window_prop.c 12 Oct 2003 06:25:25 -0000 1.9 @@ -211,6 +211,40 @@ } /** + * Set a window icon name. + * @param win The window + * @param t The icon name string + * + * Set a window icon name + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_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. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +char * +ecore_x_window_prop_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; +} + +/** * Set a window name & class. * @param win The window * @param n The name string |
From: <enl...@li...> - 2003-10-12 06:56:13
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: More NetWM support, this time added _NET_WM_VISIBLE_ICON_NAME. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_test.c 12 Oct 2003 06:25:25 -0000 1.4 +++ ecore_test.c 12 Oct 2003 06:55:40 -0000 1.5 @@ -443,6 +443,19 @@ } int +handler_x_window_prop_visible_icon_name_change(void *data, int type, void *event) +{ + Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; + + e = event; + if (e->name) + printf("Visible icon name change to \"%s\"\n", e->name); + else + printf("Visible icon name deleted\n"); + return 1; +} + +int handler_x_window_prop_name_class_change(void *data, int type, void *event) { Ecore_X_Event_Window_Prop_Name_Class_Change *e; @@ -483,6 +496,15 @@ } printf("Icon Name: %s\n", tmp); free(tmp); + tmp = ecore_x_window_prop_visible_icon_name_get(win); + if (!tmp) + { + printf("No visible icon name, setting it to Ecore\n"); + ecore_x_window_prop_visible_icon_name_set(win, "Ecore"); + tmp = ecore_x_window_prop_visible_icon_name_get(win); + } + printf("Visible icon Name: %s\n", tmp); + free(tmp); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); ecore_x_window_show(win); @@ -504,6 +526,7 @@ ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE, handler_x_window_prop_title_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE, handler_x_window_prop_visible_title_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, handler_x_window_prop_icon_name_change, NULL); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, handler_x_window_prop_visible_icon_name_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, handler_x_window_prop_name_class_change, NULL); } #endif |
From: <enl...@li...> - 2003-10-12 06:56:14
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_private.h ecore_x_window_prop.c Log Message: More NetWM support, this time added _NET_WM_VISIBLE_ICON_NAME. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- Ecore_X.h 12 Oct 2003 06:25:25 -0000 1.7 +++ Ecore_X.h 12 Oct 2003 06:55:40 -0000 1.8 @@ -99,11 +99,12 @@ typedef struct _Ecore_X_Event_Client_Message Ecore_X_Event_Client_Message; typedef struct _Ecore_X_Event_Window_Shape Ecore_X_Event_Window_Shape; -typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Window_Delete_Request; -typedef struct _Ecore_X_Event_Window_Prop_Title_Change Ecore_X_Event_Window_Prop_Title_Change; -typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change Ecore_X_Event_Window_Prop_Visible_Title_Change; -typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change Ecore_X_Event_Window_Prop_Icon_Name_Change; -typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; +typedef struct _Ecore_X_Event_Window_Delete_Request Ecore_X_Event_Window_Delete_Request; +typedef struct _Ecore_X_Event_Window_Prop_Title_Change Ecore_X_Event_Window_Prop_Title_Change; +typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change Ecore_X_Event_Window_Prop_Visible_Title_Change; +typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change Ecore_X_Event_Window_Prop_Icon_Name_Change; +typedef struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change; +typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; struct _Ecore_X_Event_Key_Down { @@ -385,6 +386,13 @@ Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + struct _Ecore_X_Event_Window_Prop_Name_Class_Change { Ecore_X_Window win; @@ -431,6 +439,7 @@ extern int ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE; +extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE; extern int ECORE_X_MODIFIER_SHIFT; @@ -515,6 +524,8 @@ char *ecore_x_window_prop_visible_title_get(Ecore_X_Window win); void ecore_x_window_prop_icon_name_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_icon_name_get(Ecore_X_Window win); +void ecore_x_window_prop_visible_icon_name_set(Ecore_X_Window win, const char *t); +char *ecore_x_window_prop_visible_icon_name_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); void ecore_x_window_prop_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, int on); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_x.c 12 Oct 2003 06:25:25 -0000 1.8 +++ ecore_x.c 12 Oct 2003 06:55:40 -0000 1.9 @@ -38,6 +38,7 @@ Atom _ecore_x_atom_net_wm_name = 0; Atom _ecore_x_atom_net_wm_visible_name = 0; Atom _ecore_x_atom_net_wm_icon_name = 0; +Atom _ecore_x_atom_net_wm_visible_icon_name = 0; Atom _ecore_x_atom_net_wm_window_type = 0; Atom _ecore_x_atom_net_wm_state = 0; Atom _ecore_x_atom_net_wm_state_above = 0; @@ -94,6 +95,7 @@ int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0; +int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = 0; int ECORE_X_MODIFIER_SHIFT = 0; int ECORE_X_MODIFIER_CTRL = 0; @@ -209,11 +211,12 @@ ECORE_X_EVENT_CLIENT_MESSAGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_SHAPE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); - ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_DELETE_REQUEST = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_TITLE_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = ecore_event_type_new(); } ECORE_X_MODIFIER_SHIFT = _ecore_x_key_mask_get(XK_Shift_L); @@ -242,30 +245,31 @@ return 0; } _ecore_x_filter_handler = ecore_event_filter_add(_ecore_x_event_filter_start, _ecore_x_event_filter_filter, _ecore_x_event_filter_end, NULL); - _ecore_x_atom_wm_delete_window = XInternAtom(_ecore_x_disp, "WM_DELETE_WINDOW", False); - _ecore_x_atom_wm_take_focus = XInternAtom(_ecore_x_disp, "WM_TAKE_FOCUS", False); - _ecore_x_atom_wm_protocols = XInternAtom(_ecore_x_disp, "WM_PROTOCOLS", False); - _ecore_x_atom_wm_class = XInternAtom(_ecore_x_disp, "WM_CLASS", False); - _ecore_x_atom_wm_name = XInternAtom(_ecore_x_disp, "WM_NAME", False); - _ecore_x_atom_wm_icon_name = XInternAtom(_ecore_x_disp, "WM_ICON_NAME", False); - _ecore_x_atom_motif_wm_hints = XInternAtom(_ecore_x_disp, "_MOTIF_WM_HINTS", False); - _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); - _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); - _ecore_x_atom_net_wm_name = XInternAtom(_ecore_x_disp, "_NET_WM_NAME", False); - _ecore_x_atom_net_wm_visible_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_NAME", False); - _ecore_x_atom_net_wm_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_NAME", False); - _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); - _ecore_x_atom_net_wm_window_type = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE", False); - _ecore_x_atom_net_wm_state = XInternAtom(_ecore_x_disp, "_NET_WM_STATE", False); - _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); - _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); - _ecore_x_atom_net_wm_allowed_actions = XInternAtom(_ecore_x_disp, "_NET_WM_ALLOWED_ACTIONS", False); - _ecore_x_atom_net_wm_strut = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT", False); - _ecore_x_atom_net_wm_strut_partial = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT_PARTIAL", False); - _ecore_x_atom_net_wm_icon_geometry = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_GEOMETRY", False); - _ecore_x_atom_net_wm_icon = XInternAtom(_ecore_x_disp, "_NET_WM_ICON", False); - _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); - _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); + _ecore_x_atom_wm_delete_window = XInternAtom(_ecore_x_disp, "WM_DELETE_WINDOW", False); + _ecore_x_atom_wm_take_focus = XInternAtom(_ecore_x_disp, "WM_TAKE_FOCUS", False); + _ecore_x_atom_wm_protocols = XInternAtom(_ecore_x_disp, "WM_PROTOCOLS", False); + _ecore_x_atom_wm_class = XInternAtom(_ecore_x_disp, "WM_CLASS", False); + _ecore_x_atom_wm_name = XInternAtom(_ecore_x_disp, "WM_NAME", False); + _ecore_x_atom_wm_icon_name = XInternAtom(_ecore_x_disp, "WM_ICON_NAME", False); + _ecore_x_atom_motif_wm_hints = XInternAtom(_ecore_x_disp, "_MOTIF_WM_HINTS", False); + _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); + _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); + _ecore_x_atom_net_wm_name = XInternAtom(_ecore_x_disp, "_NET_WM_NAME", False); + _ecore_x_atom_net_wm_visible_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_NAME", False); + _ecore_x_atom_net_wm_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_NAME", False); + _ecore_x_atom_net_wm_visible_icon_name = XInternAtom(_ecore_x_disp, "_NET_WM_VISIBLE_ICON_NAME", False); + _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); + _ecore_x_atom_net_wm_window_type = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE", False); + _ecore_x_atom_net_wm_state = XInternAtom(_ecore_x_disp, "_NET_WM_STATE", False); + _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); + _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); + _ecore_x_atom_net_wm_allowed_actions = XInternAtom(_ecore_x_disp, "_NET_WM_ALLOWED_ACTIONS", False); + _ecore_x_atom_net_wm_strut = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT", False); + _ecore_x_atom_net_wm_strut_partial = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT_PARTIAL", False); + _ecore_x_atom_net_wm_icon_geometry = XInternAtom(_ecore_x_disp, "_NET_WM_ICON_GEOMETRY", False); + _ecore_x_atom_net_wm_icon = XInternAtom(_ecore_x_disp, "_NET_WM_ICON", False); + _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); + _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x_events.c 12 Oct 2003 06:25:25 -0000 1.6 +++ ecore_x_events.c 12 Oct 2003 06:55:40 -0000 1.7 @@ -6,6 +6,7 @@ static void _ecore_x_event_free_window_prop_title_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev); +static void _ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev); static void _ecore_x_event_free_key_down(void *data, void *ev); static void _ecore_x_event_free_key_up(void *data, void *ev); static void _ecore_x_event_free_generic(void *data, void *ev); @@ -66,6 +67,16 @@ } static void +_ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev) +{ + Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; + + e = ev; + if (e->name) free(e->name); + free(e); +} + +static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) { Ecore_X_Event_Window_Prop_Visible_Title_Change *e; @@ -751,6 +762,15 @@ if (!e) return; e->name = ecore_x_window_prop_icon_name_get(xevent->xproperty.window); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_icon_name_change, NULL); + } + else if (xevent->xproperty.atom == _ecore_x_atom_net_wm_visible_icon_name) + { + Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; + + e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change)); + if (!e) return; + e->name = ecore_x_window_prop_visible_icon_name_get(xevent->xproperty.window); + ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_visible_icon_name_change, NULL); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x_private.h 12 Oct 2003 06:25:25 -0000 1.6 +++ ecore_x_private.h 12 Oct 2003 06:55:40 -0000 1.7 @@ -68,6 +68,7 @@ extern Atom _ecore_x_atom_net_wm_name; extern Atom _ecore_x_atom_net_wm_visible_name; extern Atom _ecore_x_atom_net_wm_icon_name; +extern Atom _ecore_x_atom_net_wm_visible_icon_name; extern Atom _ecore_x_atom_net_wm_desktop; extern Atom _ecore_x_atom_net_wm_window_type; extern Atom _ecore_x_atom_net_wm_state; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ecore_x_window_prop.c 12 Oct 2003 06:25:25 -0000 1.9 +++ ecore_x_window_prop.c 12 Oct 2003 06:55:40 -0000 1.10 @@ -245,6 +245,38 @@ } /** + * Set a window visible icon name. + * @param win The window + * @param t The visible icon name string + * + * Set a window visible icon name + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_visible_icon_name_set(Ecore_X_Window win, const char *t) +{ + ecore_x_window_prop_string_set(win, _ecore_x_atom_net_wm_visible_icon_name, + (char *)t); +} + +/** + * Get a window visible icon name. + * @param win The window + * @return The windows visible icon name string + * + * Return the visible icon name of a window. String must be free'd when done with. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +char * +ecore_x_window_prop_visible_icon_name_get(Ecore_X_Window win) +{ + char *name; + + name = ecore_x_window_prop_string_get(win, _ecore_x_atom_net_wm_visible_icon_name); + return name; +} + +/** * Set a window name & class. * @param win The window * @param n The name string |
From: <enl...@li...> - 2003-10-12 17:36:09
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: API for manipulating the WM_CLIENT_MACHINE string. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_test.c 12 Oct 2003 06:55:40 -0000 1.5 +++ ecore_test.c 12 Oct 2003 17:35:35 -0000 1.6 @@ -456,6 +456,19 @@ } int +handler_x_window_prop_client_machine_change(void *data, int type, void *event) +{ + Ecore_X_Event_Window_Prop_Client_Machine_Change *e; + + e = event; + if (e->name) + printf("Client machine change to \"%s\"\n", e->name); + else + printf("Client machine deleted\n"); + return 1; +} + +int handler_x_window_prop_name_class_change(void *data, int type, void *event) { Ecore_X_Event_Window_Prop_Name_Class_Change *e; @@ -504,6 +517,15 @@ tmp = ecore_x_window_prop_visible_icon_name_get(win); } printf("Visible icon Name: %s\n", tmp); + free(tmp); + tmp = ecore_x_window_prop_client_machine_get(win); + if (!tmp) + { + printf("No client machine, setting it to host.test.com\n"); + ecore_x_window_prop_client_machine_set(win, "host.test.com"); + tmp = ecore_x_window_prop_client_machine_get(win); + } + printf("Client machine: %s\n", tmp); free(tmp); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); |
From: <enl...@li...> - 2003-10-12 17:36:09
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_private.h ecore_x_window_prop.c Log Message: API for manipulating the WM_CLIENT_MACHINE string. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- Ecore_X.h 12 Oct 2003 07:12:09 -0000 1.9 +++ Ecore_X.h 12 Oct 2003 17:35:35 -0000 1.10 @@ -104,6 +104,7 @@ typedef struct _Ecore_X_Event_Window_Prop_Visible_Title_Change Ecore_X_Event_Window_Prop_Visible_Title_Change; typedef struct _Ecore_X_Event_Window_Prop_Icon_Name_Change Ecore_X_Event_Window_Prop_Icon_Name_Change; typedef struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change; +typedef struct _Ecore_X_Event_Window_Prop_Client_Machine_Change Ecore_X_Event_Window_Prop_Client_Machine_Change; typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; struct _Ecore_X_Event_Key_Down @@ -393,6 +394,13 @@ Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Client_Machine_Change +{ + Ecore_X_Window win; + char *name; + Ecore_X_Time time; +}; + struct _Ecore_X_Event_Window_Prop_Name_Class_Change { Ecore_X_Window win; @@ -440,6 +448,7 @@ extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_TITLE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE; +extern int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE; extern int ECORE_X_MODIFIER_SHIFT; @@ -527,6 +536,8 @@ char *ecore_x_window_prop_icon_name_get(Ecore_X_Window win); void ecore_x_window_prop_visible_icon_name_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_visible_icon_name_get(Ecore_X_Window win); +void ecore_x_window_prop_client_machine_set(Ecore_X_Window win, const char *t); +char *ecore_x_window_prop_client_machine_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); void ecore_x_window_prop_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, int on); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- ecore_x.c 12 Oct 2003 07:15:26 -0000 1.11 +++ ecore_x.c 12 Oct 2003 17:35:35 -0000 1.12 @@ -30,6 +30,7 @@ Atom _ecore_x_atom_wm_class = 0; Atom _ecore_x_atom_wm_name = 0; Atom _ecore_x_atom_wm_icon_name = 0; +Atom _ecore_x_atom_wm_client_machine = 0; Atom _ecore_x_atom_motif_wm_hints = 0; Atom _ecore_x_atom_win_layer = 0; Atom _ecore_x_atom_net_wm_desktop = 0; @@ -96,6 +97,7 @@ int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = 0; +int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE = 0; int ECORE_X_MODIFIER_SHIFT = 0; int ECORE_X_MODIFIER_CTRL = 0; @@ -251,6 +253,7 @@ _ecore_x_atom_wm_class = XInternAtom(_ecore_x_disp, "WM_CLASS", False); _ecore_x_atom_wm_name = XInternAtom(_ecore_x_disp, "WM_NAME", False); _ecore_x_atom_wm_icon_name = XInternAtom(_ecore_x_disp, "WM_ICON_NAME", False); + _ecore_x_atom_wm_client_machine = XInternAtom(_ecore_x_disp, "WM_CLIENT_MACHINE", False); _ecore_x_atom_motif_wm_hints = XInternAtom(_ecore_x_disp, "_MOTIF_WM_HINTS", False); _ecore_x_atom_win_layer = XInternAtom(_ecore_x_disp, "_WIN_LAYER", False); _ecore_x_atom_net_current_desktop = XInternAtom(_ecore_x_disp, "_NET_CURRENT_DESKTOP", False); @@ -396,7 +399,7 @@ Window parent_r; Window *children_r = NULL; int num_children = 0; - Window root = RootWindow(d->display, i); + Window root = RootWindow(_ecore_x_disp, i); while (XQueryTree(_ecore_x_disp, root, &root_r, &parent_r, &children_r, &num_children) && num_children > 0) =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_x_events.c 12 Oct 2003 06:55:40 -0000 1.7 +++ ecore_x_events.c 12 Oct 2003 17:35:35 -0000 1.8 @@ -7,6 +7,7 @@ static void _ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev); +static void _ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev); static void _ecore_x_event_free_key_down(void *data, void *ev); static void _ecore_x_event_free_key_up(void *data, void *ev); static void _ecore_x_event_free_generic(void *data, void *ev); @@ -33,33 +34,29 @@ } static void -_ecore_x_event_free_key_down(void *data, void *ev) +_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) { - Ecore_X_Event_Key_Down *e; - + Ecore_X_Event_Window_Prop_Visible_Title_Change *e; + e = ev; - if (e->keyname) free(e->keyname); - if (e->keysymbol) free(e->keysymbol); - if (e->key_compose) free(e->key_compose); + if (e->title) free(e->title); free(e); } static void -_ecore_x_event_free_key_up(void *data, void *ev) +_ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev) { - Ecore_X_Event_Key_Up *e; - + Ecore_X_Event_Window_Prop_Icon_Name_Change *e; + e = ev; - if (e->keyname) free(e->keyname); - if (e->keysymbol) free(e->keysymbol); - if (e->key_compose) free(e->key_compose); + if (e->name) free(e->name); free(e); } static void -_ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev) +_ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev) { - Ecore_X_Event_Window_Prop_Icon_Name_Change *e; + Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; e = ev; if (e->name) free(e->name); @@ -67,9 +64,9 @@ } static void -_ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev) +_ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev) { - Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change *e; + Ecore_X_Event_Window_Prop_Client_Machine_Change *e; e = ev; if (e->name) free(e->name); @@ -77,12 +74,26 @@ } static void -_ecore_x_event_free_window_prop_visible_title_change(void *data, void *ev) +_ecore_x_event_free_key_down(void *data, void *ev) { - Ecore_X_Event_Window_Prop_Visible_Title_Change *e; - + Ecore_X_Event_Key_Down *e; + e = ev; - if (e->title) free(e->title); + if (e->keyname) free(e->keyname); + if (e->keysymbol) free(e->keysymbol); + if (e->key_compose) free(e->key_compose); + free(e); +} + +static void +_ecore_x_event_free_key_up(void *data, void *ev) +{ + Ecore_X_Event_Key_Up *e; + + e = ev; + if (e->keyname) free(e->keyname); + if (e->keysymbol) free(e->keysymbol); + if (e->key_compose) free(e->key_compose); free(e); } @@ -771,6 +782,15 @@ if (!e) return; e->name = ecore_x_window_prop_visible_icon_name_get(xevent->xproperty.window); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, e, _ecore_x_event_free_window_prop_visible_icon_name_change, NULL); + } + else if (xevent->xproperty.atom == _ecore_x_atom_wm_client_machine) + { + Ecore_X_Event_Window_Prop_Client_Machine_Change *e; + + e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Client_Machine_Change)); + if (!e) return; + e->name = ecore_x_window_prop_client_machine_get(xevent->xproperty.window); + ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, e, _ecore_x_event_free_window_prop_client_machine_change, NULL); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_x_private.h 12 Oct 2003 06:55:40 -0000 1.7 +++ ecore_x_private.h 12 Oct 2003 17:35:35 -0000 1.8 @@ -57,6 +57,7 @@ extern Atom _ecore_x_atom_wm_class; extern Atom _ecore_x_atom_wm_name; extern Atom _ecore_x_atom_wm_icon_name; +extern Atom _ecore_x_atom_wm_client_machine; extern Atom _ecore_x_atom_motif_wm_hints; extern Atom _ecore_x_atom_win_layer; extern Atom _ecore_x_atom_net_wm_desktop; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- ecore_x_window_prop.c 12 Oct 2003 06:55:40 -0000 1.10 +++ ecore_x_window_prop.c 12 Oct 2003 17:35:35 -0000 1.11 @@ -277,6 +277,37 @@ } /** + * Set a window client machine. + * @param win The window + * @param t The client machine string + * + * Set a window client machine string + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_client_machine_set(Ecore_X_Window win, const char *t) +{ + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, (char *)t); +} + +/** + * Get a window client machine string. + * @param win The window + * @return The windows client machine string + * + * Return the client machine of a window. String must be free'd when done with. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +char * +ecore_x_window_prop_client_machine_get(Ecore_X_Window win) +{ + char *name; + + name = ecore_x_window_prop_string_get(win, _ecore_x_atom_wm_client_machine); + return name; +} + +/** * Set a window name & class. * @param win The window * @param n The name string |
From: <enl...@li...> - 2003-10-12 17:55:30
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_private.h ecore_x_window.c Log Message: Set the default WM_CLIENT_MACHINE based on the results from gethostname, this is the "right way" to determine it according to NetWM's example. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_x_private.h 12 Oct 2003 17:35:35 -0000 1.8 +++ ecore_x_private.h 12 Oct 2003 17:55:28 -0000 1.9 @@ -1,6 +1,11 @@ #ifndef _ECORE_X_PRIVATE_H #define _ECORE_X_PRIVATE_H +#include <sys/param.h> +#ifndef MAXHOSTNAMELEN +#define MAXHOSTNAMELEN 256 +#endif + #define XK_MISCELLANY 1 #include <X11/Xlib.h> #include <X11/Xproto.h> =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore_x_window.c 9 Oct 2003 02:20:37 -0000 1.3 +++ ecore_x_window.c 12 Oct 2003 17:55:28 -0000 1.4 @@ -17,6 +17,7 @@ Ecore_X_Window ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h) { + char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -55,6 +56,10 @@ CWDontPropagate | CWEventMask, &attr); + + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); return win; } @@ -73,6 +78,7 @@ Ecore_X_Window ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h) { + char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -111,6 +117,10 @@ CWDontPropagate | CWEventMask, &attr); + + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); return win; } @@ -129,6 +139,7 @@ Ecore_X_Window ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h) { + char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -157,6 +168,10 @@ CWDontPropagate | CWEventMask, &attr); + + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); return win; } |
From: <enl...@li...> - 2003-10-13 16:03:21
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: ecore_x_window.c Log Message: Should probably only set the WM_CLIENT_MACHINE automatically for top-level windows. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- ecore_x_window.c 12 Oct 2003 17:55:28 -0000 1.4 +++ ecore_x_window.c 13 Oct 2003 16:02:41 -0000 1.5 @@ -57,9 +57,12 @@ CWEventMask, &attr); - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + if (parent == DefaultRootWindow(_ecore_x_disp)) + { + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); + } return win; } @@ -118,9 +121,12 @@ CWEventMask, &attr); - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + if (parent == DefaultRootWindow(_ecore_x_disp)) + { + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); + } return win; } @@ -169,9 +175,12 @@ CWEventMask, &attr); - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + if (parent == DefaultRootWindow(_ecore_x_disp)) + { + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_client_machine_set(win, buf); + } return win; } |
From: <enl...@li...> - 2003-10-13 16:30:09
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: Rmoeved API for changing the WM_CLIENT_MACHINE as this shouldn't change after window creation (afaik), easy enough to re-add it if a need is found. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_test.c 12 Oct 2003 17:35:35 -0000 1.6 +++ ecore_test.c 13 Oct 2003 16:28:30 -0000 1.7 @@ -519,14 +519,11 @@ printf("Visible icon Name: %s\n", tmp); free(tmp); tmp = ecore_x_window_prop_client_machine_get(win); - if (!tmp) + if (tmp) { - printf("No client machine, setting it to host.test.com\n"); - ecore_x_window_prop_client_machine_set(win, "host.test.com"); - tmp = ecore_x_window_prop_client_machine_get(win); + printf("Client machine: %s\n", tmp); + free(tmp); } - printf("Client machine: %s\n", tmp); - free(tmp); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); ecore_x_window_show(win); |
From: <enl...@li...> - 2003-10-13 16:30:22
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x_window.c ecore_x_window_prop.c Log Message: Rmoeved API for changing the WM_CLIENT_MACHINE as this shouldn't change after window creation (afaik), easy enough to re-add it if a need is found. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- Ecore_X.h 12 Oct 2003 17:35:35 -0000 1.10 +++ Ecore_X.h 13 Oct 2003 16:28:30 -0000 1.11 @@ -536,7 +536,6 @@ char *ecore_x_window_prop_icon_name_get(Ecore_X_Window win); void ecore_x_window_prop_visible_icon_name_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_visible_icon_name_get(Ecore_X_Window win); -void ecore_x_window_prop_client_machine_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_client_machine_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- ecore_x_window.c 13 Oct 2003 16:02:41 -0000 1.5 +++ ecore_x_window.c 13 Oct 2003 16:28:30 -0000 1.6 @@ -61,7 +61,8 @@ { gethostname(buf, MAXHOSTNAMELEN); buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, + (char *)buf); } return win; } @@ -125,7 +126,8 @@ { gethostname(buf, MAXHOSTNAMELEN); buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, + (char *)buf); } return win; } @@ -179,7 +181,8 @@ { gethostname(buf, MAXHOSTNAMELEN); buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_client_machine_set(win, buf); + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, + (char *)buf); } return win; } =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- ecore_x_window_prop.c 12 Oct 2003 17:35:35 -0000 1.11 +++ ecore_x_window_prop.c 13 Oct 2003 16:28:30 -0000 1.12 @@ -277,20 +277,6 @@ } /** - * Set a window client machine. - * @param win The window - * @param t The client machine string - * - * Set a window client machine string - * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> - */ -void -ecore_x_window_prop_client_machine_set(Ecore_X_Window win, const char *t) -{ - ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, (char *)t); -} - -/** * Get a window client machine string. * @param win The window * @return The windows client machine string |
From: <enl...@li...> - 2003-10-13 17:36:41
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: Missed assigning an event for client machine change. Also added support for _NET_WM_PID. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -3 -r1.7 -r1.8 --- ecore_test.c 13 Oct 2003 16:28:30 -0000 1.7 +++ ecore_test.c 13 Oct 2003 17:36:09 -0000 1.8 @@ -469,6 +469,25 @@ } int +handler_x_window_prop_pid_change(void *data, int type, void *event) +{ + Ecore_X_Event_Window_Prop_Pid_Change *e; + + e = event; + if (e->pid) + { + printf("Pid change to \"%d\" ", e->pid); + if (e->pid == getpid()) + printf("correct.\n"); + else + printf("INCORRECT!\n"); + } + else + printf("Pid deleted\n"); + return 1; +} + +int handler_x_window_prop_name_class_change(void *data, int type, void *event) { Ecore_X_Event_Window_Prop_Name_Class_Change *e; @@ -524,6 +543,7 @@ printf("Client machine: %s\n", tmp); free(tmp); } + printf("Pid: %d\n", ecore_x_window_prop_pid_get(win)); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); ecore_x_window_show(win); @@ -547,6 +567,8 @@ ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE, handler_x_window_prop_icon_name_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE, handler_x_window_prop_visible_icon_name_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, handler_x_window_prop_name_class_change, NULL); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, handler_x_window_prop_client_machine_change, NULL); + ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, handler_x_window_prop_pid_change, NULL); } #endif |
From: <enl...@li...> - 2003-10-13 17:36:41
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_events.c ecore_x_window.c ecore_x_window_prop.c Log Message: Missed assigning an event for client machine change. Also added support for _NET_WM_PID. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- Ecore_X.h 13 Oct 2003 16:28:30 -0000 1.11 +++ Ecore_X.h 13 Oct 2003 17:36:09 -0000 1.12 @@ -106,6 +106,7 @@ typedef struct _Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change Ecore_X_Event_Window_Prop_Visible_Icon_Name_Change; typedef struct _Ecore_X_Event_Window_Prop_Client_Machine_Change Ecore_X_Event_Window_Prop_Client_Machine_Change; typedef struct _Ecore_X_Event_Window_Prop_Name_Class_Change Ecore_X_Event_Window_Prop_Name_Class_Change; +typedef struct _Ecore_X_Event_Window_Prop_Pid_Change Ecore_X_Event_Window_Prop_Pid_Change; struct _Ecore_X_Event_Key_Down { @@ -409,6 +410,13 @@ Ecore_X_Time time; }; +struct _Ecore_X_Event_Window_Prop_Pid_Change +{ + Ecore_X_Window win; + pid_t pid; + Ecore_X_Time time; +}; + extern int ECORE_X_EVENT_KEY_DOWN; extern int ECORE_X_EVENT_KEY_UP; extern int ECORE_X_EVENT_MOUSE_BUTTON_DOWN; @@ -450,6 +458,7 @@ extern int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE; extern int ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE; +extern int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE; extern int ECORE_X_MODIFIER_SHIFT; extern int ECORE_X_MODIFIER_CTRL; @@ -524,6 +533,7 @@ void ecore_x_window_reparent(Ecore_X_Window win, Ecore_X_Window new_parent, int x, int y); void ecore_x_window_size_get(Ecore_X_Window win, int *w, int *h); void ecore_x_window_cursor_show(Ecore_X_Window win, int show); +void ecore_x_window_defaults_set(Ecore_X_Window win); void ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number); void ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, char *str); @@ -537,6 +547,7 @@ void ecore_x_window_prop_visible_icon_name_set(Ecore_X_Window win, const char *t); char *ecore_x_window_prop_visible_icon_name_get(Ecore_X_Window win); char *ecore_x_window_prop_client_machine_get(Ecore_X_Window win); +pid_t ecore_x_window_prop_pid_get(Ecore_X_Window win); void ecore_x_window_prop_name_class_set(Ecore_X_Window win, const char *n, const char *c); void ecore_x_window_prop_name_class_get(Ecore_X_Window win, char **n, char **c); void ecore_x_window_prop_protocol_set(Ecore_X_Window win, Ecore_X_WM_Protocol protocol, int on); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ecore_x.c 12 Oct 2003 22:39:12 -0000 1.13 +++ ecore_x.c 13 Oct 2003 17:36:09 -0000 1.14 @@ -98,6 +98,7 @@ int ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = 0; int ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE = 0; +int ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE = 0; int ECORE_X_MODIFIER_SHIFT = 0; int ECORE_X_MODIFIER_CTRL = 0; @@ -219,6 +220,8 @@ ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_PROP_ICON_NAME_CHANGE = ecore_event_type_new(); ECORE_X_EVENT_WINDOW_PROP_VISIBLE_ICON_NAME_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE = ecore_event_type_new(); + ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE = ecore_event_type_new(); } ECORE_X_MODIFIER_SHIFT = _ecore_x_key_mask_get(XK_Shift_L); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_x_events.c 12 Oct 2003 17:35:35 -0000 1.8 +++ ecore_x_events.c 13 Oct 2003 17:36:09 -0000 1.9 @@ -8,6 +8,7 @@ static void _ecore_x_event_free_window_prop_icon_name_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_visible_icon_name_change(void *data, void *ev); static void _ecore_x_event_free_window_prop_client_machine_change(void *data, void *ev); +static void _ecore_x_event_free_window_prop_pid_change(void *data, void *ev); static void _ecore_x_event_free_key_down(void *data, void *ev); static void _ecore_x_event_free_key_up(void *data, void *ev); static void _ecore_x_event_free_generic(void *data, void *ev); @@ -74,6 +75,15 @@ } static void +_ecore_x_event_free_window_prop_pid_change(void *data, void *ev) +{ + Ecore_X_Event_Window_Prop_Client_Machine_Change *e; + + e = ev; + free(e); +} + +static void _ecore_x_event_free_key_down(void *data, void *ev) { Ecore_X_Event_Key_Down *e; @@ -791,6 +801,15 @@ if (!e) return; e->name = ecore_x_window_prop_client_machine_get(xevent->xproperty.window); ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, e, _ecore_x_event_free_window_prop_client_machine_change, NULL); + } + else if (xevent->xproperty.atom == _ecore_x_atom_net_wm_pid) + { + Ecore_X_Event_Window_Prop_Pid_Change *e; + + e = calloc(1, sizeof(Ecore_X_Event_Window_Prop_Pid_Change)); + if (!e) return; + e->pid = ecore_x_window_prop_pid_get(xevent->xproperty.window); + ecore_event_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, e, _ecore_x_event_free_window_prop_pid_change, NULL); } else { =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- ecore_x_window.c 13 Oct 2003 16:28:30 -0000 1.6 +++ ecore_x_window.c 13 Oct 2003 17:36:09 -0000 1.7 @@ -17,7 +17,6 @@ Ecore_X_Window ecore_x_window_new(Ecore_X_Window parent, int x, int y, int w, int h) { - char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -57,13 +56,7 @@ CWEventMask, &attr); - if (parent == DefaultRootWindow(_ecore_x_disp)) - { - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, - (char *)buf); - } + if (parent == DefaultRootWindow(_ecore_x_disp)) ecore_x_window_defaults_set(win); return win; } @@ -82,7 +75,6 @@ Ecore_X_Window ecore_x_window_override_new(Ecore_X_Window parent, int x, int y, int w, int h) { - char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -122,13 +114,7 @@ CWEventMask, &attr); - if (parent == DefaultRootWindow(_ecore_x_disp)) - { - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, - (char *)buf); - } + if (parent == DefaultRootWindow(_ecore_x_disp)) ecore_x_window_defaults_set(win); return win; } @@ -147,7 +133,6 @@ Ecore_X_Window ecore_x_window_input_new(Ecore_X_Window parent, int x, int y, int w, int h) { - char buf[MAXHOSTNAMELEN]; Window win; XSetWindowAttributes attr; @@ -179,12 +164,37 @@ if (parent == DefaultRootWindow(_ecore_x_disp)) { - gethostname(buf, MAXHOSTNAMELEN); - buf[MAXHOSTNAMELEN - 1] = '\0'; - ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, - (char *)buf); } return win; +} + +/** + * Set defaults for a window + * @param win The window to set defaults + * + * Set defaults for a window + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_defaults_set(Ecore_X_Window win) +{ + long pid; + char buf[MAXHOSTNAMELEN]; + + /* + * Set WM_CLIENT_MACHINE. + */ + gethostname(buf, MAXHOSTNAMELEN); + buf[MAXHOSTNAMELEN - 1] = '\0'; + ecore_x_window_prop_string_set(win, _ecore_x_atom_wm_client_machine, + (char *)buf); + + /* + * Set _NET_WM_PID + */ + pid = getpid(); + ecore_x_window_prop_property_set(win, _ecore_x_atom_net_wm_pid, XA_CARDINAL, + 32, &pid, 1); } /** =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- ecore_x_window_prop.c 13 Oct 2003 16:28:30 -0000 1.12 +++ ecore_x_window_prop.c 13 Oct 2003 17:36:09 -0000 1.13 @@ -47,14 +47,14 @@ unsigned long num_ret = 0, bytes = 0, i; unsigned char *prop_ret = NULL; - if (!win) - win = DefaultRootWindow(_ecore_x_disp); + if (!win) win = DefaultRootWindow(_ecore_x_disp); ret = XGetWindowProperty(_ecore_x_disp, win, type, 0, LONG_MAX, False, format, &type_ret, &size_ret, &num_ret, &bytes, &prop_ret); - if (ret != Success) { - *data = NULL; - return 0; - } + if (ret != Success) + { + *data = NULL; + return 0; + } if (size != size_ret || !num_ret) { XFree(prop_ret); @@ -291,6 +291,28 @@ name = ecore_x_window_prop_string_get(win, _ecore_x_atom_wm_client_machine); return name; +} + +/** + * Get a windows process id + * @param win The window + * @return The windows process id + * + * Return the process id of a window. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +pid_t +ecore_x_window_prop_pid_get(Ecore_X_Window win) +{ + int num = 0; + long *tmp; + pid_t pid = 0; + + ecore_x_window_prop_property_get(win, _ecore_x_atom_net_wm_pid, XA_CARDINAL, + 32, &tmp, &num); + if (num && tmp) pid = (pid_t)(*tmp); + free(tmp); + return pid; } /** |
From: <enl...@li...> - 2003-10-14 19:12:15
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/bin Modified Files: ecore_test.c Log Message: Added setup for more netwm atoms, also API for working with the current desktop. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/bin/ecore_test.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- ecore_test.c 13 Oct 2003 17:36:09 -0000 1.8 +++ ecore_test.c 14 Oct 2003 19:11:35 -0000 1.9 @@ -386,9 +386,12 @@ handler_x_window_configure(void *data, int type, void *event) { Ecore_X_Event_Window_Configure *e; + const int desktop = 0; e = event; printf("Configure %i %i, %ix%i\n", e->x, e->y, e->w, e->h); + printf("Switching desktops to %d\n", desktop); + ecore_x_window_prop_desktop_request(e->win, desktop); return 1; } @@ -504,6 +507,7 @@ setup_ecore_x_test(void) { char *tmp; + long data[5] = { 1, 0, 0, 0, 0 }; win = ecore_x_window_new(0, 0, 0, 120, 60); ecore_x_window_prop_title_set(win, "Ecore Test Program"); @@ -545,6 +549,8 @@ } printf("Pid: %d\n", ecore_x_window_prop_pid_get(win)); ecore_x_window_prop_name_class_set(win, "ecore_test", "main"); + ecore_x_window_prop_desktop_set(win, 1); + printf("Window on desktop %u\n", ecore_x_window_prop_desktop_get(win)); ecore_x_window_prop_protocol_set(win, ECORE_X_WM_PROTOCOL_DELETE_REQUEST, 1); ecore_x_window_show(win); ecore_x_flush(); @@ -569,6 +575,7 @@ ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_NAME_CLASS_CHANGE, handler_x_window_prop_name_class_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_CLIENT_MACHINE_CHANGE, handler_x_window_prop_client_machine_change, NULL); ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROP_PID_CHANGE, handler_x_window_prop_pid_change, NULL); + } #endif |
From: <enl...@li...> - 2003-10-14 19:12:16
|
Enlightenment CVS committal Author : rbdpngn Project : e17 Module : libs/ecore Dir : e17/libs/ecore/src/lib/ecore_x Modified Files: Ecore_X.h ecore_x.c ecore_x_private.h ecore_x_window_prop.c Log Message: Added setup for more netwm atoms, also API for working with the current desktop. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/Ecore_X.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- Ecore_X.h 13 Oct 2003 17:36:09 -0000 1.12 +++ Ecore_X.h 14 Oct 2003 19:11:35 -0000 1.13 @@ -536,6 +536,7 @@ void ecore_x_window_defaults_set(Ecore_X_Window win); void ecore_x_window_prop_property_set(Ecore_X_Window win, Ecore_X_Atom type, Ecore_X_Atom format, int size, void *data, int number); +void ecore_x_window_prop_property_notify(Ecore_X_Window win, const char *type, long *data); void ecore_x_window_prop_string_set(Ecore_X_Window win, Ecore_X_Atom type, char *str); char *ecore_x_window_prop_string_get(Ecore_X_Window win, Ecore_X_Atom type); void ecore_x_window_prop_title_set(Ecore_X_Window win, const char *t); @@ -561,6 +562,9 @@ void ecore_x_window_prop_borderless_set(Ecore_X_Window win, int borderless); int ecore_x_window_prop_layer_set(Ecore_X_Window win, int layer); void ecore_x_window_prop_withdrawn_set(Ecore_X_Window win, int withdrawn); +void ecore_x_window_prop_desktop_request(Ecore_X_Window win, long desktop); +void ecore_x_window_prop_desktop_set(Ecore_X_Window win, long desktop); +long ecore_x_window_prop_desktop_get(Ecore_X_Window win); void ecore_x_window_shape_mask_set(Ecore_X_Window win, Ecore_X_Pixmap mask); =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- ecore_x.c 13 Oct 2003 17:36:09 -0000 1.14 +++ ecore_x.c 14 Oct 2003 19:11:35 -0000 1.15 @@ -24,6 +24,9 @@ int _ecore_x_event_last_root_x = 0; int _ecore_x_event_last_root_y = 0; +/* + * ICCCM and Motif hints. + */ Atom _ecore_x_atom_wm_delete_window = 0; Atom _ecore_x_atom_wm_take_focus = 0; Atom _ecore_x_atom_wm_protocols = 0; @@ -33,17 +36,34 @@ Atom _ecore_x_atom_wm_client_machine = 0; Atom _ecore_x_atom_motif_wm_hints = 0; Atom _ecore_x_atom_win_layer = 0; -Atom _ecore_x_atom_net_wm_desktop = 0; + +/* + * Root window NetWM hints. + */ +Atom _ecore_x_atom_net_supported = 0; +Atom _ecore_x_atom_net_client_list = 0; +Atom _ecore_x_atom_net_number_of_desktops = 0; +Atom _ecore_x_atom_net_desktop_geometry = 0; +Atom _ecore_x_atom_net_desktop_viewport = 0; Atom _ecore_x_atom_net_current_desktop = 0; +Atom _ecore_x_atom_net_desktop_names = 0; +Atom _ecore_x_atom_net_active_window = 0; +Atom _ecore_x_atom_net_workarea = 0; +Atom _ecore_x_atom_net_supporting_wm_check = 0; +Atom _ecore_x_atom_net_virtual_roots = 0; +Atom _ecore_x_atom_net_desktop_layout = 0; +Atom _ecore_x_atom_net_showing_desktop = 0; +/* + * Application window specific NetWM hints. + */ +Atom _ecore_x_atom_net_wm_desktop = 0; Atom _ecore_x_atom_net_wm_name = 0; Atom _ecore_x_atom_net_wm_visible_name = 0; Atom _ecore_x_atom_net_wm_icon_name = 0; Atom _ecore_x_atom_net_wm_visible_icon_name = 0; Atom _ecore_x_atom_net_wm_window_type = 0; Atom _ecore_x_atom_net_wm_state = 0; -Atom _ecore_x_atom_net_wm_state_above = 0; -Atom _ecore_x_atom_net_wm_state_below = 0; Atom _ecore_x_atom_net_wm_allowed_actions = 0; Atom _ecore_x_atom_net_wm_strut = 0; Atom _ecore_x_atom_net_wm_strut_partial = 0; @@ -53,6 +73,27 @@ Atom _ecore_x_atom_net_wm_handle_icons = 0; Atom _ecore_x_atom_net_wm_user_time = 0; +Atom _ecore_x_atom_net_wm_window_type_desktop = 0; +Atom _ecore_x_atom_net_wm_window_type_dock = 0; +Atom _ecore_x_atom_net_wm_window_type_toolbar = 0; +Atom _ecore_x_atom_net_wm_window_type_menu = 0; +Atom _ecore_x_atom_net_wm_window_type_utility = 0; +Atom _ecore_x_atom_net_wm_window_type_splash = 0; +Atom _ecore_x_atom_net_wm_window_type_dialog = 0; +Atom _ecore_x_atom_net_wm_window_type_normal = 0; + +Atom _ecore_x_atom_net_wm_state_modal = 0; +Atom _ecore_x_atom_net_wm_state_sticky = 0; +Atom _ecore_x_atom_net_wm_state_maximized_vert = 0; +Atom _ecore_x_atom_net_wm_state_maximized_horz = 0; +Atom _ecore_x_atom_net_wm_state_shaded = 0; +Atom _ecore_x_atom_net_wm_state_skip_taskbar = 0; +Atom _ecore_x_atom_net_wm_state_skip_pager = 0; +Atom _ecore_x_atom_net_wm_state_hidden = 0; +Atom _ecore_x_atom_net_wm_state_fullscreen = 0; +Atom _ecore_x_atom_net_wm_state_above = 0; +Atom _ecore_x_atom_net_wm_state_below = 0; + Atom _ecore_x_atom_utf8_string = 0; Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM] = {0}; @@ -267,8 +308,6 @@ _ecore_x_atom_net_wm_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_DESKTOP", False); _ecore_x_atom_net_wm_window_type = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE", False); _ecore_x_atom_net_wm_state = XInternAtom(_ecore_x_disp, "_NET_WM_STATE", False); - _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); - _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); _ecore_x_atom_net_wm_allowed_actions = XInternAtom(_ecore_x_disp, "_NET_WM_ALLOWED_ACTIONS", False); _ecore_x_atom_net_wm_strut = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT", False); _ecore_x_atom_net_wm_strut_partial = XInternAtom(_ecore_x_disp, "_NET_WM_STRUT_PARTIAL", False); @@ -277,7 +316,28 @@ _ecore_x_atom_net_wm_pid = XInternAtom(_ecore_x_disp, "_NET_WM_PID", False); _ecore_x_atom_net_wm_user_time = XInternAtom(_ecore_x_disp, "_NET_WM_USER_TIME", False); - _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); + _ecore_x_atom_net_wm_window_type_desktop = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DESKTOP", False); + _ecore_x_atom_net_wm_window_type_dock = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DOCK", False); + _ecore_x_atom_net_wm_window_type_toolbar = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_TOOLBAR", False); + _ecore_x_atom_net_wm_window_type_menu = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_MENU", False); + _ecore_x_atom_net_wm_window_type_utility = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_UTILITY", False); + _ecore_x_atom_net_wm_window_type_splash = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_SPLASH", False); + _ecore_x_atom_net_wm_window_type_dialog = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_DIALOG", False); + _ecore_x_atom_net_wm_window_type_normal = XInternAtom(_ecore_x_disp, "_NET_WM_WINDOW_TYPE_NORMAL", False); + + _ecore_x_atom_net_wm_state_modal = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MODAL", False); + _ecore_x_atom_net_wm_state_sticky = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_STICKY", False); + _ecore_x_atom_net_wm_state_maximized_vert = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MAXIMIZED_VERT", False); + _ecore_x_atom_net_wm_state_maximized_horz = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_MAXIMIZED_HORZ", False); + _ecore_x_atom_net_wm_state_shaded = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SHADED", False); + _ecore_x_atom_net_wm_state_skip_taskbar = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SKIP_TASKBAR", False); + _ecore_x_atom_net_wm_state_skip_pager = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_SKIP_PAGER", False); + _ecore_x_atom_net_wm_state_hidden = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_HIDDEN", False); + _ecore_x_atom_net_wm_state_fullscreen = XInternAtom(_ecore_x_disp, "_NET_WM_FULLSCREEN", False); + _ecore_x_atom_net_wm_state_above = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_ABOVE", False); + _ecore_x_atom_net_wm_state_below = XInternAtom(_ecore_x_disp, "_NET_WM_STATE_BELOW", False); + + _ecore_x_atom_utf8_string = XInternAtom(_ecore_x_disp, "UTF8_STRING", False); _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_DELETE_REQUEST] = _ecore_x_atom_wm_delete_window; _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_TAKE_FOCUS] = _ecore_x_atom_wm_take_focus; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_private.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- ecore_x_private.h 12 Oct 2003 17:55:28 -0000 1.9 +++ ecore_x_private.h 14 Oct 2003 19:11:35 -0000 1.10 @@ -87,6 +87,27 @@ extern Atom _ecore_x_atom_net_wm_handle_icons; extern Atom _ecore_x_atom_net_wm_user_time; +extern Atom _ecore_x_atom_net_wm_window_type_desktop; +extern Atom _ecore_x_atom_net_wm_window_type_dock; +extern Atom _ecore_x_atom_net_wm_window_type_toolbar; +extern Atom _ecore_x_atom_net_wm_window_type_menu; +extern Atom _ecore_x_atom_net_wm_window_type_utility; +extern Atom _ecore_x_atom_net_wm_window_type_splash; +extern Atom _ecore_x_atom_net_wm_window_type_dialog; +extern Atom _ecore_x_atom_net_wm_window_type_normal; + +extern Atom _ecore_x_atom_net_wm_state_modal; +extern Atom _ecore_x_atom_net_wm_state_sticky; +extern Atom _ecore_x_atom_net_wm_state_maximized_vert; +extern Atom _ecore_x_atom_net_wm_state_maximized_horz; +extern Atom _ecore_x_atom_net_wm_state_shaded; +extern Atom _ecore_x_atom_net_wm_state_skip_taskbar; +extern Atom _ecore_x_atom_net_wm_state_skip_pager; +extern Atom _ecore_x_atom_net_wm_state_hidden; +extern Atom _ecore_x_atom_net_wm_state_fullscreen; +extern Atom _ecore_x_atom_net_wm_state_above; +extern Atom _ecore_x_atom_net_wm_state_below; + extern Atom _ecore_x_atoms_wm_protocols[ECORE_X_WM_PROTOCOL_NUM]; extern Atom _ecore_x_atom_utf8_string; =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_window_prop.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- ecore_x_window_prop.c 13 Oct 2003 17:36:09 -0000 1.13 +++ ecore_x_window_prop.c 14 Oct 2003 19:11:35 -0000 1.14 @@ -85,6 +85,39 @@ } /** + * Send a property notify to a window. + * @param win The window + * @param type Type of notification + * @param data The data + * + * Send a property notify to a window. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_property_notify(Ecore_X_Window win, const char *type, long *data) +{ + Ecore_X_Atom tmp; + XClientMessageEvent xev; + + tmp = XInternAtom(_ecore_x_disp, type, False); + + xev.type = PropertyNotify; + xev.display = _ecore_x_disp; + xev.window = win; + xev.message_type = tmp; + xev.format = 32; + xev.data.l[0] = data[0]; + xev.data.l[1] = data[1]; + xev.data.l[2] = data[2]; + xev.data.l[3] = data[3]; + xev.data.l[4] = data[4]; + + XSendEvent(_ecore_x_disp, DefaultRootWindow(_ecore_x_disp), False, + (SubstructureNotifyMask | SubstructureRedirectMask), + (XEvent *)&xev); +} + +/** * Set a window string property. * @param win The window * @param type The property @@ -304,14 +337,17 @@ pid_t ecore_x_window_prop_pid_get(Ecore_X_Window win) { - int num = 0; - long *tmp; - pid_t pid = 0; + int num = 0; + pid_t pid = 0; + unsigned char *tmp = NULL; ecore_x_window_prop_property_get(win, _ecore_x_atom_net_wm_pid, XA_CARDINAL, 32, &tmp, &num); - if (num && tmp) pid = (pid_t)(*tmp); - free(tmp); + if ((num) && (tmp)) + { + pid = (pid_t)(*tmp); + free(tmp); + } return pid; } @@ -636,36 +672,43 @@ unsigned char *data = NULL; int i, val = 4, num = 0; /* normal layer */ - if (layer < 0) { /* below */ + if (layer < 0) /* below */ + { atom = _ecore_x_atom_net_wm_state_below; val = 2; - } else if (layer > 0) { /* above */ + } + else if (layer > 0) /* above */ + { atom = _ecore_x_atom_net_wm_state_above; val = 6; - } + } /* set the NetWM atoms * get the atoms that are already set */ if (ecore_x_window_prop_property_get(win, _ecore_x_atom_net_wm_state, - XA_ATOM, 32, &data, &num)) { + XA_ATOM, 32, &data, &num)) + { /* and set the ones we're interested in */ - for (i = 0; i < num; i++) - if (data[i] == _ecore_x_atom_net_wm_state_below) - data[i] = (layer < 0); - else if (data[i] == _ecore_x_atom_net_wm_state_above) - data[i] = (layer > 0); - - ecore_x_window_prop_property_set(win, _ecore_x_atom_net_wm_state, - XA_ATOM, 32, data, num); - free(data); - } else + for (i = 0; i < num; i++) + { + if (data[i] == _ecore_x_atom_net_wm_state_below) + data[i] = (layer < 0); + else if (data[i] == _ecore_x_atom_net_wm_state_above) + data[i] = (layer > 0); + } + + ecore_x_window_prop_property_set(win, _ecore_x_atom_net_wm_state, + XA_ATOM, 32, data, num); + free(data); + } + else ecore_x_window_prop_property_set(win, _ecore_x_atom_net_wm_state, XA_ATOM, 32, &atom, 1); /* set the gnome atom */ - ecore_x_window_prop_property_set(win, _ecore_x_atom_win_layer, - XA_CARDINAL, 32, &val, 1); + ecore_x_window_prop_property_set(win, _ecore_x_atom_win_layer, + XA_CARDINAL, 32, &val, 1); return 1; } @@ -696,3 +739,63 @@ XSetWMNormalHints(_ecore_x_disp, win, (XSizeHints *) &hints); } +/** + * Request the window manager to change this windows desktop. + * @param win The Window + * @param desktop The desktop number. + * + * Request the window manager to change this windows desktop. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_desktop_request(Ecore_X_Window win, long desktop) +{ + long data[5]; + + data[0] = desktop; + data[1] = 0; + data[2] = 0; + data[3] = 0; + data[4] = 0; + ecore_x_window_prop_property_notify(win, "_NET_WM_DESKTOP", data); +} + +/** + * Used by the window manager, or client prior mapping, to set window desktop. + * @param win The Window + * @param desktop The desktop number. + * + * Used by the window manager, or client prior mapping, to set window desktop. + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +void +ecore_x_window_prop_desktop_set(Ecore_X_Window win, long desktop) +{ + ecore_x_window_prop_property_set(win, _ecore_x_atom_net_wm_desktop, + XA_CARDINAL, 32, &desktop, 1); +} + +/** + * Get the current desktop of a window + * @param win The Window + * + * Get the current desktop of a window + * <hr><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> + */ +long +ecore_x_window_prop_desktop_get(Ecore_X_Window win) +{ + int num; + unsigned char *tmp; + long desktop = -1; + + ecore_x_window_prop_property_get(win, _ecore_x_atom_net_wm_desktop, + XA_CARDINAL, 32, &tmp, &num); + if ((tmp) && (num)) + { + desktop = *(long *)tmp; + free(tmp); + } + + return desktop; +} |