A new compiz release 0.7.0 is now available from: http://xorg.freedesktop.org/archive/individual/app/compiz-0.7.0.tar.gz which can be verified with: http://xorg.freedesktop.org/archive/individual/app/compiz-0.7.0.tar.gz.sha1 59b019b6cd627140f44006876ee2b0c3ab92f150 compiz-0.7.0.tar.gz http://xorg.freedesktop.org/archive/individual/app/compiz-0.7.0.tar.gz.sha1.asc (signed by Dennis Kasprzyk) Additionally, a git clone of the source tree: git clone git://git.freedesktop.org/git/xorg/app/compiz will include a signed compiz-0.7.0 tag which points to a commit named: a6763350ba9a578e9df6adbdb7eadc174015c960 which can be verified with: git verify-tag compiz-0.7.0 and can be checked out with a command such as: git checkout -b build compiz-0.7.0 WHAT'S NEW ========== A core plugin has been added that allows handling certain core APIs, such as querying the ABI version, similarly to plugin APIs, allowing sharing more code. Added a simple object system, which generalize the privates mechanism and the plugin system. It allows to share more code between display, screen and window objects. It also makes it possible to properly introduce new object types without changing the plugin interface or breaking the API. Multi-display support. Various fixes in ICCCM compliance, window stacking and focus handling. Validity checking of ConfigureRequest events. Fixes to transient children placement in place plugin. Hooks have been added to the cube plugin which allow better control of viewport drawing. Middle and right click actions have been made configurable in gtk-window-decorator. Gtk-window-decorator now optionally allows mouse wheel title bar actions, such as shading. A KDE4 port of the kde-window-decorator has been added. Frequent crashes of kde-window-decorator for some people have been fixed. Regards, Dennis Changes since compiz-0.5.4: Alyssa Hung (1): * Also account for window borders when ensuring that transient windows are fully visible on the current workspace. C-F Language team (3): translation updates translation updates translation update Compiz Fusion l10n team (1): Translations update Danny Baumann (168): Add edge action for "Show desktop". Never modify w->state outside changeWindowState function. Don't save last window state in CompWindow structure. Coding style adjustments. Added button bindings for initiating scale. Added button bindings for rotating left/right. Only show resize rectangle on the screen the resized window is on. Re-add rotate_right_key option to metadata which was removed by accident. Only assign the default shadow to windows which use default decorations. Fix copy'n'paste mistake. Free core private index, not display private index. Remove frame window property on removing the window frame. Minor cleanup. Remove Metacity bell settings integration. Added mouse wheel handling to g-w-d. Integrate Metacity's configurable middle and right click actions. Correct default behaviour of middle mouse button: It should be lowering the window, not raising it. Added minimization as title bar button action. Fixed Gconf setting parsing for title bar button actions. XineramaQueryScreens is not guaranteed to set the number parameter to zero if it returns NULL, so better initialize the parameter properly. Properly remove window decorations on plugin unload. Use normal mode for maximized windows. Translation update for pt by Nicolau Goncalves. Translation update for it by Milo Casagrande. Check for changes to the override_redirect flag on window map. Recalculate window type and window actions if override_redirect state changed. Handle MapRequest event after core so that decorWindowUpdate sees window type and override_redirect state changes that might have happened during event processing. Re-query Xinerama information on root window reshape. Always update event windows when the allowed actions have changed. Revert "Handle MapRequest event after core so that decorWindowUpdate sees window type and override_redirect state changes that might have happened during event processing." Call matchPropertyChanged handler when the override_redirect flag changed. Allow plugins to not only clear allowed window actions, but also to add allowed actions. Bump ABIVERSION. Whitespace and formatting improvements. Only copy structures when needed. Formatting fix. Include compiz-core.h before Xrender.h because newer versions of Xrender headers need Xlib.h included first. Fix whitespace. Minor cleanup. Add minimum and maximum restrictions for opacity values. Only apply clipping planes when the cube is actually rotated. Fix whitespacing. Don't wrap into functions when not needed. Use matrixTranslate instead of ScreenPaintAttrib. Use matrixTranslate instead of ScreenPaintAttrib. Greek translation update by jimdusis@yahoo.gr. Added CubePostPaintViewportProc. Added paintAllViewports variable. Minor beautification. Bump ABIVERSION. Make sure the position is randomized only for windows that are smaller than the workarea. Translation updates for gl, nb, sv and tr. Sort LINGUAS list alphabetically and remove duplicate item. Update decoration with a timer after resize. Rename focusWindowOnMap to allowWindowFocus and make it use the current window viewport, not the initial one. Support restack requests in ConfigureRequest events. Don't restack windows on map if their focus should be prevented. Fix map and restack ordering. Fix full window frame being painted once after shading. Fix warning. el translation update. Closes bug #12593. Delete property first and delete frame window after that to avoid race conditions. Use focus stealing prevention for application initiated active window change requests. Move input (if desired) focus after mapping the window. We don't need to care about converting the returned name string. Focus default window after switching viewports. We always need to restack windows on map. Newly created windows are placed on top of the stack first, which is not desired for some windows that may be denied focus (such as desktop windows). Sort windows that are present before the WM starts. Fix variable naming. Don't restack desktop windows. They are placed correctly by updateWindowAttributes. An aboveId of None means that the window was placed on bottom of the stack, so also update the linked list accordingly. Don't touch override_redirect windows on initial sorting. Send synthetic configure notify events where needed according to ICCCM chapter 4.1.5. Remove initial stack sanitization. glGetString is allowed to return NULL in case an error happened, so avoid crashing in this case and bail out instead. Always use the old geometry passed to addWindowSizeChanges for comparisons. Fix handling of ConfigureRequest events with CWStackMode set, but without CWSibling set. Correct handling of grab window in case it is destroyed. Fix findLowestSiblingBelow function for desktop windows. Immediately update the internal stack representation on stack changes caused by MapRequest events. Fix typo. Also update saved X position. Don't prevent focus for desktop and dock windows on arrival of a _NET_ACTIVE_WINDOW message. Use client message timestamp rather than window user time when processing focus stealing prevention on _NET_ACTIVE_WINDOW messages. We have a CompScreen* variable, use it. Update saved window coordinates when window is resized by some client. Minor cleanup. Clear all coordinates that match the server coordinates from the configure request mask to make sure a synthetic configure notify event is sent whenever needed. We have to send the WM_TAKE_FOCUS message even if we directly set the input focus. Cleanup. Only send synthetic ConfigureNotify when ignoring ConfigureRequest events. Use real screen number rather than 0. Use real screen number rather than 0. Get private pointer for the current screen. Run external commands with a DISPLAY string adjusted for the screen number that was passed to runCommand. putenv doesn't work properly with dynamically allocated strings that are free'd right after the putenv call. Always allow focus for active window. Added close window button and raise/lower window key options. Added button options for minimize window and toggle window maximized. Added clear button option. Prevent wobbling when shading maximized windows. Fix in-viewport calculation. Minor cleanup. Check inside of changeWindowState if state was actually changed instead of on the caller side. Also set demands attention hint if focus was prevented because a window is on another viewport. Set demands_attention hint everytime window focus was prevented. Fix typo. We don't need to constrain y movement after placing transients. Also check if parent's Y coordinate is inside the current viewport. Fix typo. Don't switch to selected window if switcher was cancelled. Allow DnD for scale edges. Get rid of cached values for paint modifier options. Whitespace fixes. Avoid duplicated defines. Whitespacing. Added some matrix functions that can be useful for plugins. Complete comment. Added CompVector type for describing vectors. Whitespacing. Use CompVector. pt_BR translation update (closes #12861). fr translation update (closes #12918). Make focusDefaultWindow() take the screen as parameter. Move focusDefaultWindow function from display.c to screen.c. Fix call argument. Compare to wmType, not type variable. Added wrappable validateWindowResizeRequest function that can be used to adjust window resize request processing. Made place plugin wrap into this function and ensure the window remains inside the work area. Improve calculations. Try to maximize window if it requested to be resized larger than the work area. Avoid unnecessarily constraining window size. Whitespace fixes. Bump ABIVERSION. Prevent transient children being stacked below their parent if their focus was denied. Fix typo. Minor optimization Clip transient child placement to parent output instead of current output. Fix whitespace. tr translation update (closes #13094) Don't restack ancestors on initial map. Factor out retrieving the highest valid sibling under a given window into a separate function. Move restacking due to focus stealing prevention to updateWindowAttributes function. The sibling found by findSIblingBelow might already be the active window, so include it in check. The display dbus path is now "display", no longer "allscreens". Wrap setOptionForPlugin function. Fix typos. Fix dbus paths (shadow_offset_x/y -> shadow_x/y_offset). Avoid possible dereference of NULL pointer; and fix duplicate variable declaration. Give options passed over the command line priority over ones from gconf. NULL is allowed as sibling value, too. Make the window frame also process the configured actions for middle and right mouse button click, so that the frame behaves the same way as the title. Cleanup. Fix calculations. Only maximize windows that intend to be resized larger than the work area in both directions. Make sure that Correctly reset hoveredWindow variable on invoking scale. Change behaviour when an error on regex creation is encountered. On shading, set input focus after setting the hidden state to make sure that the frame is properly focussed. Allow maximizing dialog windows. Allow minimizing non-transient dialog windows. Minor coding style enhancement. Make decoration atom names part of the decoration interface. Bump decorator interface version as decoration atom names changed. Give switcher window active window decorations. Beautification. Fixed list parsing. Disable "Slow animations" key by default. Use outputDeviceForGeometry function for implementing outputDeviceForWindow David Reveman (129): Post release version increment. Add getPluginABI utility function. Add utility function checkPluginABI. Add utility function getPluginDisplayIndex. Use new core utility functions in rotate plugin. Add core plugin loader and core plugin code. Hook up core loader. Fix typo. Pass NULL as path when listing plugins in current directory. Only allow loading of core plugin when trying to load Hook up core options to core plugin. Remove getDisplayOptions and setDisplayOption functions. Remove setScreenOption and make sure core plugin is loaded Adjust metadata to have core plugin loaded by default. Make sure the core plugin is always loaded. Add ABI option to core. Kill whitespaces. Bump ABI version. Minor clean up. screenInode -> objectInode. Bump cube ABI version. Add core ABI version check to all plugins. Plugins are now Remove getVersion function from plugin VTable. Have the configure script generate a compiz-common.h file. Install compiz-common.h. Use compiz-common.h, move _CompPluginVTable struct to Clean up. Rename cube.h to compiz-cube.h. Rename scale.h to compiz-scale.h. Add proper preprocessor check to compiz-cube.h. Add proper preprocessor check to compiz-scale.h. Add COMPIZ_BEGIN|END_DECLS. Add COMPIZ_BEGIN|END_DECLS. Split compiz.h into compiz.h and compiz-core.h. ABIVERSION -> CORE_ABIVERSION. Remove whitespaces. Add simple object system, which generalize the privates Remove duplicate error message. Add plugin interface version number to getCompPluginInfo Bump ABI versions. Add missing object.c. Adjust core option functions so they match the prototype used Add core object. Add core object type. Add forEach functions to object interface. Rename ObjectCallbackProc to ObjectCallBackProc and add return Add compObjectForEach function. Use compObjectForEach for plugin initialization of Re-write object initialization code to properly handle Add name to object info struct. Add compObjectTypeName function. Add nameObject function to object interface. Move file watch interface to core object. Remove setDisplayOptionForPlugin and setScreenOptionForPlugin Add findObject function to object interface. Add parent to object struct. Use 'base' as default name for base object instead of 'object'. Fix typo. Allow key and button options in objects that are descendants Allow key and button options in objects that are descendants Cleanup dbus plugin. Have compObjectForEachType take a parent argument to Add support for any kind of object type to kconfig plugin. Add support for any kind of object type to gconf plugin. Add removeScreen function. Remove all screens before we return from event loop. Move window restore functions to screen.c. Remove all windows when removing screen. Only update client list and workarea if window has Move window restore functionality into removeWindow function Destroy screen edges and grab window when removing screen. Free background texture when removing screen. Destroy GLX context when removing screen. Free invisibleCursor when removing screen. Free options, damage region and startup notification context Release overlay window in removeScreen. Keep track of display objects in core object. Allocate display objects properly. Remove whitespace. Add removeDisplay and use it before returning from event loop. Ungrab keys, free buttonGrab and keyGrabs. Destroy damage, remove passive button grabs and remove Move shutdown code out of for loop. Destroy temporary regions properly. Remove display connection watch properly. Move plugin and display removal to finiCore and call Remove compDisplays variable and add comments to code Avoid waking up once every second. Remove trailing whitespaces. Move CompTimeout struct to compiz-core.h. Move timeout variables into core object. Move outputRegion and tmpRegion into core object. Move CompWatchFd struct into compiz-core.h. Move WatchFd variables into core object. Add multi-display support to eventLoop. Remove displays before plugins. Close display connection. Load core plugin when initializing core object. Initialize display object for plugins properly. Remove ping timeout when removing display. Make decoration plugin hook into windowRemoveNotify and Add objectAdd and objectRemove hooks to core. These are similar to Hook into objectAdd and objectRemove functions. Use objectAdd/Remove interface instead of old WindowAdd/Remove Call decorWindowAdd instead of decorWindowUpdate directly. Free core private index in decorFini and not the display Have blur plugin hook into objectAdd instead of windowAdd. Remove windowAddNotify and windowRemoveNotify hooks. Only call matchExpHandlerChanged if display has not been Free window private index. Unwrap setOptionForPlugin function. Unwrap setOptionForPlugin function. Free cs->vertices. Cleanup file watches properly. Check d->base.parent to see if the object is properly Fix memory leaks and clean up properly in gconf plugin. Fix a number of obvious memory leaks. Bump ABI versions. Check return status of dbus_message_iter_open_container. Remove whitespaces. Minor cleanup. Revert "Check d->base.parent to see if the object is properly" Reparent window instead of flipping the WType_TopLevel bit. Remove whitespaces. Make mCompositeWindow an X window instead of a QWidget. Don't remove WType_TopLevel bit when reloading decorations. Reparent window just before mapping it and avoid hiding it Add --sm-disable option to kwd. Add _NET_WM_STATE to _NET_SUPPORTED. Dennis Kasprzyk (54): Disable backface culling only for front-to-back painted transparent cube faces. Draw cube caps only once per output, but allow plugin plugins to reset this handling. Fixes switcher with transparent cube. Added wrapable output clipping functions. Wrap enableOutputClipping to set correct clipping of the cube faces. Use current viewport for skydome rotation calculation. Don't restack new "dock" type windows behind the active window. Use KDE functions to get the visible window name. Make sure that everything is painted, if another plugin requests it. Make sure that unredirected windows get redirected on unmap. Added windowOnAllViewports function. Use windowOnAllViewports in moveScreenViewport. Added setWindowPaintOffset function. Added new PAINT_WINDOW_WITH_OFFSET_MASK mask that indicates that a window will be painted with an offset. Initialize windowOffsetX/windowOffsetY correctly. Added function to calculate window movement for a given offset. Added support for window paint offsets into painting system. Bump core ABI. Use setWindowPaintOffsets instead of moveScreenViewport in cube. Use getWindowMovementForOffset in moveScreenViewport. Use setWindowPaintOffsets instead of moveScreenViewport in plane. Fixed window offset calculation for multihead configurations. getWindowMovementForOffset should always return correct values, also for too big offsets. Use window Offsets to paint correct background. Use the kwin translation catalogue to provide a translated window menu. Draw cube caps correctly in inside cube mode. Damage window extents correcly of windows with borders. Add window actions "menu" type windows (ex. gimp detached menus). Decorate "menu" window type windows. Wait for the proper configure (and map) events before rebinding the decoration pixmap. Added KDE4 configure checks. Added kde-window-decorator KDE 4 port. Check only for public KDE 4.0 decoration headers. (Will be available in 4.0.1 and 4.1) The KDE4 window decorator now only uses public KDE API (version >= 4.0.1) to build. Use _COMPIZ_ prefix to symbolize that this is a compiz private atom. Use _COMPIZ_ prefix for all non stadardized decoration manager atom names. Use _COMPIZ_ prefix for all decoration related atoms. Update to new atom names. Use new atom names. Use new atom names. Link against Plasma. Use Plasma to draw the application switcher window. Set blur property for the switcher window. Include only needed headers. Removed old switcher code. Add atom define that allows the decorator to change the color of the selection rectangle of the switcher window. Allow the window decorator to change the selection rectangle color. Set switcher selection color. Do not resize the decoration widget to the wrong dimensions first. Use Plasma::Svg and some code from Plasma::Dialog to paint directly into a QPixmap. Set switcher backgound pixmap instead of only a color. Watch for plasma theme changes. Fixed handling of autogenerated files to make distcheck work again. Add NEWS entry and bump version for 0.7.0 release. Post release version increment. Erkin Bahceci (1): Do librsvg initialization/termination. Guillaume Seguin (1): * Add snap_bottom option Jigish Gohil (4): pl translation from Maciej Warnecki fr translation update from Tristan RABLAT ko translation updates from Lee June Hee nb translation updated from Ketil W. Aanensen Jürgen Kreileder (2): Fix smart placement client size calculations. Fix copy'n'paste mistakes. Kristian Høgsberg (4): Add back --with-default-plugins option. Set SM restart style to SmRestartIfRunning on exit. Require 'compiz' not @COMPIZ_REQUIRES@ in plugin pkg-config files. Add run_command to keyboard shortcut list. Kristian Lyngstol (1): Autoraise for transients too Michael Vogt (1): metadata/schemas.xslt: - fix generation of the active_plugin list in the schema file Nicolas Viennot (1): Add windowRemoveNotify function. Randolph Chung (1): Fix operator order. Robert Noland (1): Replace strndup with malloc and strncpy. FreeBSD doesn't support strndup. Roland Baer (6): Return value of XGetKeyboardMapping() has to be XFree()d, not to be ignored Storage of XGetVisualInfo() needs to be free()d realloc with correct size mods is useless or "modifiers" will not work Removed dead condition/code Return in out of mem condition Roland Bär (2): Added sanity check for screenInode value. Plug minor memleak. Steven Robertson (1): Fix window unsnapping for vertically arranged Xinerama heads. Tomas Carnecky (1): Start window decorator on all screens. Δημήτρης (djdoo) (2): el translation update el translation update _______________________________________________ compiz mailing list compiz@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/compiz