Commit Graph

94 Commits

Author SHA1 Message Date
Elijah Newren
5c587726ae Partial audit to fix timestamp usage. One step towards fixing #355180; see
2006-09-18  Elijah Newren  <newren gmail com>

	Partial audit to fix timestamp usage.  One step towards fixing
	#355180; see important comments in that bug.

	* src/core.[ch] (meta_core_unshade, meta_core_shade):
	* src/delete.c (meta_window_present_delete_dialog,
	  delete_ping_timeout_func):
	* src/display.[ch] (meta_display_open, meta_display_close,
	  event_callback, meta_display_begin_grab_op,
	  process_selection_clear, meta_display_unmanage_screen,
	  meta_display_unmanage_windows_for_screen):
	* src/frames.c (meta_frames_button_press_event):
	* src/keybindings.c (handle_toggle_shade):
	* src/main.c (main):
	* src/screen.[ch] (update_num_workspaces, meta_screen_new,
	  meta_screen_free, prefs_changed_callback):
	* src/window.[ch] (meta_window_free, finish_minimize,
	  implement_showing, meta_window_show, meta_window_maximize,
	  meta_window_make_fullscreen_internal,
	  meta_window_unmake_fullscreen, meta_window_shade,
	  meta_window_unshade, window_activate, send_sync_request,
	  meta_window_client_message, menu_callback,
	  meta_window_update_keyboard_resize):
	Remove usage of CurrentTime, meta_display_get_current_time() and
	meta_display_get_current_time_roundtrip() where possible, or
	document why it isn't possible, or at very least add a FIXME with
	some explanation of my laziness and what needs to be done.
2006-09-18 17:27:24 +00:00
Elijah Newren
acc6c97997 Patch from Chris Ball to not minimize in response to double clicks on the
2006-08-07  Elijah Newren  <newren gmail com>

	* src/frames.c (meta_frames_button_press_event): Patch from Chris
	Ball to not minimize in response to double clicks on the titlebar
	when minimiziation should not be allowed.  #347377
2006-08-07 22:06:25 +00:00
Elijah Newren
dcef402d68 Patch from Björn Lindqvist to fix button lighting with dragged clicks.
2006-08-07  Elijah Newren  <newren gmail com>

	Patch from Björn Lindqvist to fix button lighting with dragged
	clicks.  #321474.

	* src/frames.c (meta_frames_button_press_event): update the
	prelit_control, (meta_frames_button_release_event): some code
	refactoring to simplify things a bit, and make sure to update the
	prelit_control
2006-08-07 21:04:44 +00:00
Thomas Thurman
cc5def1021 add new MetaButtonSpace struct; use it for close_rect, max_rect, min_rect
2006-08-07  Thomas Thurman  <thomas@thurman.org.uk>

        * src/frames.h: add new MetaButtonSpace struct; use it for
        close_rect, max_rect, min_rect and menu_rect.

        * src/frames.c (control_rect, get_control): modify to support
        the new fields in MetaButtonSpace.

        * src/theme.c (meta_frame_layout_get_borders, rect_for_function,
        meta_frame_layout_calc_geometry, button_rect): add support for
        the new fields in MetaButtonSpace.
2006-08-07 18:01:21 +00:00
Björn Lindqvist
3e394580da Fix a logic bug so that the whole titlebar becomes sensitive to mouse
2006-05-19  Björn Lindqvist  <bjourne@gmail.com>

	* frames.c: Fix a logic bug so that the whole titlebar becomes
	sensitive to mouse clicks. Fixes #336320.
2006-05-19 13:15:29 +00:00
Björn Lindqvist
c118c50117 Replace while loops iterating over sequences with for loops. Also, replace
2006-04-19  Björn Lindqvist  <bjourne@gmail.com>

	* src/frames.c (struct CachedPixels, meta_frames_destroy,
	invalidate_cache, generate_pixmap, populate_cache,
	cached_pixels_draw, meta_frames_expose_event,
	meta_frames_paint_to_drawable):

	Replace while loops iterating over sequences with for loops. Also,
	replace the attributes in the CachedPixels struct with a list of
	four CachedFramePiece:s, this allows iteration over the four
	pixmaps instead of treating each one separately. Fixes #338359.
2006-04-19 15:22:07 +00:00
Elijah Newren
c0f4b9d2d4 Patch from Dick Marinus to add a minimize double-click-titlebar-action;
2006-01-21  Elijah Newren  <newren gmail com>

	* src/common.h (enum MetaActionDoubleClickTitlebar):
	* src/frames.c (meta_frames_button_press_event):
	* src/prefs.c (action_double_click_titlebar_from_string):
	* src/metacity.schemas.in:
	Patch from Dick Marinus to add a minimize
	double-click-titlebar-action; slightly modified to also include a
	none action.  #300210.
2006-01-21 19:18:51 +00:00
Elijah Newren
32d4bd6b63 Patch from Kjartan Maraas to fix a lot of tiny issues (unused variable
2006-01-20  Elijah Newren  <newren gmail com>

	* src/async-getprop.c:
	* src/common.h:
	* src/display.c:
	* src/eggaccelerators.c:
	* src/frames.c:
	* src/gradient.c:
	* src/iconcache.c:
	* src/keybindings.c:
	* src/metaaccellabel.c:
	* src/place.c:
	* src/prefs.c:
	* src/preview-widget.c:
	* src/screen.c:
	* src/session.c:
	* src/stack.c:
	* src/tabpopup.c:
	* src/theme-viewer.c:
	* src/theme.c:
	* src/window-props.c:
	* src/window.c:
	* src/workspace.c:
	* src/tools/metacity-window-demo.c:
	* src/wm-tester/test-gravity.c:
	* src/wm-tester/test-resizing.c:
	* src/wm-tester/test-size-hints.c:
	Patch from Kjartan Maraas to fix a lot of tiny issues (unused
	variable removal, making unused variables used again, correction
	of types passed/declared for printf arguments, removal of unneeded
	breaks and returns, dead code removal, dead code revival, renaming
	to prevent shadowed variables, declaring unexported functions as
	static) spotted by the intel compiler.  #321439
2006-01-20 22:03:56 +00:00
Elijah Newren
5913b8c5ab Whoops, I forgot to keep my copyright info updated with my previous
2006-01-10  Elijah Newren  <newren@gmail.com>

	* src/bell.c:
	* src/boxes.c:
	* src/boxes.h:
	* src/constraints.c:
	* src/core.c:
	* src/display.c:
	* src/display.h:
	* src/edge-resistance.c:
	* src/frames.c:
	* src/keybindings.c:
	* src/main.c:
	* src/prefs.c:
	* src/prefs.h:
	* src/screen.c:
	* src/screen.h:
	* src/window.c:
	* src/window.h:
	Whoops, I forgot to keep my copyright info updated with my previous
	commits as Havoc had asked me to do.  Doing that now...
2006-01-10 19:43:21 +00:00
Elijah Newren
52df880f32 Add a raise on click option, basically only because all the major distros
2006-01-10  Elijah Newren  <newren@gmail.com>

	Add a raise on click option, basically only because all the major
	distros are patching it in anyway.  See #326156.

	* src/metacity.schemas.in: add the new gconf key and explanation

	* src/prefs.[ch] (#define KEY_RAISE_ON_CLICK, static gboolean
	  raise_on_click, update_raise_on_click, meta_prefs_init,
	  change_notify, meta_prefs_get_raise_on_click,
	  meta_preference_to_string):
	Add all the normal preference handling stuff for this new
	raise-on-click option.

	* src/core.c (meta_core_show_window_menu):
	* src/display.c (event_callback, meta_display_begin_grab_op):
	* src/window.c (window_activate, meta_window_configure_request, ):
	Only raise the window if in raise_on_click mode.

	* src/display.c (meta_display_begin_grab_op,
	  meta_display_end_grab_op, meta_display_check_threshold_reached):
	* src/display.h (struct MetaDisplay):
	* src/window.c (meta_window_handle_mouse_grab_op_event):
	if not in raise-on-click mode only raise on button release if the
	click didn't start a move or resize operation; needs a few extra
	MetaDisplay fields to handle this

	* src/core.c (meta_core_user_lower_and_unfocus):
	no need to do the MRU shuffling if not maintaining the stacking
	order == MRU order invariant

	* src/frames.c (meta_frames_button_press_event):
	* src/window.c (meta_window_begin_grab_op):
	remove an unneeded window raising that is already handled elsewhere
2006-01-10 19:35:03 +00:00
Elijah Newren
a7201d27d1 Merge of all the changes on the constraints_experiments branch. This is
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
	            prioritized)
	  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
	            edges
	   109553 - gravity w/ simultaneous move & resize doesn't work
	   113601 - maximize vertical and horizontal should toggle and be
	            constrained
	   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
	            constraint
	   312104 - resizing the top of a window can cause the bottom to
	            grow
	   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
	       http://tinyurl.com/bwzuu).
	   [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
	            implemented:
             	 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
	     	   edge
             	 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
	    doc/how-constraints-works.txt
	  - 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()
2005-11-19 14:58:50 +00:00
Elijah Newren
26dbf9856b A combination of a couple memory leaks fixes, from Kjartan, Soeren, and I.
2005-10-03  Elijah Newren  <newren@gmail.com>

	A combination of a couple memory leaks fixes, from Kjartan,
	Soeren, and I.  Fixes #313030.

	* src/bell.c (meta_bell_flash_screen): call XFreeGC()

	* src/frames.c (invalidate_cache): free pixels

	* src/window.c (meta_window_show_menu): call
	meta_screen_free_workspace_layout()
2005-10-03 19:22:40 +00:00
Soeren Sandmann
947e45d27d Add a cache of pixmaps for recently exposed frame areas. Makes metacity a
Sun Jun 26 11:19:18 2005  Soeren Sandmann  <sandmann@redhat.com>

	* src/frames.c: Add a cache of pixmaps for recently exposed frame
	areas. Makes metacity a bit faster when dragging windows around.
	See bug 141813.
2005-06-26 21:58:37 +00:00
Ryan Lortie
e003ba87d1 Prevent using the address of a local variable as a hash key. (Bug #307209)
2005-06-10  Ryan Lortie  <desrt@desrt.ca>

        * src/frames.c: Prevent using the address of a local variable
          as a hash key.  (Bug #307209)

        * src/xprops.c (meta_prop_get_values): Fix a small leak in the
          case of a SYNC_COUNTER property value and HAVE_XSYNC not
          defined.  (Bug #307214)
2005-06-11 02:28:04 +00:00
Elijah Newren
16b9aff47c Fix a variety of focus race conditions in all focus modes, or at least
2004-10-04  Elijah Newren  <newren@math.utah.edu>

	Fix a variety of focus race conditions in all focus modes, or at
	least make them harder to trigger (fixes #152000)

	* src/core.[ch] (meta_core_user_lower_and_unfocus): add a
	timestamp parameter; pass it along to
	meta_workspace_focus_default_window

	* src/display.[ch] (meta_display_get_current_time_roundtrip): new
	function

	* src/display.c (event_callback): pass a timestamp to the
	meta_workspace_activate and meta_workspace_focus_default_window
	function calls

	* src/frames.c (meta_frames_button_press_event): pass a timestamp
	to meta_core_user_lower_and_unfocus

	* src/keybindings.c (handle_activate_workspace): pass a timestamp
	to meta_workspace_activate, (process_workspace_switch_grab): pass
	a timestamp to meta_workspace_focus_default_window and
	meta_workspace_activate, (handle_toggle_desktop): pass a timestamp
	to meta_workspace_focus_default_window,
	(do_handle_move_to_workspace): pass a timestamp to
	meta_workspace_activate_with_focus, (handle_workspace_switch):
	meta_workspace_activate

	* src/screen.c (meta_screen_new): pass a timestamp to
	meta_workspace_activate

	* src/window.c (meta_window_free): pass a timestamp to
	meta_workspace_focus_default_window, (idle_calc_showing): don't
	increment the focus sentinel here, (meta_window_minimize): pass a
	timestamp to meta_workspace_focus_default_window,
	(meta_window_client_message), pass a timestamp to
	meta_workspace_focus_default_window

	* src/workspace.h (meta_workspace_activate): add timestamp
	parameter, (meta_workspace_activate_with_focus): add timestamp
	parameter, (meta_workspace_focus_default_window): add timestamp
	parameter

	* src/workspace.c (meta_workspace_focus_mru_window): make this
	function take a timestamp and use it for meta_window_focus or
	XSetInputFocus, (meta_workspace_activate_with_focus): make this
	function take a timestamp and pass it along to meta_window_focus
	and meta_workspace_focus_default_window,
	(meta_workspace_activate): make this function take a timestamp and
	pass it to meta_workspace_activate_with_focus),
	(meta_workspace_focus_default_window): make this function take a
	timestamp, warn if its 0 but try to handle that case sanely, and
	pass the timestamp on to meta_window_focus or
	meta_workspace_focus_mru_window or XSetInputFocus
2004-10-04 20:32:59 +00:00
Kjartan Maraas
43cc3b8606 A load of fixes of issues reported by sparse. Closes bug #152849
2004-09-17  Kjartan Maraas  <kmaraas@gnome.org>

	* src/bell.c: (meta_bell_flash_screen):
	* src/compositor.c:
	* src/effects.c: (meta_effects_draw_box_animation):
	* src/fixedtip.c: (meta_fixed_tip_show):
	* src/frame.c: (find_argb_visual):
	* src/frames.c: (unsigned_long_hash), (meta_frames_manage_window),
	(meta_frames_apply_shapes):
	* src/iconcache.c: (find_largest_sizes), (find_best_size):
	* src/keybindings.c: (meta_spawn_command_line_async_on_screen):
	* src/main.c: (main):
	* src/menu.c: (meta_window_menu_new):
	* src/prefs.c: (meta_prefs_get_visual_bell),
	(meta_prefs_bell_is_audible), (meta_prefs_get_visual_bell_type),
	(meta_prefs_get_action_double_click_titlebar),
	(meta_prefs_get_auto_raise), (meta_prefs_get_auto_raise_delay),
	(meta_prefs_get_reduced_resources):
	* src/screen.c: (meta_create_offscreen_window):
	* src/tabpopup.c: (meta_ui_tab_popup_get_selected):
	* src/theme-parser.c: (meta_theme_load):
	* src/theme.c: (meta_gtk_widget_get_font_desc):
	* src/tools/metacity-mag.c: (mouse_press), (begin_area_grab):
	* src/util.c: (meta_unsigned_long_hash): A load of fixes of issues
	reported by sparse. Closes bug #152849
2004-09-16 23:18:22 +00:00
Elijah Newren
63e1624bd7 Patch from Ken Harris in #135786 to focus a new default window when
2004-09-15  Elijah Newren  <newren@math.utah.edu>

	Patch from Ken Harris in #135786 to focus a new default window
	when lowering via middle-click on the frame.

	* src/core.[hc], src/frames.c: rename meta_core_user_lower to
	meta_core_user_lower_and_unfocus

	* src/core.c (meta_core_user_lower_and_unfocus): if in
	click-to-focus mode then also move the window to the back of the
	mru list and focus the new default window for the active workspace
2004-09-16 00:06:38 +00:00
Havoc Pennington
744efc95a1 disable NameWindowPixmap stuff always for now, it seemed kind of busted
2004-08-27  Havoc Pennington  <hp@redhat.com>

	* src/compositor.c (meta_compositor_new): disable NameWindowPixmap
	stuff always for now, it seemed kind of busted
	(paint_screen): don't grab the server during repaint, adds to the
	speed, though only slightly.

	* src/frames.c (meta_frames_set_window_background): factor out all
	the set_background stuff to one function; disable setting
	background to transparent, because it breaks existing themes. We
	need to add a flag in the theme XML file to say "start me with a
	transparent background"
2004-08-27 22:09:13 +00:00
Havoc Pennington
1f7f29e059 move the have_xrender variable initialization up in the file since it can
2004-08-26  Havoc Pennington  <hp@redhat.com>

	* configure.in: move the have_xrender variable initialization up
	in the file since it can be set as part of composite check

2004-08-19  Havoc Pennington  <hp@redhat.com>

	Fixes from Rich Wareham

	* src/display.h (struct _MetaDisplay): add render extension check
	to the display

	* src/display.c: check for render

	* configure.in: don't build compositing manager by default, don't
	want any nasty surprises; check for render separately from
	compositing manager

	* src/frame.c: use an ARGB visual when available for the window
	frame, so we can be all cool-ass
2004-08-27 02:17:49 +00:00
Havoc Pennington
423b5f5f39 add an event_serial argument and use it when the pointer is already
2003-11-24  Havoc Pennington  <hp@redhat.com>

	* src/display.c (meta_display_begin_grab_op): add an event_serial
	argument and use it when the pointer is already grabbed
	automatically on the button press. May fix bug #126871
2003-11-24 18:09:47 +00:00
Havoc Pennington
e98fad3e62 Merge reduced_resources mode patch from the branch. Offers wireframe and
2003-10-12  Havoc Pennington  <hp@redhat.com>

        Merge reduced_resources mode patch from the branch. Offers
	wireframe and no-animations.

	* src/window.c (implement_showing): no animation if we are
	in reduced resources mode

	* src/prefs.c: add REDUCED_RESOURCES pref

	* src/window.c (meta_window_update_keyboard_resize): fix to
	modify grab_anchor_window_pos to grab_wireframe_rect if
	appropriate instead of window->rect

	* src/display.h (struct _MetaDisplay): add grab_start_serial used
	to avoid responding to events that occurred prior to the grab
	initialization.

	Still broken in various ways, specifically EnterNotify that
	occurred prior to XGrabPointer is processed as if it occurred
	after.

	* src/window.c (meta_window_update_keyboard_move): add this
	instead of meta_window_warp_pointer() crack

	* src/effects.c (meta_effects_update_wireframe): draw a kind of
	grid for the wireframe, instead of just a rectangle, like twm

	* src/screen.c (meta_screen_new): line width of 3 for the XOR gc

        "Reduced resources" mode based on wireframe patch from
	Erwann Chenede. Still pretty buggy.

	* src/keybindings.c (process_keyboard_move_grab)
	(process_keyboard_resize_grab): add gruesome wireframe hacks

	* src/display.c (meta_display_end_grab_op): end wireframe
	(meta_display_begin_grab_op): begin wireframe

	* src/effects.c (meta_effects_end_wireframe)
	(meta_effects_update_wireframe, meta_effects_begin_wireframe):
	routines to draw the wireframe stuff

	* src/window.c (window_should_be_showing): hide window when
	doing wireframe, commented out as it breaks grab
	* src/window.c (meta_window_refresh_resize_popup): handle wireframe

	* src/screen.c (meta_screen_new): create a screen->root_xor_gc
	for use in drawing wireframes

	* src/frames.c (meta_frames_push_delay_exposes): repaint
	everything before we delay
2003-10-12 06:25:38 +00:00
Havoc Pennington
71cd8948d2 Patch from Soeren Sandmann #108926 to improve opaque resize
2003-08-16  Havoc Pennington  <hp@pobox.com>

	Patch from Soeren Sandmann #108926 to improve opaque resize

	* src/frame.c (meta_window_ensure_frame): new function

	* src/ui.c (meta_ui_create_frame_window): new function to create
	a frame with GDK, so that GDK's invalidation etc. work properly
2003-08-16 16:32:10 +00:00
Havoc Pennington
3ad5618596 fix for bug #104018 from David Santiago, change button state to normal
2003-05-16  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (meta_frames_paint_to_drawable): fix for
	bug #104018 from David Santiago, change button state to
	normal while it's being pressed if you move the mouse
	outside it. Do this by tracking prelit_control for whether
	to draw a button as active, not just for whether to draw
	it as prelit.
	(meta_frames_motion_notify_event): also update prelit_control
	while clicking a button
2003-05-16 23:09:49 +00:00
Havoc Pennington
ec9cf27a81 purge HAVE_GTK_MULTIHEAD from the source code, not just from configure.in.
2003-04-21  Havoc Pennington  <hp@redhat.com>

	* purge HAVE_GTK_MULTIHEAD from the source code, not just from
	configure.in. Yes I am a loser.
2003-04-21 23:37:42 +00:00
Havoc Pennington
339a86150b add ability to --disable-shape
2003-01-11  Havoc Pennington  <hp@pobox.com>

	* configure.in: add ability to --disable-shape
2003-01-11 18:09:12 +00:00
Havoc Pennington
aad72e575d put in the HAVE_GTK_MULTIHEAD conditionals so we build with GTK 2.0
2003-01-05  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_apply_shapes): put in the
	HAVE_GTK_MULTIHEAD conditionals so we build with GTK 2.0
2003-01-05 19:15:58 +00:00
Havoc Pennington
6cfcc01334 handle the client having a shape mask, fixes #101806
2003-01-05  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_apply_shapes): handle
	the client having a shape mask, fixes #101806

	* src/core.c (meta_core_get_client_xwindow): new function

	* src/frame.c, src/frame.h: keep a flag for whether we need to
	update the frame shape

	* src/window.c (meta_window_new): select for ShapeNotify

	* src/display.h, src/display.c: actually query the shape
	extension, instead of just using it all over the place.

	* src/prefs.c (update_application_based): don't let people turn on
	application_based, as it just causes funky bugs. We can reenable
	the pref when/if it ever does something useful.
2003-01-05 07:51:02 +00:00
Havoc Pennington
cef58f676d rearrange this function a bit, so that we return CONTROL_TITLE for
2002-12-01  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (get_control): rearrange this function a bit, so
	that we return CONTROL_TITLE for anything above the bottom of the
	titlebar, in the fallback case where no other control was found.
	Also, don't return RESIZE_N for title rect above the top resize
	size, unless the window is resizable.
	(meta_frames_button_press_event): only start a move when clicking
	control TITLE, not control NONE. This way you don't start moving
	a nonresizable window if you click its edges.
2002-12-02 01:34:27 +00:00
Havoc Pennington
1094410ff8 add "what happens when you double click the titlebar" setting, patch from
2002-10-18  Havoc Pennington  <hp@redhat.com>

	* src/prefs.c, src/frames.c: add "what happens when you double
	click the titlebar" setting, patch from Sean Middleditch bug
	#95625.  This is basically an "add Windows emulation mode" patch.
2002-10-18 21:22:27 +00:00
Havoc Pennington
82e5cb578c don't raise window on button 2 click, only on button 1 and button 3.
2002-10-11  Havoc Pennington  <hp@redhat.com>

	* src/display.c (event_callback): don't raise window on button 2
	click, only on button 1 and button 3.

	* src/frames.c (meta_frames_button_press_event): lower on button 2
	press on frame

	* src/core.c (meta_core_user_lower): new function
2002-10-11 18:42:40 +00:00
Havoc Pennington
7641c6f952 Button-reordering patch. Has all the code except actually installing a
2002-10-03  Havoc Pennington  <hp@pobox.com>

        Button-reordering patch. Has all the code except actually
	installing a gconf schema and reading the gconf key in prefs.c.
	metacity-theme-viewer displays the button layouts for testing
	themes.

	* src/preview-widget.c (meta_preview_size_request): make up a
	width/height if no child widget

	* src/prefs.c (meta_prefs_get_button_layout): new function

	* src/frames.c: get the button layout from prefs and
	use it when drawing

	* src/theme.c (meta_frame_layout_calc_geometry): enhance to be
	able to lay out buttons in different arrangements
	(button_rect): draw the new button background rectangles
	(meta_theme_draw_frame): require a button layout argument
	(meta_theme_calc_geometry): pass in the button layout

	* src/preview-widget.h: mod to handle button layouts

	* src/theme-viewer.c: mod to handle button layouts
2002-10-04 02:28:57 +00:00
Havoc Pennington
a5c4eaa55c don't filter out prelight for unmaximize button. #83860
2002-09-03  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_update_prelit_control): don't filter
	out prelight for unmaximize button. #83860
	(meta_frames_paint_to_drawable): handle unmaximize here as well
2002-09-04 02:21:26 +00:00
Havoc Pennington
e74969bd17 if in the title rect check for y <= TOP_RESIZE_HEIGHT
2002-08-20  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (get_control): if in the title rect check for y
	<= TOP_RESIZE_HEIGHT

	* src/display.c (meta_spew_event): put x/y coordinates in spew for
	enter/leave notify

	* src/frames.c (meta_frames_motion_notify_event): move cursor
	changing from here to update_prelit_control so it happens on enter
	notify as well
	(get_control): change test "y < TOP_RESIZE_HEIGHT" to
	"y <= TOP_RESIZE_HEIGHT"

	* src/Makefile.am (EXTRA_DIST): include .in files in EXTRA_DIST
2002-08-20 20:18:18 +00:00
Havoc Pennington
f3446fad9a init button states for the button backgrounds
2002-08-04  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (meta_frames_paint_to_drawable): init button
	states for the button backgrounds

	* src/themes/Atlanta/metacity-theme-1.xml: adapt to work correctly
	with button repositioning
2002-08-04 20:45:05 +00:00
Havoc Pennington
585e362526 raise/focus on click, even if the click was on the client area (this makes
2002-08-04  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (meta_frames_button_press_event): raise/focus
	on click, even if the click was on the client area
	(this makes Alt+button1 raise windows again, yay)

	* src/stack.c (compute_layer): put panels in the DOCK layer always
	(keep them on top of other windows). Still sloppy-focus raised
	with respect to other docks.

	* configure.in: remove -Wshadow for now as GTK headers make all
	kinds of noise with it.
2002-08-04 20:20:53 +00:00
Havoc Pennington
88a0d1ff03 look for themes in ~/.themes/NAME/metacity-1/ and
2002-07-24  Havoc Pennington  <hp@redhat.com>

	* src/theme-parser.c (meta_theme_load): look for themes in
	~/.themes/NAME/metacity-1/ and datadir/themes/NAME/metacity-1
	instead of the old locations.

	* src/themes/Makefile.am: install themes to
	datadir/themes/NAME/metacity-1/ to match how GTK works, breaking
	third-party themes yet again! woot!
2002-07-24 18:28:56 +00:00
Havoc Pennington
f7b55bfdcc put Gorilla back in the build
2002-07-23  Havoc Pennington  <hp@redhat.com>

	* src/themes/Makefile.am (THEMES): put Gorilla back in the build

	* src/themes/Gorilla/metacity-theme-1.xml,
	src/themes/Crux/metacity-theme-1.xml: fixes from
	Sebastien Delestaing so that these themes work properly with
	different font sizes.

	* src/frames.c (get_control): patch from Balamurali Viswanathan
	for #81984 (resize titlebar from the top not the bottom)
2002-07-24 02:21:24 +00:00
Mark McLoughlin
f0a811421f s/gdk_get_default_display/gdk_display_get_default/
2002-06-25  Mark McLoughlin  <mark@skynet.ie>

        * src/fixedtip.c: (meta_fixed_tip_show):
        * src/frames.c: (meta_frames_new):
        * src/tabpopup.c: (meta_ui_tab_popup_new):
        s/gdk_get_default_display/gdk_display_get_default/
        s/gdk_get_default_screen/gdk_screen_get_default/
2002-06-25 07:08:18 +00:00
Havoc Pennington
deed8016ed don't raise/focus the window if minimize/close are clicked, patch from
2002-06-09  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_button_press_event): don't raise/focus
	the window if minimize/close are clicked, patch from Gaute
	Lindkvist #75460
2002-06-09 04:14:40 +00:00
Havoc Pennington
d5bcea27e3 move the remove_listener to finalize instead of destroy, thanks to Jayaraj
2002-06-01  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_finalize): move the remove_listener
	to finalize instead of destroy, thanks to Jayaraj for tracking
	down the bug.
2002-06-02 00:24:31 +00:00
Havoc Pennington
3a745537f0 verbose-log on startup whether we were compiled with various extensions
2002-05-30  Havoc Pennington  <hp@redhat.com>

	* src/main.c (main): verbose-log on startup whether we were
	compiled with various extensions

	* src/display.c (meta_display_queue_retheme_all_windows): reapply
	shape mask when changing themes, sucks to do it here though, makes
	theme changing slower. Needs fixing.

	* src/theme-parser.c (parse_toplevel_element): parse rounded
	corner options to frame_geometry

	* src/frames.c (meta_frames_apply_shapes): apply rounded corners
	if requested by the theme

	* configure.in (HAVE_SHAPE): check for shape extension
2002-05-31 00:02:54 +00:00
Havoc Pennington
0498d55314 Patch from Erwann Chenede for raise_or_lower keybinding
2002-05-28  Havoc Pennington  <hp@pobox.com>

        Patch from Erwann Chenede for raise_or_lower keybinding

	* src/display.c, src/common.h: POINT_IN_RECT moved to a common
	location, removed from here
	(meta_rectangle_intersect): move here and make it public

	* src/prefs.c: add raise_or_lower keybinding

	* src/stack.c (meta_stack_get_below, meta_stack_get_above): add an
	arg to only get windows within the same layer

	* src/keybindings.c (handle_raise_or_lower): add handling for a
	"raise window if obscured, else lower" keybinding
2002-05-29 03:11:24 +00:00
Jayaraj Rajappan
49fe8f0399 fix for bugzilla bug #72314, filter out LeaveNotify caused by grabs when
2002-05-23  Jayaraj Rajappan <jayaraj.rajappan@wipro.com>

	* src/display.c (event_callback): fix for bugzilla bug #72314,
	filter out LeaveNotify caused by grabs when in mouse focus mode.
2002-05-24 02:55:54 +00:00
Havoc Pennington
912afb6e6b DefaultScreen() returns the screen number not Screen*
2002-05-09  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (show_tip_now): DefaultScreen() returns the screen
	number not Screen*

	* src/frame.c (meta_frame_sync_to_window): immediately repaint
	frame whenever we resize it, if we're inside a grab operation.

	* src/frames.c (meta_frames_repaint_frame): new function

	* src/window.c (meta_window_new): initialize window's colormap
	(meta_window_notify_focus): install the colormap for a window when
	it gets focus, uninstall on unfocus.

	* src/window.h (struct _MetaWindow): store window's colormap

	* src/display.c (event_callback): note changes to window colormap

	* src/frame.c (EVENT_MASK): add ColormapChangeMask
2002-05-09 22:34:00 +00:00
Anders Carlsson
0494b044d5 Add multi-screen support. Also add patch by Erwann Chenede to make
2002-05-08  Anders Carlsson  <andersca@gnu.org>

	* configure.in:
	* src/display.c: (meta_display_open):
	* src/fixedtip.c: (meta_fixed_tip_show):
	* src/fixedtip.h:
	* src/frames.c: (meta_frames_new), (show_tip_now):
	* src/frames.h:
	* src/menu.c: (meta_window_menu_new):
	* src/ui.c: (meta_ui_new):
	Add multi-screen support. Also add patch by Erwann Chenede
	to make tooltips appear on the correct screen.
2002-05-08 16:24:28 +00:00
Anders Carlsson
9138b9aa3c Fix atom name; it's _NET_SHOW_DESKTOP, not _NET_WM_SHOW_DESKTOP.
2002-05-07  Anders Carlsson  <andersca@gnu.org>

	* src/display.c: (meta_display_open), (event_callback),
	(meta_display_update_show_desktop_hint):
	* src/display.h:
	* src/screen.c: (set_supported_hint):
	Fix atom name; it's _NET_SHOW_DESKTOP, not
	_NET_WM_SHOW_DESKTOP.

	* src/frames.c: (meta_frames_unmanage_window):
	Restore the mouse cursor to default when unmanaging a window.
2002-05-07 14:42:47 +00:00
Havoc Pennington
6f8a7f1870 chop out the portion of the region that's outside the screen.
2002-05-04  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_paint_to_drawable): chop out the
	portion of the region that's outside the screen.

	* src/core.c (meta_core_get_screen_size): new function
	(meta_core_get_frame_extents): new function
2002-05-05 00:45:01 +00:00
Havoc Pennington
7fbbd0200f disable automatic GTK double buffering, since it resulted in gigantic
2002-05-04  Havoc Pennington  <hp@pobox.com>

	* src/frames.c (meta_frames_init): disable automatic GTK double
	buffering, since it resulted in gigantic backing pixmaps the size
	of the whole screen.
	(meta_frames_paint_to_drawable): change to take a region argument;
	punch the client area out of the expose region, then iterate over
	rectangles in the region and draw each, manually doing
	begin_paint_rect. Results in 4 long thin backing pixmaps
	per frame repaint, instead of one large backing pixmap.
	Suggested by Owen.
2002-05-05 00:21:17 +00:00
Havoc Pennington
262e6fab27 use hash_table_replace instead of g_hash_table_insert
2002-03-06  Havoc Pennington  <hp@redhat.com>

	* src/frames.c (meta_frames_manage_window): use hash_table_replace
	instead of g_hash_table_insert

	* src/main.c (main): only enable verbose/debug if you set
	METACITY_VERBOSE/METACITY_DEBUG

	* src/util.c (ensure_logfile): only use a log file if
	METACITY_USE_LOGFILE is set

	* src/display.c (meta_display_for_x_display): add warning if
	MetaDisplay isn't found

	* src/window.c (meta_window_free): add an assertion that we
	successfully cleared the grab window
2002-03-06 22:27:24 +00:00
Havoc Pennington
a7378b709b use the preview widget here
2002-02-14  Havoc Pennington  <hp@pobox.com>

	* src/theme-viewer.c: use the preview widget here

	* src/preview-widget.h, src/preview-widget.c: make the theme
	preview into a nice widget

	* src/frames.c (meta_frames_ensure_layout): replace frame layout
	if the frame style changes, this only ends up mattering if you
	e.g. changed the font size for windows in a different state such
	as maximized, which is crack, but the code may as well be correct

	* src/theme.c (meta_theme_get_frame_style): new function so we can
	detect an invalid cache of the PangoLayout in a frame
2002-02-15 02:32:48 +00:00