1. 23 Oct, 2008 1 commit
    • Thomas Thurman's avatar
      Support _NET_WM_STATE_STICKY (i.e. allow third-party apps to decide · ab9bdf22
      Thomas Thurman authored
      2008-10-23  Thomas Thurman  <tthurman@gnome.org>
      
              Support _NET_WM_STATE_STICKY (i.e. allow third-party apps to decide
              whether a window is on all workspaces).  Bug found by Ka-Hing
              Cheung.  Closes #557536.
      
              * src/core/window.c (set_net_wm_state): report it
              * src/core/window.c (meta_window_client_message): set sticky
                if we receive it
              * src/core/window-props.c: set sticky if we find it
              * src/core/atomnames.h: add _NET_WM_STATE_STICKY
      
      
      svn path=/trunk/; revision=3991
      ab9bdf22
  2. 22 Oct, 2008 1 commit
  3. 06 Oct, 2008 1 commit
    • William Lachance's avatar
      Pass modified mouse button events down to panel windows instead of dealing · a49f986c
      William Lachance authored
      2008-10-06  William Lachance  <wrlach@gmail.com>
      
              Pass modified mouse button events down to panel windows
              instead of dealing with them ourselves.  Closes #554428.
      
              * src/core/display.c (prefs_changed_callback): don't grab mouse
                buttons on panels
              * src/core/window.c (meta_window_new_with_attrs): ditto
      
      
      svn path=/trunk/; revision=3942
      a49f986c
  4. 30 Aug, 2008 1 commit
  5. 16 Aug, 2008 1 commit
    • Ted Percival's avatar
      Ensure the user_rect is set sanely for windows that start maximized. · 4fb40b57
      Ted Percival authored
      2008-08-16  Ted Percival  <ted@midg3t.net>
      
              Ensure the user_rect is set sanely for windows that start maximized.
              Prevents maximized windows from warping across the screen.
              Fixes bug #504692.
      
              * src/core/window.c (save_user_placement): renamed version of
              meta_window_save_user_rect().
              * src/core/window.c (force_save_user_placement): similar, but will
              always save user_rect even if the window is maximised or fullscreen.
              * src/core/window.c (meta_window_move_resize_internal): unplaced
              windows have force_save_user_placement() called instead of
              save_user_placement().
      
      
      svn path=/trunk/; revision=3816
      4fb40b57
  6. 13 Jul, 2008 1 commit
    • Thomas Thurman's avatar
      This function can now officially return NULL. Two windows can't belong to · 6bf62be4
      Thomas Thurman authored
      2008-07-12  Thomas Thurman  <tthurman@gnome.org>
      
              * src/core/group.c (meta_window_get_group): This function can now
              officially return NULL.
              * src/core/window.c (meta_window_same_application): Two windows can't
              belong to the same application unless they both belong to some
              application.  (Both belonging to no application is not the same.)
              
              Closes #453022.
      
      svn path=/trunk/; revision=3785
      6bf62be4
  7. 29 Jun, 2008 1 commit
    • Thomas Thurman's avatar
      Some refactoring, simplifying, and commenting of the non-composited · 6039694e
      Thomas Thurman authored
      2008-06-28  Thomas Thurman  <tthurman@gnome.org>
      
              Some refactoring, simplifying, and commenting of the non-composited
              effects code.  effects.c could still do with some polish, which will
              come along later.
      
              * src/core/effects.h (meta_push_effect_handler): removed since it's
                never used and does nothing very useful.
              * src/core/effects.h (meta_pop_effect_handler): removed since its
                only effect is to crash the program.
              * src/core/effects.h (META_MINIMIZE_ANIMATION_LENGTH,
                META_SHADE_ANIMATION_LENGTH): move to effects.c because they're used
                nowhere else.
              * src/core/effects.c: there were three versions of the box-zoom effect.
                Remove the one which was never used, and make only the ones which
                are used with certain configure settings be compiled.
              * src/core/effects.h (meta_effect_end): move to effects.c, make static,
                and rename to effect_free.
              * src/core/effects.h (meta_effects_draw_box_animation): move to
                effects.c, make static, and rename to draw_box_animation.
              * src/core/effects.h (MetaEffectType): remove the values which weren't
                used.
              * src/core/window.c (meta_window_shade): remove commented-out code to
                call effect for shading.
              * src/core/effects.h (MetaEffectFinish): remove useless MetaEffect
                parameter.
              * src/core/window.c (finish_minimize): remove MetaEffect parameter.
      
      
      svn path=/trunk/; revision=3771
      6039694e
  8. 19 May, 2008 2 commits
    • Iain Holmes's avatar
      Applied patch from Ed Catmur to fix #528787 · 3405f3d8
      Iain Holmes authored
      2008-05-19  Iain Holmes  <iain@gnome.org>
      
              * src/core/window.c: Applied patch from Ed Catmur to fix #528787
      
      
      
      svn path=/trunk/; revision=3716
      3405f3d8
    • Iain Holmes's avatar
      src/include/frame.h src/include/display.h src/include/xprops.h · f141692c
      Iain Holmes authored
      2008-05-19  Iain Holmes  <iain@gnome.org>
      
              * src/include/frame.h
              * src/include/display.h
              * src/include/xprops.h
              * src/include/compositor.h
              * src/include/types.h
              * src/include/window.h
              * src/include/errors.h
              * src/include/screen.h: New basic public API for compositor.
      
              * src/compositor/*: Separate the compositor out into its own 
      separate
              directory and set it up for backends. Initial XRender backend.
      
              * src/core/compositor.[ch]: Remove
      
              * src/core/frame.h
              * src/core/screen.h
              * src/core/display.h
              * src/core/window.h: Rename to -private.h so as not to clash 
      with the
              new files in include
      
              * src/core/delete.c
              * src/core/workspace.h
              * src/core/stack.[ch]
              * src/core/keybindings.[ch]
              * src/core/errors.c
              * src/core/effects.[ch]
              * src/core/core.c
              * src/core/group.h
              * src/core/edge-resistance.[ch]
              * src/core/window-props.[ch]
              * src/core/constraints.h
              * src/core/bell.[ch]
              * src/core/iconcache.h
              * src/core/session.[ch]
              * src/core/main.c
              * src/core/place.h
              * src/core/xprops.c
              * src/ui/tabpopup.c: Use the new -private headers
      
              * src/core/display.c
              * src/core/frame.c
              * src/core/window.c
              * src/core/screen.c: Add the API functions required by the 
      compositor
      
              * src/Makefile.am: Relocate the new files
      
      
      
      svn path=/trunk/; revision=3715
      f141692c
  9. 02 May, 2008 1 commit
    • Thomas Thurman's avatar
      All information should live in exactly one place. This means that the list · b455ac62
      Thomas Thurman authored
      2008-05-02  Thomas Thurman  <tthurman@gnome.org>
      
              All information should live in exactly one place.  This means
              that the list of atoms should not be replicated anywhere.
              Therefore, we include it via x-macros.  Closes #530843.
      
              * src/core/atomnames.h: added list of atom names
              * src/Makefile.am: added reference to new file
              * src/core/display.h
              * src/core/display.c (twice)
              * src/core/screen.c: #included atomnames.h instead of having
                an enormous list of atoms
              * src/core/group-props.c
              * src/core/window.c
              * src/core/compositor.c
              * src/core/window-props.c
              * src/core/delete.c
              * src/core/workspace.c
              * src/core/stack.c
              * src/core/keybindings.c
              * src/core/iconcache.c
              * src/core/group.c
              * src/core/xprops.c: changed to new, simpler identifiers
                for atoms
      
      
      svn path=/trunk/; revision=3702
      b455ac62
  10. 29 Apr, 2008 1 commit
  11. 28 Mar, 2008 1 commit
  12. 19 Mar, 2008 1 commit
    • Iain Holmes's avatar
      Add a screen argument. (process_property_notify): Damage the whole screen · f2b400b8
      Iain Holmes authored
      2008-03-19  Iain Holmes  <iain@gnome.org>
      
              * src/core/compositor.c (meta_compositor_set_active_window): Add 
      a
              screen argument.
              (process_property_notify): Damage the whole screen when the 
      background
              changes. Fixes 522599
              (add_repair): Use the idle instead of the timeout. Fixes 522166
              (unmap_win): If the window is also focus window NULLify it.
      
              * src/core/window.c (meta_window_notify_focus): Notify when a 
      window
              has lost focus, pass in screen as well.
      
      
      svn path=/trunk/; revision=3654
      f2b400b8
  13. 18 Mar, 2008 2 commits
    • Iain Holmes's avatar
      Allow shaped windows _with frames_ to have shadows. · e6293645
      Iain Holmes authored
      2008-03-18  Iain Holmes  <iain@gnome.org>
      
              * src/core/compositor.c (window_has_shadow): Allow shaped 
      windows
              _with frames_ to have shadows.
              (meta_compositor_set_active_window): Watch for the focus of 
      windows
              and change the size of the drop shadows.
              (generate_shadows): Create differently sized shadows.
              (meta_compositor_get_window_pixmap): Get the xwindow correctly.
      
              * src/core/window.c (meta_window_notify_focus): Set the active 
      window
              in the compositor.
      
      
      svn path=/trunk/; revision=3653
      e6293645
    • Marco Pesenti Gritti's avatar
      newly created windows can't be considered to be above themselves; fixes · 7d239b0d
      Marco Pesenti Gritti authored
      2008-03-18  Marco Pesenti Gritti  <mpgritti@gmail.com>
      
              * src/core/window.c (window_would_be_covered): newly created windows
      	can't be considered to be above themselves; fixes bug #519188.
      
      
      svn path=/trunk/; revision=3650
      7d239b0d
  14. 27 Feb, 2008 1 commit
  15. 18 Feb, 2008 1 commit
    • Thomas Thurman's avatar
      When resizing a window with the keyboard, stay one pixels from the edges · 07939f23
      Thomas Thurman authored
      2008-02-18  Thomas Thurman  <tthurman@gnome.org>
      
              * src/core/window.c (warp_grab_pointer): When
      	resizing a window with the keyboard, stay one 
      	pixels from the edges so that the cursor remains
      	resting on a window edge even if we escape,
      	whatever side it was on. Closes #436257.
      
      
      svn path=/trunk/; revision=3578
      07939f23
  16. 02 Feb, 2008 1 commit
    • Alex R.M. Turner's avatar
      Have the list also pull windows that are in other workspaces that have the · 18b63e9b
      Alex R.M. Turner authored
      2008-02-01  Alex R.M. Turner  <armtuk@gmail.com>
      
              * src/core/display.c (meta_get_tab_entry_list): Have the list also pull 
                windows that are in other workspaces that have the  
                wm_state_needs_attention flag set
              * src/core/window.c (meta_window_set_demands_attention): Make windows that
                are on other workspaces that demand attention that aren't obscured
                count as being obscured
              Bug #333548.
      
      svn path=/trunk/; revision=3533
      18b63e9b
  17. 19 Dec, 2007 1 commit
    • Havoc Pennington's avatar
      sort source files into these directories according to which part of the WM · 72b08c82
      Havoc Pennington authored
      2007-12-19  Havoc Pennington  <hp@redhat.com>
      
      	* src/ui, src/core, src/include: sort source files into these
      	directories according to which part of the WM they are supposed to
      	be in. In an eventual plan, we should also create
      	src/compositor/render, src/compositor/fallback and move some of
      	the compositor stuff into that.
      	
      	* autogen.sh: require a newer automake, so we don't have to use
      	a recursive build
      
      	* src/ui/tabpopup.c: put in a hack to make the build temporarily
      	work, want to commit the large rearrangement before fixing this
      	not to include workspace.h or frame.h
      
      	* src/core/iconcache.c (meta_read_icons): temporarily break this
      	to get the build to work, want to commit the large rearrangement
      	before fixing this file not to include theme.h
      
      
      svn path=/trunk/; revision=3491
      72b08c82
  18. 13 Nov, 2007 1 commit
  19. 12 Nov, 2007 1 commit
    • Thomas Thurman's avatar
      adjust expression which decides whether new windows should not go on top, · 2a9dc727
      Thomas Thurman authored
      2007-11-11  Thomas Thurman  <thomas@thurman.org.uk>
      
              * src/window.c (meta_window_show): adjust expression which decides
              whether new windows should not go on top, so that restacking happens
              only the first time a window is mapped. Thanks to Olav Vitters for
              pointing out the problem. Re-fixes #486445.
      
      
      svn path=/trunk/; revision=3386
      2a9dc727
  20. 09 Nov, 2007 3 commits
  21. 07 Nov, 2007 1 commit
  22. 06 Nov, 2007 1 commit
  23. 16 Oct, 2007 1 commit
    • Thomas Thurman's avatar
      new function. rewrite assertion not to put window on top in terms of · 4ef11cfb
      Thomas Thurman authored
      2007-10-16  Thomas Thurman  <thomas@thurman.org.uk>
      
              * src/window.c (window_would_be_covered): new function.
              * src/window.c (meta_window_show): rewrite assertion not
              to put window on top in terms of window_would_be_covered();
              remove assertion because it's no longer valid; explicitly
              don't focus windows that shouldn't be focussed; closes #486445.
      
      
      svn path=/trunk/; revision=3358
      4ef11cfb
  24. 07 Aug, 2007 1 commit
  25. 31 Jul, 2007 1 commit
  26. 23 Jul, 2007 1 commit
  27. 17 Jun, 2007 1 commit
  28. 11 Jun, 2007 1 commit
    • Thomas Thurman's avatar
      Refactor thrice-duplicated queue code in window.c. Closes #376760. · 8f2b9cb4
      Thomas Thurman authored
      2007-06-10  Thomas Thurman  <thomas@thurman.org.uk>
      
              Refactor thrice-duplicated queue code in window.c. Closes #376760.
      
              * src/window.c (meta_window_queue, meta_window_unqueue):
              New functions.
              * src/window.[ch] (meta_window_unqueue_*, meta_window_queue_*):
              Removed functions.
              * src/window.c (meta_window_new_with_attrs, meta_window_free,
              meta_window_flush_calc_showing, queue_calc_showing_func,
              meta_window_minimize, meta_window_unminimize, meta_window_maximize,
              meta_window_make_fullscreen, meta_window_shade,
              meta_window_unshade, meta_window_move_resize_internal,
              window_stick_impl, window_unstick_impl,
              meta_window_client_message, process_property_notify): Modified to
              use new queueing functions.
              * src/window.c (idle_move_resize, idle_update_icon,
              idle_calc_showing): update to receive queue number from pointer.
              * src/window.h (MetaQueueType): new enum.
              * src/window.h (MetaWindow): *_queued replaced with is_in_queue
              bitfield.
              * src/core.c (meta_core_queue_frame_resize):
              * src/display.c (event_callback,
              meta_display_queue_retheme_all_windows): Using new queueing functions.
              * src/frame.c (meta_window_destroy_frame): Using new queueing functions.
              * src/screen.c (queue_resize, meta_screen_resize_func,
              queue_windows_showing): Using new queueing functions.
              * src/window-props.c (reload_mwm_hints, reload_wm_hints,
              reload_transient_for): Using new queueing functions.
              * src/workspace.c (meta_workspace_add_window,
              meta_workspace_remove_window, meta_workspace_queue_calc_showing,
              meta_workspace_invalidate_work_area): Using new queueing functions.
      
      
      svn path=/trunk/; revision=3236
      8f2b9cb4
  29. 25 May, 2007 1 commit
    • Yair Hershkovitz's avatar
      Add support for RTL languages so that alt-tab, etc., go the other way. In · 5194df84
      Yair Hershkovitz authored
      2007-05-25  Yair Hershkovitz  <yairhr@yahoo.com>
      
              * src/workspace.c (meta_workspace_get_neighbor): Add support
              for RTL languages so that alt-tab, etc., go the other way.
              * src/keybindings.c (handle_activate_menu): In RTL locales,
              pop up the menu on the right-hand side when the menu keystroke
              is pressed.
              * src/fixedtip.c (meta_fixed_tip_show): right-justify tooltips
              in RTL locales.
              * src/menu.c (popup_position_func): popup menus in RTL locales
              are flush with the right-hand side of the window where possible.
              * src/frames.c (show_tip_now, meta_frames_button_press_event):
              tooltips are aligned with the right-hand side of buttons in
              RTL locales.
              * src/ui.[ch] (meta_ui_get_direction, enum MetaUIDirection):
              New content.
              * src/window.c (meta_window_show_menu): "move left" appears above
              "move right" in the window menu for LTR locales, and vice versa
              for RTL locales.
      
              This is all to close bug #387893.
      
      
      svn path=/trunk/; revision=3222
      5194df84
  30. 18 Apr, 2007 1 commit
    • Elijah Newren's avatar
      Fix some fallout from #426519; update user_rect for all position changes · e6691951
      Elijah Newren authored
      2007-04-17  Elijah Newren  <newren gmail com>
      
      	Fix some fallout from #426519; update user_rect for all position
      	changes prior to the window being marked as placed.  Prevents
      	emacs in particular from flickering on start and always being
      	shoved to the upper-left corner.
      
      	* src/window.c (meta_window_move_resize_internal):
      	Record position in user_rect if the window is not yet marked as
      	placed too
      
      	* src/window.c (struct MetaWindow, meta_window_new_with_attrs,
      	  meta_window_move_resize_internal):
      	Remove window->user_has_move_resized; it's not needed or used
      	anymore.
      
      	* src/window.[ch] (meta_window_get_user_position):
      	Remove this function as it is no longer needed or used.
      
      svn path=/trunk/; revision=3203
      e6691951
  31. 16 Apr, 2007 2 commits
    • Elijah Newren's avatar
      Prevent metacity from "forgetting" which machine a window is on. #418552 · 966e36b9
      Elijah Newren authored
      2007-04-16  Elijah Newren  <newren gmail com>
      
      	Prevent metacity from "forgetting" which machine a window is on.
      	#418552
      
      	* src/window.c (meta_window_new_with_attrs): reorder the property
      	loading so that we know the wm_client_machine when we load the
      	name of the window and can modify the window name accordingly.
      
      svn path=/trunk/; revision=3201
      966e36b9
    • Elijah Newren's avatar
      Remove incorrect usage of window.h from menu.c. See #426791 & #382962. · 6de7271a
      Elijah Newren authored
      2007-04-15  Elijah Newren  <newren gmail com>
      
      	Remove incorrect usage of window.h from menu.c.  See #426791 &
      	#382962.
      
      	* src/menu.c (enum MetaMenuItemType, variable menuitems,
      	  meta_menu_item_new):
      	cleanup: add a MENU_ITEM_RADIOBUTTON for the sticky stuff
      
      	* src/menu.c (variable menuitems):
      	* src/core.c (meta_core_get_menu_accelerator):
      	* src/window.c (menu_callback, meta_window_show_menu):
      	* src/common.h (enum MetaMenuOp):
      	reinstate META_MENU_OP_UNABOVE
      
      	* src/menu.c (meta_window_menu_new):
      	remove hacks (using inappropriate data) for STICK/UNSTICK/ABOVE
      	and clean it up while just setting STICK/UNSTICK activeness as
      	necessary
      
      	* src/menu.[ch] (meta_window_menu_new):
      	* src/ui.[ch] (meta_ui_window_menu_new):
      	make the active_workspace parameter an unsigned long
      
      2007-04-15  Bruno Boaventura <brunobol@gnome.org>
      
      	* src/menu.c (meta_window_menu_new): don't show the current
      	workspace as a possible workspace to switch to.  Fixes #426791.
      
      svn path=/trunk/; revision=3196
      6de7271a
  32. 12 Apr, 2007 1 commit
    • Elijah Newren's avatar
      Make sure apps have correct info about their coordinates, even on unmap. · 9ec6dbd5
      Elijah Newren authored
      2007-04-11  Elijah Newren  <newren gmail com>
      
      	Make sure apps have correct info about their coordinates, even on
      	unmap.  Fixes temporary hang with libXt (XtVaSetValues setting x &
      	y coordinates).  #399552.
      
      	* src/frame.c (meta_window_destroy_frame): Add a comment noting
      	that the current choice causes the need for a ConfigureNotify
      	event
      
      	* src/window.c (meta_window_free): Send a configure notify event
      	due to our XReparentWindow coordinate choices on withdrawal,
      	(unmaximize_window_before_freeing): no need to send a configure
      	notify from here since it is always done in meta_window_free new,
      	(send_configure_notify): have to special case the coordinates used
      	when withdrawing the window
      
      svn path=/trunk/; revision=3192
      9ec6dbd5
  33. 11 Apr, 2007 2 commits
    • Elijah Newren's avatar
      Advertise support of Above and Below operations (assuming the proposed · 7626f74b
      Elijah Newren authored
      2007-04-11  Elijah Newren  <newren gmail com>
      
      	Advertise support of Above and Below operations (assuming the
      	proposed EWMH additions of _NET_WM_ACTION_(ABOVE|BELOW) will be
      	accepted, otherwise these changes will have to be modified).  Part
      	of #115247.
      
      	* src/display.[ch] (meta_display_open, struct MetaDisplay):
      	* src/screen.c (set_wm_check_hint):
      	Add support for _NET_WM_ACTION_ABOVE and _NET_WM_ACTION_BELOW
      
      	* src/window.c (set_allowed_actions_hints):
      	add active_above and action_below
      
      svn path=/trunk/; revision=3190
      7626f74b
    • Elijah Newren's avatar
      make sure to set _NET_WM_ALLOWED_ACTIONS so that libwnck menus don't have · eb639a46
      Elijah Newren authored
      2007-04-10  Elijah Newren  <newren gmail com>
      
      	* src/window.c (recalc_window_features): make sure to set
      	_NET_WM_ALLOWED_ACTIONS so that libwnck menus don't have sensitive
      	but ineffective menu items.  The "On Top" item is now buggy, but
      	due to the fact that _NET_WM_ACTION_ABOVE is not yet defined in
      	the EWMH.  Fixes #115247.
      
      svn path=/trunk/; revision=3189
      eb639a46
  34. 09 Apr, 2007 1 commit
    • Elijah Newren's avatar
      Add support for _NET_MOVERESIZE_WINDOW. #344521. · b8f89db4
      Elijah Newren authored
      2007-04-09  Elijah Newren  <newren gmail com>
      
      	Add support for _NET_MOVERESIZE_WINDOW.  #344521.
      
      	* src/display.c (handle_net_moveresize_window, event_callback):
      	Remove handle_net_moveresize_window() and the call to it; this
      	code was highly buggy, though to be fair it was never tested and
      	had simply been put into the code in commented out form.
      
      	* src/screen.c (set_supported_hint):
      	add atom_net_moveresize_window
      
      	* src/window.[ch]:
      	(meta_window_configure_request, meta_window_move_resize_request):
      	Split out the moving/resize part of the configure request and put
      	it into meta_window_move_resize_request
      
      	(meta_window_client_message):
      	check for NET_MOVERESIZE_WINDOW messages and call
      	meta_window_move_resize_request() with the appropriate parameters
      	to handle them
      
      	(meta_window_move_resize_internal):
      	fix some of the big comment at this function -- it wasn't quite
      	right, use the passed in gravity instead of
      	window->size_hints.win_gravity when calling adjust_for_gravity()
      	to make sure the correct adjustments are used.
      
      	(meta_window_get_gravity_position,
      	 meta_window_get_geometry, meta_window_move_resize_request):
      	add a gravity parameter to meta_window_get_gravity_position and
      	have it use that gravity instead of window->size_hints.win_gravity
      
      svn path=/trunk/; revision=3186
      b8f89db4