Hello community, here is the log from the commit of package compiz checked in at Sat Jun 3 00:52:40 CEST 2006. -------- --- compiz/compiz.changes 2006-05-26 22:53:00.000000000 +0200 +++ compiz/compiz.changes 2006-06-02 15:01:31.000000000 +0200 @@ -1,0 +2,15 @@ +Fri Jun 2 14:39:17 CEST 2006 - dreveman@suse.de + +- Don't show fallback name in titlebar. (bnc 173059) +- Fix keyboard movement issues. (bnc 179902) +- Fix clipping issue with switcher. (bnc 179828) +- Disable skydome animation while cube is unfolded. (bnc 179833) +- Save initial viewport when startup notification is received. + (bnc 180224) +- Add hide_skip_taskbar_windows option. (bnc 180055) +- Set _NET_WM_DESKTOP on all windows to 0; KDE's pager and + tasklist require this to be set. (bnc 178320) +- Hide tooltips on NotifyGrab. (bnc 180692) +- Include java window placement workaround. (bnc 151836) + +------------------------------------------------------------------- Old: ---- compiz-0.0.11.tar.bz2 New: ---- compiz-0.0.12.tar.bz2 java-config-notify.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ compiz.spec ++++++ --- /var/tmp/diff_new_pack.ZS8PZd/_old 2006-06-03 00:52:14.000000000 +0200 +++ /var/tmp/diff_new_pack.ZS8PZd/_new 2006-06-03 00:52:14.000000000 +0200 @@ -1,5 +1,5 @@ # -# spec file for package compiz (Version cvs_060526) +# spec file for package compiz (Version cvs_060602) # # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany. # This file and all modifications and additions to the pristine @@ -17,20 +17,21 @@ PreReq: %fillup_prereq Requires: libpng libdrm gconf2 gtk2 gnome-desktop control-center2 libsvg libsvg-cairo libwnck xgl-hardware-list >= 060526 Autoreqprov: on -Version: cvs_060526 -Release: 2 +Version: cvs_060602 +Release: 1 Summary: OpenGL window and compositing manager. BuildRoot: %{_tmppath}/%{name}-%{version}-build ExclusiveArch: %ix86 x86_64 ppc ppc64 ia64 ### /bin/ls *.tar.{gz,bz2} 2>/dev/null|perl -ne 'print "Source$n: ".$_; $n++;' Source: Mesa-CVS-20060502.tar.bz2 -Source1: compiz-0.0.11.tar.bz2 +Source1: compiz-0.0.12.tar.bz2 Source2: gnome-xgl-settings-0.6.tar.gz ### /bin/ls *.{diff,patch} | perl -ne 'print "Patch$n: ".$_; $n++;' Patch: Mesa-6.4.1-x86_64-fixes-1.patch Patch1: Mesa-configs.diff Patch2: compiz-audible-bell-off.patch Patch3: compiz-wobbly-off.patch +Patch4: java-config-notify.diff %description Compiz is an OpenGL compositing manager that use @@ -51,8 +52,9 @@ %setup -q -n . -D -T -b 0 -b 1 -b 2 patch -d Mesa -p0 < $RPM_SOURCE_DIR/Mesa-6.4.1-x86_64-fixes-1.patch patch -d Mesa -p0 < $RPM_SOURCE_DIR/Mesa-configs.diff -patch -d compiz-0.0.11 -p0 < $RPM_SOURCE_DIR/compiz-audible-bell-off.patch -patch -d compiz-0.0.11 -p0 < $RPM_SOURCE_DIR/compiz-wobbly-off.patch +patch -d compiz-0.0.12 -p0 < $RPM_SOURCE_DIR/compiz-audible-bell-off.patch +patch -d compiz-0.0.12 -p0 < $RPM_SOURCE_DIR/compiz-wobbly-off.patch +patch -d compiz-0.0.12 -p0 < $RPM_SOURCE_DIR/java-config-notify.diff %build PREFIX=/usr @@ -138,6 +140,18 @@ /etc/opt/gnome/gconf/schemas/compiz.schemas %changelog -n compiz +* Fri Jun 02 2006 - dreveman@suse.de +- Don't show fallback name in titlebar. (bnc 173059) +- Fix keyboard movement issues. (bnc 179902) +- Fix clipping issue with switcher. (bnc 179828) +- Disable skydome animation while cube is unfolded. (bnc 179833) +- Save initial viewport when startup notification is received. + (bnc 180224) +- Add hide_skip_taskbar_windows option. (bnc 180055) +- Set _NET_WM_DESKTOP on all windows to 0; KDE's pager and + tasklist require this to be set. (bnc 178320) +- Hide tooltips on NotifyGrab. (bnc 180692) +- Include java window placement workaround. (bnc 151836) * Fri May 26 2006 - danw@suse.de - Update gnome-xgl-settings to 0.6, fixing: - Don't consider 3D to be configured unless it's configured with ++++++ compiz-0.0.11.tar.bz2 -> compiz-0.0.12.tar.bz2 ++++++ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/ChangeLog new/compiz-0.0.12/ChangeLog --- old/compiz-0.0.11/ChangeLog 2006-05-26 12:05:57.000000000 +0200 +++ new/compiz-0.0.12/ChangeLog 2006-06-02 14:10:09.000000000 +0200 @@ -1,3 +1,69 @@ +2006-06-02 David Reveman <davidr@novell.com> + + * configure.ac: Bump version to 0.0.12. + + * src/event.c (handleEvent): Fix typo. + + * gnome/window-decorator/gnome-window-decorator.c: + Hide tooltips on NotifyGrab. (bnc #180692) + +2006-06-01 Dan Winship <danw@novell.com> + + * src/event.c (handleEvent): If we receive a _NET_SHOWING_DESKTOP + request with no window set, set the flag on all screens. (Fixes + the KDE "show desktop" applet.) Also, don't allow a client to + change its _NET_WM_DESKTOP. + + * src/window.c (addWindow): Set _NET_WM_DESKTOP on all windows to + 0; KDE's pager and tasklist require this to be set. (bnc 178320) + +2006-06-01 David Reveman <davidr@novell.com> + + * include/compiz.h: + * src/window.c: Add updateWindowClass. + +2006-05-31 David Reveman <davidr@novell.com> + + * include/compiz.h: + * src/screen.c: + * src/display.c: Add hide_skip_taskbar_windows option. (bnc 180055) + + * include/compiz.h: + * src/window.c: Add getStartupId. + + * src/screen.c: Save initial viewport when startup notification + is received. Fix implementation of applyStartupProperties. + (bnc 180224) + + * src/event.c (handleEvent): Handle startup ID property changes. + + * plugins/place.c: Adjust work area to initial viewport. + + * plugins/cube.c (cubePaintTransformedScreen): Disable skydome + animation while cube is unfolded. (bnc 179833) + + * plugins/switcher.c (switchPaintWindow): Make sure selected window is + not clipped incorrectly when some window is transformed. (bnc 179828) + + * plugins/move.c (moveHandleEvent): Initialize xRoot and yRoot. + (bnc 179902) + + * src/Makefile.am (INCLUDES): Add @GL_CFLAGS@. (Eric Work) + +2006-05-30 Dan Winship <danw@novell.com> + + * configure.ac: Check libwnck for wnck_window_has_name (new in + HEAD). + + * gnome/window-decorator/gnome-window-decorator.c + (wnck_window_get_real_name): #if HAVE_WNCK_WINDOW_HAS_NAME, + redefine wnck_window_get_name to return NULL if the window only + has a fallback name. bnc 173059. + + * src/event.c (handleEvent): call moveInputFocusToOtherWindow() + before destroyWindow() when processing a DestroyNotify, or else + the input focus can get stranded. + 2006-05-26 David Reveman <davidr@novell.com> * plugins/compiz.schemas.in.in: Regen. diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/config.h.in new/compiz-0.0.12/config.h.in --- old/compiz-0.0.11/config.h.in 2006-05-21 15:19:24.000000000 +0200 +++ new/compiz-0.0.12/config.h.in 2006-06-02 14:10:42.000000000 +0200 @@ -54,6 +54,9 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to 1 if you have the `wnck_window_has_name' function. */ +#undef HAVE_WNCK_WINDOW_HAS_NAME + /* Name of package */ #undef PACKAGE diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/configure new/compiz-0.0.12/configure --- old/compiz-0.0.11/configure 2006-05-21 15:19:14.000000000 +0200 +++ new/compiz-0.0.12/configure 2006-06-02 14:10:31.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59 for compiz 0.0.11. +# Generated by GNU Autoconf 2.59 for compiz 0.0.12. # # Report bugs to <davidr@novell.com>. # @@ -423,8 +423,8 @@ # Identity of this package. PACKAGE_NAME='compiz' PACKAGE_TARNAME='compiz' -PACKAGE_VERSION='0.0.11' -PACKAGE_STRING='compiz 0.0.11' +PACKAGE_VERSION='0.0.12' +PACKAGE_STRING='compiz 0.0.12' PACKAGE_BUGREPORT='davidr@novell.com' # Factoring default headers for most tests. @@ -1013,7 +1013,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures compiz 0.0.11 to adapt to many kinds of systems. +\`configure' configures compiz 0.0.12 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1079,7 +1079,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of compiz 0.0.11:";; + short | recursive ) echo "Configuration of compiz 0.0.12:";; esac cat <<\_ACEOF @@ -1260,7 +1260,7 @@ test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF -compiz configure 0.0.11 +compiz configure 0.0.12 generated by GNU Autoconf 2.59 Copyright (C) 2003 Free Software Foundation, Inc. @@ -1274,7 +1274,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by compiz $as_me 0.0.11, which was +It was created by compiz $as_me 0.0.12, which was generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ @@ -1919,7 +1919,7 @@ # Define the identity of the package. PACKAGE='compiz' - VERSION='0.0.11' + VERSION='0.0.12' cat >>confdefs.h <<_ACEOF @@ -23153,6 +23153,116 @@ use_gnome=yes fi if test "x$use_gnome" = "xyes"; then + save_CFLAGS="$CFLAGS" + save_LIBSS="$LIBS" + CFLAGS="$CFLAGS $GNOME_WINDOW_DECORATOR_CFLAGS" + LIBS="$LIBS $GNOME_WINDOW_DECORATOR_LIBS" + +for ac_func in wnck_window_has_name +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_func" >&5 +echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6 +if eval "test \"\${$as_ac_var+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. + For example, HP-UX 11i <limits.h> declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include <limits.h> +#else +# include <assert.h> +#endif + +#undef $ac_func + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +{ +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_$ac_func) || defined (__stub___$ac_func) +choke me +#else +char (*f) () = $ac_func; +#endif +#ifdef __cplusplus +} +#endif + +int +main () +{ +return f != $ac_func; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +eval "$as_ac_var=no" +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +if test `eval echo '${'$as_ac_var'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + fi + if test "x$use_gnome" = "xyes"; then pkg_failed=no echo "$as_me:$LINENO: checking for GNOME_WINDOW_SETTINGS" >&5 @@ -23800,7 +23910,7 @@ } >&5 cat >&5 <<_CSEOF -This file was extended by compiz $as_me 0.0.11, which was +This file was extended by compiz $as_me 0.0.12, which was generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -23863,7 +23973,7 @@ cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -compiz config.status 0.0.11 +compiz config.status 0.0.12 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/configure.ac new/compiz-0.0.12/configure.ac --- old/compiz-0.0.11/configure.ac 2006-05-21 15:18:30.000000000 +0200 +++ new/compiz-0.0.12/configure.ac 2006-06-02 14:09:48.000000000 +0200 @@ -1,6 +1,6 @@ AC_PREREQ(2.57) -AC_INIT([compiz], [0.0.11], [davidr@novell.com]) +AC_INIT([compiz], [0.0.12], [davidr@novell.com]) AC_CONFIG_AUX_DIR(config) @@ -188,6 +188,15 @@ pangocairo, [use_gnome=yes], [use_gnome=no]) if test "x$use_gnome" = "xyes"; then + save_CFLAGS="$CFLAGS" + save_LIBSS="$LIBS" + CFLAGS="$CFLAGS $GNOME_WINDOW_DECORATOR_CFLAGS" + LIBS="$LIBS $GNOME_WINDOW_DECORATOR_LIBS" + AC_CHECK_FUNCS(wnck_window_has_name) + CFLAGS="$save_CFLAGS" + LIBS="$save_LIBS" + fi + if test "x$use_gnome" = "xyes"; then PKG_CHECK_MODULES(GNOME_WINDOW_SETTINGS, gnome-window-settings-2.0 gnome-desktop-2.0, [use_gnome=yes], [use_gnome=no]) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/gnome/window-decorator/gnome-window-decorator.c new/compiz-0.0.12/gnome/window-decorator/gnome-window-decorator.c --- old/compiz-0.0.11/gnome/window-decorator/gnome-window-decorator.c 2006-05-20 07:20:17.000000000 +0200 +++ new/compiz-0.0.12/gnome/window-decorator/gnome-window-decorator.c 2006-06-01 13:27:19.000000000 +0200 @@ -17,6 +17,10 @@ * Boston, MA 02111-1307, USA. */ +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + #include <X11/Xlib.h> #include <X11/Xatom.h> #include <X11/cursorfont.h> @@ -2407,6 +2411,15 @@ gdk_error_trap_pop (); } +#if HAVE_WNCK_WINDOW_HAS_NAME +static const char * +wnck_window_get_real_name (WnckWindow *win) +{ + return wnck_window_has_name (win) ? wnck_window_get_name (win) : NULL; +} +#define wnck_window_get_name wnck_window_get_real_name +#endif + static gint max_window_name_width (WnckWindow *win) { @@ -3439,8 +3452,7 @@ } break; case LeaveNotify: - if (xevent->xcrossing.mode != NotifyGrab) - hide_tooltip (); + hide_tooltip (); break; } } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/include/compiz.h new/compiz-0.0.12/include/compiz.h --- old/compiz-0.0.11/include/compiz.h 2006-05-25 05:43:37.000000000 +0200 +++ new/compiz-0.0.12/include/compiz.h 2006-06-02 04:41:57.000000000 +0200 @@ -420,7 +420,8 @@ #define COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED 49 #define COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_HORZ 50 #define COMP_DISPLAY_OPTION_TOGGLE_WINDOW_MAXIMIZED_VERT 51 -#define COMP_DISPLAY_OPTION_NUM 52 +#define COMP_DISPLAY_OPTION_HIDE_SKIP_TASKBAR_WINDOWS 52 +#define COMP_DISPLAY_OPTION_NUM 53 typedef CompOption *(*GetDisplayOptionsProc) (CompDisplay *display, int *count); @@ -487,6 +488,7 @@ Atom winBrightnessAtom; Atom winSaturationAtom; Atom winActiveAtom; + Atom winDesktopAtom; Atom workareaAtom; @@ -575,6 +577,8 @@ Atom versionAtom; Atom atomPairAtom; + Atom startupIdAtom; + unsigned int lastPing; CompTimeoutHandle pingHandle; @@ -1129,6 +1133,7 @@ typedef struct _CompStartupSequence { struct _CompStartupSequence *next; SnStartupSequence *sequence; + unsigned int viewport; } CompStartupSequence; typedef struct _CompFBConfig { @@ -1549,6 +1554,8 @@ int destroyRefCnt; int unmapRefCnt; + unsigned int initialViewport; + Bool placed; Bool minimized; Bool inShowDesktopMode; @@ -1676,6 +1683,12 @@ Window getClientLeader (CompWindow *w); +char * +getStartupId (CompWindow *w); + +void +updateWindowClass (CompWindow *w); + int getWmState (CompDisplay *display, Window id); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/plugins/cube.c new/compiz-0.0.12/plugins/cube.c --- old/compiz-0.0.11/plugins/cube.c 2006-05-25 16:22:05.000000000 +0200 +++ new/compiz-0.0.12/plugins/cube.c 2006-05-29 12:27:43.000000000 +0200 @@ -1097,7 +1097,7 @@ glPushMatrix (); - if (cs->animateSkyDome) + if (cs->animateSkyDome && cs->grabIndex == 0) { glRotatef (sAttrib->xRotate, 0.0f, 1.0f, 0.0f); glRotatef (sAttrib->vRotate / 5.0f + 90.0f, 1.0f, 0.0f, 0.0f); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/plugins/move.c new/compiz-0.0.12/plugins/move.c --- old/compiz-0.0.11/plugins/move.c 2006-05-25 06:17:45.000000000 +0200 +++ new/compiz-0.0.12/plugins/move.c 2006-05-31 16:37:11.000000000 +0200 @@ -492,10 +492,10 @@ if (event->xclient.data.l[2] == WmMoveResizeMoveKeyboard) { - warpPointer (d, - (w->attrib.x + w->width / 2) - pointerX, - (w->attrib.y + w->height / 2) - pointerY); + xRoot = w->attrib.x + (w->width / 2); + yRoot = w->attrib.y + (w->height / 2); + warpPointer (d, xRoot - pointerX, yRoot - pointerY); moveInitiate (w, xRoot, yRoot, 0); } else diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/plugins/place.c new/compiz-0.0.12/plugins/place.c --- old/compiz-0.0.11/plugins/place.c 2006-05-12 13:07:17.000000000 +0200 +++ new/compiz-0.0.12/plugins/place.c 2006-05-31 17:45:13.000000000 +0200 @@ -593,6 +593,8 @@ getOuterRectOfWindow (window, &rect); work_area = window->screen->workArea; + work_area.x += (window->initialViewport - window->screen->x) * + window->screen->width; center_tile_rect_in_area (&rect, &work_area); @@ -675,9 +677,15 @@ { CompWindow *wi; GList *windows; + XRectangle work_area; + int x0 = (window->initialViewport - window->screen->x) * + window->screen->width; PLACE_SCREEN (window->screen); + work_area = window->screen->workArea; + work_area.x += x0; + windows = NULL; switch (window->type) { @@ -703,7 +711,8 @@ if (window->type & CompWindowTypeFullscreenMask) { - x = y = 0; + x = x0; + y = 0; goto done_no_constraints; } @@ -711,10 +720,10 @@ CompWindowStateMaximizedHorzMask)) { if (window->state & CompWindowStateMaximizedVertMask) - y = window->screen->workArea.y + window->input.top; + y = work_area.y + window->input.top; if (window->state & CompWindowStateMaximizedHorzMask) - x = window->screen->workArea.x + window->input.left; + x = work_area.x + window->input.left; goto done; } @@ -842,7 +851,13 @@ */ for (wi = window->screen->windows; wi; wi = wi->next) { - if (WINDOW_INVISIBLE (wi)) + if (wi->attrib.map_state != IsViewable) + continue; + + if (wi->attrib.x >= work_area.x + work_area.width || + wi->attrib.x + wi->width <= work_area.x || + wi->attrib.y >= work_area.y + work_area.height || + wi->attrib.y + wi->height <= work_area.y) continue; if (wi->state & (CompWindowTypeDesktopMask | @@ -856,7 +871,8 @@ } /* "Origin" placement algorithm */ - x = y = 0; + x = x0; + y = 0; if (find_first_fit (window, windows, x, y, &x, &y)) goto done_check_denied_focus; @@ -942,22 +958,20 @@ g_list_free (windows); done: - if (x + window->width + window->input.right > - window->screen->workArea.x + window->screen->workArea.width) - x = window->screen->workArea.x + window->screen->workArea.width - - window->width - window->input.right; + if (x + window->width + window->input.right > work_area.x + work_area.width) + x = work_area.x + work_area.width - window->width - window->input.right; - if (x - window->input.left < window->screen->workArea.x) - x = window->screen->workArea.x + window->input.left; + if (x - window->input.left < work_area.x) + x = work_area.x + window->input.left; done_no_x_constraints: if (y + window->height + window->input.bottom > - window->screen->workArea.y + window->screen->workArea.height) - y = window->screen->workArea.y + window->screen->workArea.height + work_area.y + work_area.height) + y = work_area.y + work_area.height - window->height - window->input.bottom; - if (y - window->input.top < window->screen->workArea.y) - y = window->screen->workArea.y + window->input.top; + if (y - window->input.top < work_area.y) + y = work_area.y + window->input.top; done_no_constraints: *new_x = x; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/plugins/switcher.c new/compiz-0.0.12/plugins/switcher.c --- old/compiz-0.0.11/plugins/switcher.c 2006-05-26 02:11:36.000000000 +0200 +++ new/compiz-0.0.12/plugins/switcher.c 2006-05-29 12:16:15.000000000 +0200 @@ -1665,10 +1665,15 @@ glTranslatef (0.0f, 0.0f, MIN (ss->translate, ss->sTranslate)); } + glPushAttrib (GL_STENCIL_BUFFER_BIT); + glDisable (GL_STENCIL_TEST); + UNWRAP (ss, s, paintWindow); status = (*s->paintWindow) (w, attrib, region, mask); WRAP (ss, s, paintWindow, switchPaintWindow); + glPopAttrib (); + glPopMatrix (); } else if (ss->switching) @@ -1689,10 +1694,15 @@ glPushMatrix (); glTranslatef (0.0f, 0.0f, MIN (ss->translate, ss->sTranslate)); + glPushAttrib (GL_STENCIL_BUFFER_BIT); + glDisable (GL_STENCIL_TEST); + UNWRAP (ss, s, paintWindow); status = (*s->paintWindow) (w, &sAttrib, region, mask); WRAP (ss, s, paintWindow, switchPaintWindow); + glPopAttrib (); + glPopMatrix (); } else diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/Makefile.am new/compiz-0.0.12/src/Makefile.am --- old/compiz-0.0.11/src/Makefile.am 2006-03-03 11:06:41.000000000 +0100 +++ new/compiz-0.0.12/src/Makefile.am 2006-05-31 02:07:21.000000000 +0200 @@ -1,5 +1,6 @@ INCLUDES = \ @COMPIZ_CFLAGS@ \ + @GL_CFLAGS@ \ -I$(top_srcdir)/include \ -DPLUGINDIR=\"$(plugindir)\" \ -DIMAGEDIR=\"$(imagedir)\" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/Makefile.in new/compiz-0.0.12/src/Makefile.in --- old/compiz-0.0.11/src/Makefile.in 2006-05-21 15:19:13.000000000 +0200 +++ new/compiz-0.0.12/src/Makefile.in 2006-06-02 14:10:29.000000000 +0200 @@ -258,6 +258,7 @@ windowsettingslibdir = @windowsettingslibdir@ INCLUDES = \ @COMPIZ_CFLAGS@ \ + @GL_CFLAGS@ \ -I$(top_srcdir)/include \ -DPLUGINDIR=\"$(plugindir)\" \ -DIMAGEDIR=\"$(imagedir)\" diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/display.c new/compiz-0.0.12/src/display.c --- old/compiz-0.0.11/src/display.c 2006-05-24 23:01:45.000000000 +0200 +++ new/compiz-0.0.12/src/display.c 2006-06-02 04:41:57.000000000 +0200 @@ -140,6 +140,8 @@ #define AUDIBLE_BELL_DEFAULT TRUE +#define HIDE_SKIP_TASKBAR_WINDOWS_DEFAULT TRUE + #define NUM_OPTIONS(d) (sizeof ((d)->opt) / sizeof (CompOption)) static char *textureFilter[] = { "Fast", "Good", "Best" }; @@ -498,6 +500,14 @@ o->value.bind.type = CompBindingTypeNone; o->value.bind.u.key.modifiers = 0; o->value.bind.u.key.keycode = 0; + + o = &display->opt[COMP_DISPLAY_OPTION_HIDE_SKIP_TASKBAR_WINDOWS]; + o->name = "hide_skip_taskbar_windows"; + o->shortDesc = "Hide Skip Taskbar Windows"; + o->longDesc = "Hide windows not in taskbar when entering show " + "desktop mode"; + o->type = CompOptionTypeBool; + o->value.b = HIDE_SKIP_TASKBAR_WINDOWS_DEFAULT; } CompOption * @@ -579,6 +589,7 @@ case COMP_DISPLAY_OPTION_CLICK_TO_FOCUS: case COMP_DISPLAY_OPTION_AUTORAISE: case COMP_DISPLAY_OPTION_RAISE_ON_CLICK: + case COMP_DISPLAY_OPTION_HIDE_SKIP_TASKBAR_WINDOWS: if (compSetBoolOption (o, value)) return TRUE; break; @@ -1780,6 +1791,8 @@ d->winActiveAtom = XInternAtom (dpy, "_NET_ACTIVE_WINDOW", 0); + d->winDesktopAtom = XInternAtom (dpy, "_NET_WM_DESKTOP", 0); + d->workareaAtom = XInternAtom (dpy, "_NET_WORKAREA", 0); d->desktopViewportAtom = XInternAtom (dpy, "_NET_DESKTOP_VIEWPORT", 0); @@ -1893,6 +1906,8 @@ d->versionAtom = XInternAtom (dpy, "VERSION", 0); d->atomPairAtom = XInternAtom (dpy, "ATOM_PAIR", 0); + d->startupIdAtom = XInternAtom (dpy, "_NET_STARTUP_ID", 0); + d->snDisplay = sn_display_new (dpy, NULL, NULL); if (!d->snDisplay) return FALSE; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/event.c new/compiz-0.0.12/src/event.c --- old/compiz-0.0.11/src/event.c 2006-05-25 15:54:12.000000000 +0200 +++ new/compiz-0.0.12/src/event.c 2006-06-02 14:06:20.000000000 +0200 @@ -313,8 +313,8 @@ w = findWindowAtDisplay (d, event->xdestroywindow.window); if (w) { - destroyWindow (w); moveInputFocusToOtherWindow (w); + destroyWindow (w); } break; case MapNotify: @@ -1012,6 +1012,24 @@ if (w) freeWindowIcons (w); } + else if (event->xproperty.atom == d->startupIdAtom) + { + w = findWindowAtDisplay (d, event->xproperty.window); + if (w) + { + if (w->startupId) + free (w->startupId); + + w->startupId = getStartupId (w); + } + } + else if (event->xproperty.atom == d->winDesktopAtom) + { + if (getWindowProp32 (d, event->xproperty.window, + d->winDesktopAtom, 1) != 0) + setWindowProp32 (d, event->xproperty.window, + d->winDesktopAtom, 0); + } break; case MotionNotify: break; @@ -1249,13 +1267,16 @@ } else if (event->xclient.message_type == d->showingDesktopAtom) { - s = findScreenAtDisplay (d, event->xclient.window); - if (s) + for (s = d->screens; s; s = s->next) { - if (event->xclient.data.l[0]) - enterShowDesktopMode (s); - else - leaveShowDesktopMode (s, NULL); + if (event->xclient.window == s->root || + event->xclient.window == None) + { + if (event->xclient.data.l[0]) + enterShowDesktopMode (s); + else + leaveShowDesktopMode (s, NULL); + } } } break; @@ -1275,6 +1296,10 @@ if (!(w->state & CompWindowStateHiddenMask)) { + w->initialViewport = w->screen->x; + + applyStartupProperties (w->screen, w); + XMapWindow (d->display, event->xmaprequest.window); updateWindowAttributes (w, FALSE); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/screen.c new/compiz-0.0.12/src/screen.c --- old/compiz-0.0.11/src/screen.c 2006-05-21 14:23:26.000000000 +0200 +++ new/compiz-0.0.12/src/screen.c 2006-05-31 15:36:15.000000000 +0200 @@ -368,6 +368,7 @@ s->next = screen->startupSequences; s->sequence = sequence; + s->viewport = screen->x; screen->startupSequences = s; @@ -2588,79 +2589,50 @@ applyStartupProperties (CompScreen *screen, CompWindow *window) { - CompStartupSequence *s = NULL; + CompStartupSequence *s; const char *startupId = window->startupId; - printf ("Applying startup props to %d id \"%s\"\n", - (int) window->id, window->startupId ? window->startupId : "(none)"); - if (!startupId) { - const char *wmClass; - - for (s = screen->startupSequences; s; s = s->next) - { - wmClass = sn_startup_sequence_get_wmclass (s->sequence); - if (!wmClass) - continue; - - if ((window->resClass && strcmp (wmClass, window->resClass) == 0) || - (window->resName && strcmp (wmClass, window->resName) == 0)) - { - startupId = sn_startup_sequence_get_id (s->sequence); + CompWindow *leader; - window->startupId = strdup (startupId); - - printf ("Ending legacy sequence %s due to window %d\n", - startupId, (int) window->id); - - sn_startup_sequence_complete (s->sequence); - break; - } - } + leader = findWindowAtScreen (screen, window->clientLeader); + if (leader) + startupId = leader->startupId; if (!startupId) return; } - if (!s) + for (s = screen->startupSequences; s; s = s->next) { const char *id; - for (s = screen->startupSequences; s; s = s->next) - { - id = sn_startup_sequence_get_id (s->sequence); - - if (strcmp (id, startupId) == 0) - break; - } + id = sn_startup_sequence_get_id (s->sequence); + if (strcmp (id, startupId) == 0) + break; } if (s) - { - printf ("Found startup sequence for window %d ID \"%s\"\n", - (int) window->id, startupId); - } - else - { - printf ("Did not find startup sequence for window %d ID \"%s\"\n", - (int) window->id, startupId); - } + window->initialViewport = s->viewport; } void enterShowDesktopMode (CompScreen *s) { + CompDisplay *d = s->display; CompWindow *w; unsigned long data = 1; int count = 0; + CompOption *st = &d->opt[COMP_DISPLAY_OPTION_HIDE_SKIP_TASKBAR_WINDOWS]; s->showingDesktopMask = ~(CompWindowTypeDesktopMask | CompWindowTypeDockMask); for (w = s->windows; w; w = w->next) { - if (s->showingDesktopMask & w->type) + if ((s->showingDesktopMask & w->type) && + (!(w->state & CompWindowStateSkipTaskbarMask) || st->value.b)) { if ((*s->focusWindow) (w)) { diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/compiz-0.0.11/src/window.c new/compiz-0.0.12/src/window.c --- old/compiz-0.0.11/src/window.c 2006-05-26 03:46:05.000000000 +0200 +++ new/compiz-0.0.12/src/window.c 2006-06-02 14:01:23.000000000 +0200 @@ -311,6 +311,63 @@ return getClientLeaderOfAncestor (w); } +char * +getStartupId (CompWindow *w) +{ + Atom actual; + int result, format; + unsigned long n, left; + unsigned char *data; + + result = XGetWindowProperty (w->screen->display->display, w->id, + w->screen->display->startupIdAtom, + 0L, 1024L, False, + w->screen->display->utf8StringAtom, + &actual, &format, + &n, &left, &data); + + if (result == Success && n && data) + { + char *id; + + id = strdup ((char *) data); + XFree ((void *) data); + + return id; + } + + return NULL; +} + +void +updateWindowClass (CompWindow *w) +{ + XClassHint classHint; + int status; + + if (w->resName) + { + free (w->resName); + w->resName = NULL; + } + + if (w->resClass) + { + free (w->resClass); + w->resClass = NULL; + } + + status = XGetClassHint (w->screen->display->display, w->id, &classHint); + if (status) + { + if (classHint.res_name) + w->resName = strdup (classHint.res_name); + + if (classHint.res_class) + w->resClass = strdup (classHint.res_class); + } +} + int getWmState (CompDisplay *display, Window id) @@ -1349,6 +1406,8 @@ w->inShowDesktopMode = FALSE; w->hidden = FALSE; + w->initialViewport = screen->x; + w->pendingUnmaps = 0; w->startupId = NULL; @@ -1537,10 +1596,16 @@ updateWmHints (w); + setWindowProp32 (w->screen->display, w->id, + w->screen->display->winDesktopAtom, + 0); + XGetTransientForHint (w->screen->display->display, w->id, &w->transientFor); w->clientLeader = getClientLeader (w); + if (!w->clientLeader) + w->startupId = getStartupId (w); w->wmType = getWindowType (w->screen->display, w->id); @@ -3531,6 +3596,9 @@ CompWindowTypeDockMask)) return FALSE; + if (w->initialViewport != w->screen->x) + return FALSE; + if (!w->inputHint && !(w->protocols & CompWindowProtocolTakeFocusMask)) return FALSE; ++++++ java-config-notify.diff ++++++ --- src/event.c 31 May 2006 21:50:37 -0000 1.45 +++ src/event.c 1 Jun 2006 12:01:07 -0000 @@ -1288,6 +1288,8 @@ { w->initialViewport = w->screen->x; + updateWindowClass (w); + applyStartupProperties (w->screen, w); XMapWindow (d->display, event->xmaprequest.window); --- src/window.c 1 Jun 2006 11:58:13 -0000 1.52 +++ src/window.c 1 Jun 2006 12:01:08 -0000 @@ -2286,6 +2286,9 @@ } XConfigureWindow (w->screen->display->display, w->id, xwcm, xwc); + + if (w->resName && strncmp (w->resName, "sun-awt-X11", 11) == 0) + sendConfigureNotify (w); } void @@ -2301,6 +2304,9 @@ XMoveWindow (w->screen->display->display, w->frame, w->attrib.x - w->input.left, w->attrib.y - w->input.top); + + if (w->resName && strncmp (w->resName, "sun-awt-X11", 11) == 0) + sendConfigureNotify (w); } } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit-unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit-help@opensuse.org
participants (1)
-
root@suse.de