Commit Graph

122 Commits

Author SHA1 Message Date
Richard Hult
e206f6dd3a Ignore events and break any grabs while the window is being dragged.
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c: (gdk_event_translate): Ignore
	events and break any grabs while the window is being dragged.

svn path=/trunk/; revision=18165
2007-06-16 21:39:42 +00:00
Richard Hult
526fecc2f9 Defer setting the parent until the window is shown, otherwise it gets
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_transient_for):
	Defer setting the parent until the window is shown, otherwise it
	gets unconditionally shown here.

svn path=/trunk/; revision=18164
2007-06-16 21:21:52 +00:00
Richard Hult
2902d87a22 Move the checks for no window or a non-GDK window from here...
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (find_mouse_window_for_ns_event):
	Move the checks for no window or a non-GDK window from here...
	(gdk_event_translate): ...to here. Reorder the code so that we
	detect the cases where we need to break grabs before bailing
	out.

svn path=/trunk/; revision=18161
2007-06-16 16:16:43 +00:00
Richard Hult
4fd1fb4d9b Break out into a separate function.
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (gdk_event_translate) 
	(break_all_grabs): Break out into a separate function.

svn path=/trunk/; revision=18160
2007-06-16 15:43:23 +00:00
Richard Hult
48a45ff672 Implement, to be used to detect if the window is currently being moved
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/GdkQuartzWindow.c: (isInMove): Implement, to be used
	to detect if the window is currently being moved with the mouse.

svn path=/trunk/; revision=18159
2007-06-16 15:41:27 +00:00
Richard Hult
f55096fc74 Don't set parent/child relationship for tooltip windows since that moves
2007-06-16  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c (gdk_window_set_transient_for):
	Don't set parent/child relationship for tooltip windows since that
	moves the parent window to the front, due to the tooltip having a
	high window level.

svn path=/trunk/; revision=18158
2007-06-16 15:38:33 +00:00
Michael Natterer
f7ba83c613 fix angles by flipping the coordinate system back to its original y
2007-06-10  Michael Natterer  <mitch@imendio.com>

	* gdk/quartz/gdkdrawable-quartz.c (gdk_quartz_draw_arc): fix
	angles by flipping the coordinate system back to its original y
	direction. The implementtion is still broken for ellipses, will
	have to simulate them using bezier curves.


svn path=/trunk/; revision=18095
2007-06-10 16:29:31 +00:00
Michael Natterer
6c3637ea3e add utility function gdk_quartz_fix_cap_not_last_line() which fixes the
2007-06-08  Michael Natterer  <mitch@imendio.com>

	* gdk/quartz/gdkdrawable-quartz.c: add utility function
	gdk_quartz_fix_cap_not_last_line() which fixes the coordinates for
	GDK_CAP_NOT_LAST lines at least for horizontal and vertical lines.

	(gdk_quartz_draw_segments)
	(gdk_quartz_draw_lines): use it here.


svn path=/trunk/; revision=18080
2007-06-07 22:26:27 +00:00
Michael Natterer
dde0d5ffa5 add gdk_gc_quartz_init() and set some values to the defaults used by X11.
2007-06-07  Michael Natterer  <mitch@imendio.com>

	* gdk/quartz/gdkgc-quartz.c: add gdk_gc_quartz_init() and set
	some values to the defaults used by X11.

	(gdk_quartz_gc_set_values): really set cap_style when
	GDK_GC_CAP_STYLE is in the mask, not line_style.


svn path=/trunk/; revision=18079
2007-06-07 21:22:15 +00:00
Michael Natterer
88a05af64f use the same code for GDK_XOR as for GDK_INVERT. Xor with an arbitrary
2007-06-07  Michael Natterer  <mitch@imendio.com>

	* gdk/quartz/gdkgc-quartz.c (_gdk_quartz_gc_update_cg_context):
	use the same code for GDK_XOR as for GDK_INVERT. Xor with an
	arbitrary color is impossible to implement with quartz.


svn path=/trunk/; revision=18077
2007-06-07 18:25:15 +00:00
Richard Hult
ec32b2aaa3 Rework how we get the event window: don't get the window from the NSEvent,
2007-06-06  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (find_mouse_window_for_ns_event)
	(find_window_for_ns_event): Rework how we get the event window:
	don't get the window from the NSEvent, always use the mouse window
	instead. Fix mouse window tracking by only using MouseExited for
	non-gdk windows, and to always use the NSEvent window to get the
	right gdk window in MouseEntered. Add comments to the code. Fixes bug
	#350460.

svn path=/trunk/; revision=18065
2007-06-06 18:42:07 +00:00
Richard Hult
ed8d0fc691 Don't do anything if the two windows are the same.
2007-06-06  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (get_converted_window_coordinates):
	Don't do anything if the two windows are the same.
	(find_window_for_ns_event): Translate coordinates to be relative
	the grab window when appropriate.

svn path=/trunk/; revision=18064
2007-06-06 16:23:50 +00:00
Richard Hult
726c23e20f Ignore if the old and new windows are the same.
2007-06-06  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c
	(_gdk_quartz_events_update_mouse_window): Ignore if the old and new
	windows are the same.

svn path=/trunk/; revision=18049
2007-06-06 09:06:59 +00:00
Richard Hult
fb6a0314fd Update comment to be more clear and print a warning if we try to create a
2007-06-06  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (synthesize_crossing_events):
	Update comment to be more clear and print a warning if we try to
	create a crossing event without knowing what the current mouse
	window is, to help track down focus bugs.

	* gdk/quartz/gdkevents-quartz.c
	(_gdk_quartz_events_update_focus_window): Fix indentation.

svn path=/trunk/; revision=18047
2007-06-06 08:29:20 +00:00
Richard Hult
949a86729d Don't let temp windows become key window.
2007-06-05  Richard Hult  <richard@imendio.com>

	* gdk/quartz/GdkQuartzWindow.c: Don't let temp windows become key
	window.

svn path=/trunk/; revision=18046
2007-06-06 08:21:14 +00:00
Richard Hult
3337ee8fa2 Don't try to make temp windows key windows, fixes problem introduced
2007-06-04  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c:
	(show_window_internal): Don't try to make temp windows key
	windows, fixes problem introduced below.

svn path=/trunk/; revision=18040
2007-06-04 21:25:42 +00:00
Richard Hult
72469142a0 * gdk/quartz/gdkwindow-quartz.c: Implement simple versions of
2007-06-04  Richard Hult  <richard@imendio.com>

	* gdk/quartz/GdkQuartzWindow.c: * gdk/quartz/gdkwindow-quartz.c:
	Implement simple versions of gdk_window_set_accept_focus and
	gdk_window_set_focus_on_map.

svn path=/trunk/; revision=18038
2007-06-04 20:45:30 +00:00
Richard Hult
60be3caaaa Implement.
2007-06-04  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c: (gdk_window_raise),
	(gdk_window_raise): Implement.

svn path=/trunk/; revision=18037
2007-06-04 20:08:31 +00:00
Richard Hult
05e560661f Implement gdk_window_set_transient_for.
2007-06-04  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c:
	* gdk/quartz/gdkwindow-quartz.h: Implement 
	gdk_window_set_transient_for.

svn path=/trunk/; revision=18036
2007-06-04 20:02:58 +00:00
Richard Hult
9daa2554b5 Set the key modifier state.
2007-06-03  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c: (create_crossing_event): Set the key
	modifier state.

svn path=/trunk/; revision=18017
2007-06-03 18:51:16 +00:00
Richard Hult
975e7683b8 Make pointer grab emulation work a bit better:
2007-06-03  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c: Make pointer grab emulation work a bit
	better:
	(gdk_display_pointer_is_grabbed): Do what the docs say and don't
	consider implicit grabs here.
	(gdk_pointer_grab): Overriding a grab by the same app should always be
	succesful.
	(gdk_event_translate): Implicit grabs should not be owner events.

svn path=/trunk/; revision=18016
2007-06-03 18:48:47 +00:00
Richard Hult
1c413a691c Fix the coordinates in crossing events so they are relative to the right
2007-06-01  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c:
	(get_converted_window_coordinates), (create_crossing_event): Fix the
	coordinates in crossing events so they are relative to the right
	window.

svn path=/trunk/; revision=18007
2007-06-01 21:46:45 +00:00
Richard Hult
be540c29ac Make function naming consistent for the various functions that retrieve
2007-06-01  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.[ch]: Make function naming
	consistent for the various functions that retrieve data from an
	event.

	* gdk/quartz/gdkprivate-quartz.h: 
	* gdk/quartz/gdkwindow-quartz.[ch]: Remove the now unused
	_gdk_quartz_window_find_child_by_point() function.

svn path=/trunk/; revision=18006
2007-06-01 21:03:34 +00:00
Matthias Clasen
885ba04648 Add support for composited child windows. (#412882, Ryan Lortie)
2007-06-01  Matthias Clasen  <mclasen@redhat.com>

        Add support for composited child windows.  (#412882, Ryan Lortie)

        * gdk/gdk.symbols:
        * gdk/gdkdisplay.h:
        * gdk/gdkinternals.h:
        * gdk/gdkwindow.[hc]: Add gdk_display_supports_composite() and
        gdk_window_set_composited().

        * gdk/x11/gdkevents-x11.c:
        * gdk/x11/gdkdisplay-x11.[hc]:
        * gdk/x11/gdkwindow-x11.[hc]: X11 implementation.

        * gdk/win32/gdkdisplay-win32.c:
        * gdk/win32/gdkwindow-win32.c: Dummy win32 implementration.

        * gdk/quartz/gdkdisplay-quartz.c:
        * gdk/quartz/gdkwindow-quartz.c: Dummy Quartz implementation.

        * gdk/directfb/gdkdisplay-directfb.c:
        * gdk/directfb/gdkwindow-directfb.c: Dummy DirectFB implementation.

        * tests/testgtk.c: Add a "composited window" test.


svn path=/trunk/; revision=18004
2007-06-01 12:16:12 +00:00
Richard Hult
71cf54aef3 Add this function, bug #438440.
2007-05-30  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkselection-quartz.c (gdk_free_text_list): Add this
	function, bug #438440.

svn path=/trunk/; revision=17991
2007-05-30 17:20:26 +00:00
Richard Hult
f2f1be4e4f Break out code that was repeated into separate functions and call them
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (get_child_coordinates_from_ancestor)
	(get_ancestor_coordinates_from_child): Break out code that was
	repeated into separate functions and call them instead.
	(find_window_for_mouse_nsevent): Break out this from
	find_window_for_nsevent to make the code clearer.
	(find_window_for_nsevent): Use the above and fix the returned
	coordinates in the process so that they are always relative the
	found window, both for the normal case and during grabs. Still
	needs fixing for the case where we get nsevents for a window other
	than than grab window during grabs.

svn path=/trunk/; revision=17971
2007-05-28 21:11:55 +00:00
Richard Hult
d36c24a8b9 Fix typo, we need both press and release in the mask to trigger implicit
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (gdk_event_translate): Fix typo,
 	we need both press and release in the mask to trigger implicit
	grabs.

svn path=/trunk/; revision=17970
2007-05-28 20:55:26 +00:00
Richard Hult
93948cdb4a Reset all the grab state, to help debugging. (gdk_event_translate): Use
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c (pointer_ungrab_internal): Reset
	all the grab state, to help debugging.
	(gdk_event_translate): Use pointer_ungrab_internal instead of
	duplicating the code here.

svn path=/trunk/; revision=17969
2007-05-28 20:51:11 +00:00
Richard Hult
6ecae9e5eb Refactored version of _gdk_quartz_window_find_child_by_point, that doesn't
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkprivate-quartz.h:
	* gdk/quartz/gdkwindow-quartz.c (find_child_window_helper)
	(_gdk_quartz_window_find_child): Refactored version of
	_gdk_quartz_window_find_child_by_point, that doesn't return any
	coordinates as the users of this function already have the
	coordinates and need to translate them differently.
	(_gdk_windowing_window_get_pointer): Fixup coordinate translation.
	(_gdk_windowing_window_at_pointer): Likewise.

svn path=/trunk/; revision=17968
2007-05-28 20:42:51 +00:00
Richard Hult
52709dff9a Don't traverse beyond the toplevel of the passed in window.
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c
	(find_window_interested_in_event_mask): Don't traverse beyond the
	toplevel of the passed in window.

svn path=/trunk/; revision=17967
2007-05-28 20:24:59 +00:00
Richard Hult
63228c672f Set a size for the root window.
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c: (_gdk_windowing_window_init): Set
	a size for the root window.

svn path=/trunk/; revision=17966
2007-05-28 20:22:26 +00:00
Richard Hult
0057d19453 Add comments about what various coordinates are relative to.
2007-05-28  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c: Add comments about what various
	coordinates are relative to.

svn path=/trunk/; revision=17965
2007-05-28 20:20:46 +00:00
Richard Hult
caab6d9737 Implement copying from a window, part of bug #348493.
2007-05-25  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkimage-quartz.c: (_gdk_quartz_image_copy_to_image):
	Implement copying from a window, part of bug #348493.

svn path=/trunk/; revision=17917
2007-05-25 19:47:23 +00:00
Richard Hult
e8071ea7c9 Set the resolution.
2007-05-21  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkdisplay-quartz.c: (gdk_display_open): Set the
	resolution.
	
	* gdk/quartz/gdkscreen-quartz.c: Use the autorelease pool macros.

svn path=/trunk/; revision=17887
2007-05-21 19:40:43 +00:00
Richard Hult
d9dedc36ec Fix bugs #428733 and #433301. Turns out the lockFocus logic was flawed,
007-05-05  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkdrawable-quartz.c:
	(gdk_quartz_drawable_get_context),
	(gdk_quartz_drawable_release_context): Fix bugs #428733 and #433301.
	Turns out the lockFocus logic was flawed, now we only lock/unlock 
	when called outside a real expose event and never flush manually.

svn path=/trunk/; revision=17798
2007-05-05 10:19:39 +00:00
Richard Hult
34c0f15bdf Implement.
2007-04-30  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c: (gdk_window_set_opacity):
	Implement.

svn path=/trunk/; revision=17743
2007-04-30 17:42:49 +00:00
Ronald Bultje
92563b7d22 fix two more potential races that could happen when an application is
2007-04-28  Ronald Bultje  <rbultje@ronald.bitfreak.net>

        * gdk/quartz/gdkeventloop-quartz.c: (select_thread_func),
        (poll_func): fix two more potential races that could happen when
        an application is polling in the mainloop and a separate thread
        tries to wake it up using g_idle_add(). Fixes #425271 comment 5.


svn path=/trunk/; revision=17680
2007-04-28 18:14:19 +00:00
Cody Russell
273c94e194 Win32 drop shadow goodness
svn path=/trunk/; revision=17643
2007-04-25 23:44:54 +00:00
Richard Hult
c8d89a96a2 Refactor the process updates functions to share code between them. Also
2007-04-18  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c:
	(gdk_window_quartz_process_updates_internal),
	(gdk_window_quartz_process_all_updates),
	(gdk_window_impl_quartz_process_updates): Refactor the process 
	updates functions to share code between them. Also fixes bug 
	#427660 by not updating larger regions than necessary.

svn path=/trunk/; revision=17610
2007-04-18 20:09:55 +00:00
Ronald Bultje
7c0f9e4d9d Protect the polling thread setup and shutdown function by mutexes and read
* gdk/quartz/gdkeventloop-quartz.c: Protect the polling thread
          setup and shutdown function by mutexes and read the wakeup
          pipe unconditionally and unblocking. This should make the main
          loop always be woken up when using g_idle_add() from another
          thread in the Quartz backend (#425271).


svn path=/trunk/; revision=17595
2007-04-11 11:08:22 +00:00
Richard Hult
9e2114e629 Clean up namespaces to make the code more maintainable.
2007-04-06  Richard Hult  <richard@imendio.com>

	* gdk/quartz/: Clean up namespaces to make the code more
	maintainable.

	* gdk/quartz/gdkdrawable-quartz.c:
	* gdk/quartz/gdkgc-quartz.c: Fix bug #418384, alignment of tiled
	images, by setting the pattern phase for the CG pattern.

svn path=/trunk/; revision=17584
2007-04-06 21:12:48 +00:00
Richard Hult
47b6f2c2eb Add stubs for gdk_notify_startup_complete_with_id and
2007-03-15  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkmain-quartz.c: Add stubs for
	gdk_notify_startup_complete_with_id and gdk_window_set_startup_id
	here too.

svn path=/trunk/; revision=17521
2007-03-15 18:06:58 +00:00
Richard Hult
d7a33adeda Update for the new quartz cairo surface API (#410442). Don't lock focus
2007-03-10  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkdrawable-quartz.c:
	(gdk_quartz_drawable_get_context): Update for the new quartz cairo 
	surface API (#410442). Don't lock focus unless called outside of an 
	expose event.
	(gdk_quartz_drawable_release_context): Only flush the CG context and 
	unlock focus if called outside of expose.
	(gdk_quartz_ref_cairo_surface): Reuse the surface during its lifetime.
	(_gdk_quartz_drawable_finish): New function, used to free the cached
	cairo surface.

	* gdk/quartz/gdkwindow-quartz.c:
	(gdk_window_impl_quartz_begin_paint_region): A few small style changes.
	(gdk_window_quartz_process_all_updates): Move the autorelease pool
	allocation and freeing outside the loop.
	(_gdk_windowing_window_destroy): Finish the drawable.
	(move_resize_window_internal): Small cleanup and remove comment.
	(_gdk_window_impl_quartz_get_type): No need to make the type info
	static.

	* gdk/quartz/gdkpixmap-quartz.c: Finish the drawable.

svn path=/trunk/; revision=17463
2007-03-10 21:58:49 +00:00
Richard Hult
9493e135c7 Add missing function signature to fix a build warning.
2007-03-10  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkprivate-quartz.h: Add missing function signature to fix
	a build warning.

svn path=/trunk/; revision=17462
2007-03-10 21:35:20 +00:00
Richard Hult
feabd0d76d Plug a leak.
2007-03-10  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkdisplay-quartz.c: (gdk_display_get_name): Plug a leak.

svn path=/trunk/; revision=17461
2007-03-10 21:04:05 +00:00
Richard Hult
5b14b85c3a Remove unneccesary exposure mask check.
2007-03-10  Richard Hult  <richard@imendio.com>

	* gdk/quartz/GdkQuartzView.c: Remove unneccesary exposure mask check.

svn path=/trunk/; revision=17460
2007-03-10 20:57:13 +00:00
Richard Hult
5c477d1f12 Don't set the font name here, leave that to themes, fixes #387508.
2007-03-10  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c: (gdk_screen_get_setting): Don't set
	the font name here, leave that to themes, fixes #387508.

svn path=/trunk/; revision=17459
2007-03-10 20:50:58 +00:00
Matthias Clasen
82ce59cd0f Remove unnecessary NULL checks before g_free(). (#369666, Morten Welinder,
2007-03-09  Matthias Clasen <mclasen@redhat.com>

        * Everywhere: Remove unnecessary NULL checks before
        g_free().  (#369666, Morten Welinder, Djihed Afifi)

        * configure.in: Check for ftw.h



svn path=/trunk/; revision=17444
2007-03-09 21:57:37 +00:00
Richard Hult
e344a52104 Setup release pools to plug two leaks, patch from Erik van Pienbroek,
2007-02-18  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkwindow-quartz.c:
	(gdk_window_quartz_process_all_updates),
	(_gdk_windowing_window_destroy): Setup release pools to plug two leaks,
	patch from Erik van Pienbroek, fixes bug #396649.

svn path=/trunk/; revision=17325
2007-02-18 11:04:06 +00:00
Richard Hult
fe5f64ecbc Add stub for gdk_display_add_client_message_filter, patch from Taybin
2007-02-18  Richard Hult  <richard@imendio.com>

	* gdk/quartz/gdkevents-quartz.c: Add stub for 
	gdk_display_add_client_message_filter, patch from Taybin Rutkin. Fixes
	bug #405870.

	* gdk/quartz/gdkprivate-quartz.h: Add prototypes to fix build warnings.

svn path=/trunk/; revision=17324
2007-02-18 10:56:13 +00:00