1. 19 Nov, 2013 3 commits
    • Owen W. Taylor's avatar
      Rename meta_window_get_outer_rect() to meta_window_get_frame_rect() · b9da43b7
      Owen W. Taylor authored
      For clarity, rename meta_window_get_outer_rect() to match terminology
      we use elsewhere. The old function is left as a deprecated
      compatibility wrapper.
    • Owen W. Taylor's avatar
      Use utility functions to convert between frame and client rectangles · f36a6273
      Owen W. Taylor authored
      There are extensive places in the code where we convert between the client
      rectangle and the frame rectangle. Instead of manually doing it use
      new helper functions on MetaWindow and the existing meta_window_get_outer_rect().
      This fixes a number of bugs where the computation was being done incorrectly,
      most of these bugs are with the recently added custom frame extents, but
      some relate to invisible borders or even simply to confusion between the
      window and frame rectangle.
      Switch the placement code to place the frame rectangle rather
      than the client window - this simplifies things considerably.
    • Florian Müllner's avatar
      doc: Fix file globs · 17fd25e2
      Florian Müllner authored
      Any files matching the previously used globs are no longer distributed,
      breaking distcheck. Match the actual sources in compositor/, core/, meta/
      and ui/ instead.
  2. 16 Oct, 2013 1 commit
  3. 12 Sep, 2013 1 commit
  4. 26 Aug, 2013 1 commit
  5. 18 Jul, 2013 1 commit
  6. 18 Mar, 2013 2 commits
  7. 14 Mar, 2013 7 commits
  8. 20 Mar, 2012 1 commit
    • Jasper St. Pierre's avatar
      workspace: Don't try to use per-workspace MRU lists as a hint for focusing · a3bf9b01
      Jasper St. Pierre authored
      Commit 2fc880db switched from focusing the topmost window as the default
      window to focusing the MRU window. This was done in alignment with the
      introduction of per-workspace MRU lists to avoid problems where the window
      stack was inadvertently changed when focusing windows during window switches.
      Now that focusing windows don't have as big an impact on the stacking order,
      we can revert back to focusing the top window, which is less confusing to the
      For now, leave per-workspace MRU lists, as they're a pretty good approximation
      of a global MRU list, and it works well enough.
  9. 11 Nov, 2011 1 commit
  10. 08 Jul, 2011 1 commit
    • Florian Müllner's avatar
      theme: Allow using custom colors from the GTK+ theme · 54b2fab8
      Florian Müllner authored
      Add an additional color type to pick up colors defined with
      @define-color in the GTK+ theme's CSS:
      (where "name" refers to the name defined in GTK+'s CSS, and fallback
      refers to an alternative color spec which is used when the color
      referenced by "name" is not found)
      The main intent of the change is to allow designers to improve
      Adwaita's dark theme variant without having to compromise on colors
      which work in the light variant as well.
  11. 05 Jan, 2011 2 commits
  12. 18 Nov, 2010 1 commit
  13. 13 Apr, 2010 3 commits
    • Owen W. Taylor's avatar
      Allow a theme to specify ellipsize width for a title · 1d7476a7
      Owen W. Taylor authored
      It's nice to indicate when a title is truncated with an ellipsis.
      Because themes may draw a title multiple times to draw a shadow, or
      may include the window icon within the title area, we can't determine
      the proper ellipsization width automatically, so add an optional
      attribute to the <title/> element "ellipsize_width" which, if set,
      is the width to ellipsize at.
      This is only enabled if a theme version of 3.1 is required.
      When it's not set, we keep the old behavior of just letting the
      title be clipped with a hard edge.
    • Owen W. Taylor's avatar
      Add frame_x_center/frame_y_center variables for themes · e8e78ebf
      Owen W. Taylor authored
      Sometimes you want to position something (usually the title) to be centered
      with respect to the entire frame instead of centered with respect to the
      individual piece currently being drawn.
      This patch adds frame_x_center and frame_y_center variables that represent
      the X/Y centers of the frame in the coordinate system of the piece being
      The theme version is bumped from 3.0 to 3.1 (3.0 is just the new version
      system, 3.1 will have all the features we add for Mutter-2.28.)
      position expressions
    • Owen W. Taylor's avatar
      metacity-theme-3.xml: Add a flexible version mechanism · 020aea03
      Owen W. Taylor authored
      The current mechanism of metacity-theme-1.xml and metacity-theme-2.xml
      is not flexible for allowing small-scale additions. With this patch
      we bump the major version version once more to metacity-theme-3.xml
      and add a single feature:
      Any element in the DTD can have an attribute:
       version="[<|<=|=>|>] MAJOR.MINOR"
      And it will be ignored unless the predicate is met. (< and > should
      be to be entity escaped as &lt; and &gt;)
      This allows having alternate sections of the theme file for older and
      newer version.
      * Required GLib version is bumped to 2.14 so we can parse versions
        with a regular expression.
      * We switch internal version numbers to be "1000 * major + minor"
      * We keep a stack of the maximum required version for the current portion
        the XML tree so that the "cannot use versions you don't require" stricture
        of the old code can be made local to a subpart of the tree.
      * A version on the top metacity_theme element causes the entire file to
        be ignored; this allows having one metacity-theme-3.xml for version 3.2
        and newer (say) and a metacity-1.xml for everything old.
      Actual new features will be added starting with 3.1 - 3.0 is just the
      version="" feature.
  14. 16 Jun, 2009 1 commit
    • Jon Nettleton's avatar
      Comprehensively rename to Mutter · 51a64679
      Jon Nettleton authored
      All references in the code not related to themes, keybindings, or
      GConf were changed from 'metacity' to 'mutter'. This includes, among other
      things, strings, comments, the atoms used in the message protocol, and
      the envvars used for debugging. The GConf schema file was reduced to
      the 3 settings new to mutter.
      The overall version was brought up to 2.27 to match current gnome.
      All files named '*metacity*' were renamed '*mutter*' with appropriate
      changes in the automake system.  Files removed are
      doc/creating_themes, src/themes, doc/metacity-theme.dtd,
      metacity.doap.  These files will eventually end up in an external
      gnome-wm-data module.
      Installation location:
      On the filesystem the mutter-plugindir was change from
      $(libdir)/metacity/plugins/clutter to just $(libdir)/mutter/plugins.
      The mutter-plugins.pc.in reflects these changes.
      mutter.desktop.in and mutter-wm.desktop both continue to have
      X-GNOME-WMSettingsModule=metacity set.  This allows
      gnome-control-center to continue using libmetacity.so for
      configuration.  This is fine since most the general keybindings and wm
      settings are being read from /apps/metacity/* in gconf.
  15. 23 Oct, 2008 2 commits
  16. 22 Oct, 2008 1 commit
  17. 18 Oct, 2008 1 commit
  18. 14 Aug, 2008 1 commit
    • Akira TAGOH's avatar
      new manual page. added new reference. · 92fe1574
      Akira TAGOH authored
      2008-08-14  Akira TAGOH  <akira@tagoh.org>
              * doc/man/metacity-message.1: new manual page.
              * doc/man/Makefile.am: added new reference.
      svn path=/trunk/; revision=3811
  19. 04 Apr, 2007 1 commit
    • Elijah Newren's avatar
      Fix lots of little issues with min/max constraints and size increment · 921661e9
      Elijah Newren authored
      2004-04-04  Elijah Newren  <newren gmail com>
      	Fix lots of little issues with min/max constraints and size
      	increment constraints.  Fixes #329152, #418395, and possibly
      	* src/window-props.c (meta_set_normal_hints):
      	Do more checking to make sure application specified constraints
      	are self-consistent, modifying the size_hints as necessary to
      	achieve self-consistency.
      	* src/constraints.c (setup_constraint_info): remove ugly
      	copy-pasto, (constrain_size_increments): be careful that fixing
      	violation of the constraints doesn't cause a violation of the
      	minimum size constraints.
      	* src/window.c (ensure_size_hints_satisfied): new function,
      	(meta_window_unmaximize, meta_window_unmake_fullscreen): the
      	saved_rect may no longer be valid (as in the case of #329152) so
      	call ensure_size_hints_satisfied to fix it up.
      	* doc/how-to-get-focus-right.txt: Some minor spacing and wording
      	fixes completely unrelated to the rest of this commit
      svn path=/trunk/; revision=3155
  20. 16 Jan, 2007 2 commits
  21. 07 Oct, 2006 1 commit
  22. 01 Oct, 2006 1 commit
    • Elijah Newren's avatar
      Fix longstanding focus bug with mouse (not sloppy) focus mode with popup · b694312f
      Elijah Newren authored
      2006-10-01  Elijah Newren  <newren gmail com>
      	Fix longstanding focus bug with mouse (not sloppy) focus mode with
      	popup override-redirect windows, particularly mozilla and
      	firefox's location bar autocompletion.  #357695.
      	* src/display.c (event_callback -- EnterNotify & LeaveNotify events):
      	for mouse focus, defocus the focused window when the mouse enters
      	the desktop window rather than when the mouse leaves the focused
      	* doc/how-to-get-focus-right.txt:
      	update for the slightly nuanced definition of mouse focus (people
      	without a DESKTOP window like nautilus get sloppy focus behavior
  23. 12 Feb, 2006 1 commit
  24. 21 Nov, 2005 2 commits
  25. 19 Nov, 2005 1 commit
    • Elijah Newren's avatar
      Merge of all the changes on the constraints_experiments branch. This is · a7201d27
      Elijah Newren authored
      2005-11-18  Elijah Newren  <newren@gmail.com>
      	Merge of all the changes on the constraints_experiments branch.
      	This is just a summary, to get the full ChangeLog of those
      	changes (approx. 2000 lines):
      	  cvs -q -z3 update -Pd -r constraints_experiments
      	  cvs -q -z3 diff -pu -r CONSTRAINTS_EXPERIMENTS_BRANCHPOINT ChangeLog
      	Bugs fixed:
      	  unfiled - constraints.c is overly complicated[1]
      	  unfiled - constraints.c is not robust when all constraints
      	            cannot simultaneously be met (constraints need to be
      	  unfiled - keep-titlebar-onscreen constraint is decoration
      	            unaware (since get_outermost_onscreen_positions()
      	            forgets to include decorations)
      	  unfiled - keyboard snap-moving and snap-resizing snap to hidden
      	   109553 - gravity w/ simultaneous move & resize doesn't work
      	   113601 - maximize vertical and horizontal should toggle and be
      	   122196 - windows show up under vertical panels
      	   122670 - jerky/random resizing of window via keyboard[2]
      	   124582 - keyboard and mouse snap-resizing and snap-moving
      	            erroneously moves the window multidimensionally
      	   136307 - don't allow apps to resize themselves off the screen
      	            (*cough* filechooser *cough*)
      	   142016, 143784 - windows should not span multiple xineramas
      	            unless placed there by the user
      	   143145 - clamp new windows to screensize and force them
      	            onscreen, if they'll fit
      	   144126 - Handle pathological strut lists sanely[3]
      	   149867 - fixed aspect ratio windows are difficult to resize[4]
      	   152898 - make screen edges consistent; allow easy slamming of
      	            windows into the left, right, and bottom edges of the
      	            screen too.
      	   154706 - bouncing weirdness at screen edge with keyboard moving
      	            or resizing
      	   156699 - avoid struts when placing windows, if possible (nasty
      	            a11y blocker)
      	   302456 - dragging offscreen too restrictive
      	   304857 - wireframe moving off the top of the screen is misleading
      	   308521 - make uni-directional resizing easier with
      	            alt-middle-drag and prevent the occasional super
      	            annoying resize-the-wrong-side(s) behavior
      	   312007 - snap-resize moves windows with a minimum size
      	   312104 - resizing the top of a window can cause the bottom to
      	   319351 - don't instantly snap on mouse-move-snapping, remove
      	            braindeadedness of having order of releasing shift and
      	            releasing button press matter so much
      	   [1] fixed in my opinion, anyway.
      	   [2] Actually, it's not totally fixed--it's just annoying
      	       instead of almost completely unusable.  Matthias had a
      	       suggestion that may fix the remainder of the problems (see
      	   [3] This bug was originally about not-quite-so-pathological
      	       cases but was left open for the worse cases. The code from
      	       the branch handles the remainder of the cases mentioned in
      	       this bug.
      	   [4] Actually, although it's far better there's still some minor
      	       issues left: a slight drift that's only noticeable after
      	       lots of resizing, and potential problems with partially
      	       onscreen constraints due to not clearing any
      	       fixed_directions flags (aspect ratio windows get resized in
      	       both directions and thus aren't fixed in one of them)
      	New feature:
      	    81704 - edge resistance for user move and resize operations;
      	            in particular 3 different kinds of resistance are
                   	 Pixel-Distance: window movement is resisted when it
      	     	   aligns with an edge unless the movement is greater than
      	     	   a threshold number of pixels
                   	 Timeout: window movement past an edge is prevented until
      	     	   a certain amount of time has elapsed during the
      	     	   operation since the first request to move it past that
                   	 Keyboard-Buildup: when moving or resizing with the
      	     	   keyboard, once a window is aligned with a certain edge
      	     	   it cannot move past until the correct direction has
      	     	   been pressed enough times (e.g. 2 or 3 times)
      	Major changes:
      	  - constraints.c has been rewritten; very few lines of code from
      	    the old version remain.  There is a comment near the top of
      	    the function explaining the basics of how the new framework
      	    works.  A more detailed explanation can be found in
      	  - edge-resistance.[ch] are new files implementing edge-resistance.
      	  - boxes.[ch] are new files containing low-level error-prone
      	    functions used heavily in constraints.c and edge-resistance.c,
      	    among various places throughout the code.  testboxes.c
      	    contains a thorough testsuite for the boxes.[ch] functions
      	    compiled into a program, testboxes.
      	  - meta_window_move_resize_internal() *must* be told the gravity
      	    of the associated operation (if it's just a move operation,
      	    the gravity will be ignored, but for resize and move+resize
      	    the correct value is needed)
      	  - the craziness of different values that
      	    meta_window_move_resize_internal() accepts has been documented
      	    in a large comment at the beginning of the function.  It may
      	    be possible to clean this up some, but until then things will
      	    remain as they were before--caller beware.
      	  - screen and xinerama usable areas (i.e. places not covered by
      	    e.g. panels) are cached in the workspace now, as are the
      	    screen and xinerama edges.  These get updated with the
      	    workarea in src/workspace.c:ensure_work_areas_validated()