Commit Graph

478 Commits

Author SHA1 Message Date
Benjamin Otte
0cef9c2bbe quartz: Do repeated fill with Cairo
Some things are so easy with Cairo...

XXX: I did not compile this, this is just proof of concept.
2010-08-10 21:02:28 +02:00
Benjamin Otte
65ac54bb23 gdk: Make window moves a custom vfunc
The window move code needs special attention for multiple reasons:
- invalid areas for expose events need to be modified
- self-copy is not supported by Cairo
- in X11, copying from an overlapped Window might cause unexposed areas
  to be copied in, spo expose events for those need to be generated.

This was all special cased in various parts of the code. By making it an
explicit vfunc, we can work around it.
2010-08-10 21:02:28 +02:00
Benjamin Otte
600fbd3e74 API: remove gdk_draw_rectangle() 2010-08-10 21:02:28 +02:00
Benjamin Otte
9ee5176492 API: remove gdk_draw_point(s) 2010-08-10 21:02:27 +02:00
Benjamin Otte
a9e99e7f5b API: remove gdk_draw_{line,lines,segments}
Those were the 3 intermixed line drawing calls.
2010-08-10 21:02:27 +02:00
Benjamin Otte
e85dfc7cc4 API: remove gdk_draw_polygon() 2010-08-10 21:02:27 +02:00
Benjamin Otte
559ae63f01 API: remove gdk_draw_arc() 2010-08-10 21:02:27 +02:00
Benjamin Otte
14fe04ec89 API: remove GdkImage
It was unused and buggy.
2010-08-10 21:02:26 +02:00
Benjamin Otte
6f5084551a API: remove gdk_drawable_copy_to_image() 2010-08-10 21:02:26 +02:00
Benjamin Otte
b926ce719b API: remove gdk_draw_image() 2010-08-10 21:02:26 +02:00
Benjamin Otte
4f8dbd4a8d API: Remove gdk_draw_pixbuf() 2010-08-10 21:02:25 +02:00
William Jon McCann
0cfb94cdd4 [gdk] Add gdk_keymap_get_num_lock_state
https://bugzilla.gnome.org/show_bug.cgi?id=623239
2010-07-01 21:44:09 -04:00
Kristian Rietveld
be27fba3f3 Remove dummy for gdk_event_get_graphics_expose()
This was a deprecated function that has been removed.
2010-06-30 21:43:25 +02:00
Kristian Rietveld
1564d8922a Fix typos in Cairo region conversion so that Quartz actually compiles 2010-06-30 11:10:29 +02:00
Kristian Rietveld
53fbf2a30a Update Quartz DnD code to set device on DnD events 2010-06-30 10:56:44 +02:00
Kristian Rietveld
03a313d2a9 Implement gdk_drag_context_{get,set}_device in Quartz backend 2010-06-30 10:56:44 +02:00
Benjamin Otte
300e6b84cd s/GdkRegion/cairo_region_t/ in all of gtk
https://bugzilla.gnome.org/show_bug.cgi?id=613284
2010-06-29 16:06:38 +02:00
Benjamin Otte
3e96cfe8fc Deprecate the GdkRegion API
Includes fixing all callers to use the cairo region API instead. This is
usually just replacing the function names, the only difference is
gdk_region_get_rectangles() being replaced by
cairo_region_num_rectangles() and cairo_region_get_rectangle() which
required a bit more work.

https://bugzilla.gnome.org/show_bug.cgi?id=613284
2010-06-29 16:06:38 +02:00
Christian Dywan
655dcff096 Remove deprecated GdkFont
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=604196

Signed-off-by: Javier Jardón <jjardon@gnome.org>
2010-06-28 23:38:03 +02:00
Javier Jardón
c1affa4f3c Remove deprecated code from X interaction 2010-06-28 23:38:03 +02:00
Javier Jardón
c3987f9ee2 [GdkGC] Remove deprecated GdkFont from GdkGCValues structure 2010-06-28 23:38:03 +02:00
Kristian Rietveld
7f2e4c38a9 Move Leopard-specific type definitions to gdkquartz.h
Update includes subsequently where it matters.  Fixes build on Mac OS
X 10.4.

(cherry picked from commit e634f3fbe0)
2010-06-27 11:00:42 +02:00
Kristian Rietveld
64f11c366a Refactor to use API that's available in OS X 10.4 as well
(cherry picked from commit 3770d914ec)
2010-06-27 11:00:31 +02:00
John Ralls
98d47b57bf Bug 622333 - Crash in gdk_window_impl_quartz_begin_paint_region
(cherry picked from commit 093a867e51)
2010-06-27 11:00:20 +02:00
Kristian Rietveld
019ccc686d Flip clip mask image when setting clip mask on GC
(cherry picked from commit 9f5f47f8be)
2010-06-27 11:00:09 +02:00
Kristian Rietveld
88cae1769b Rework color translation to support gray scale and bitmaps
(cherry picked from commit 49f72c1fb4)
2010-06-27 10:59:46 +02:00
Kristian Rietveld
18b233fe2a Add gray visual, implement "get_best" functions
(cherry picked from commit 42d07ad6ce)
2010-06-27 10:59:11 +02:00
Matthias Clasen
8a590711da Remove stray references to gtk-2.0 2010-06-26 21:40:55 -04:00
John Ralls
d722adb76a [quartz] Delete the typedef of GdkDevicePrivate
It's in gdkdevice.h now.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=622765

Signed-off-by: Javier Jardón <jjardon@gnome.org>
2010-06-26 00:23:32 +02:00
Carlos Garnacho
6cde835acd GdkDeviceManager: Add gdk_device_manager_get_client_pointer().
This function makes a better replacement for
gdk_display_get_core_pointer(), wherever it might yet be needed, for
XI2 resorts to XIGetClientPointer(), for the others return the only
core pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=621685
2010-06-24 02:30:53 +02:00
Javier Jardón
3c8a54b2f7 Remove GdkWChar deprecated code 2010-06-20 00:22:26 +02:00
Javier Jardón
ca046f0cfb Remove deprecated gdk_text_* and gdk_string_* functions
Remove gdk_string_extents(), gdk_text_extents(),
gdk_text_extents_wc(), gdk_string_width(), gdk_text_width(),
gdk_text_width_wc(), gdk_string_measure(), gdk_text_measure(),
gdk_string_height(), gdk_text_height()
2010-06-20 00:22:26 +02:00
Javier Jardón
4cf4470fcd Remove deprecated GdkDrawable functions
Remove gdk_drawable_get_data(), gdk_drawable_set_data(),
gdk_drawable_ref(), gdk_drawable_unref(),
gdk_draw_string(), gdk_draw_text(), gdk_draw_text_wc()
2010-06-19 21:39:22 +02:00
Javier Jardón
71c501d895 Use a GPid on gdk_spawn_on_screen[_with_pipes] instead a gint
Reported by Nick Schermer in bug
https://bugzilla.gnome.org/show_bug.cgi?id=602289
2010-06-10 03:52:35 +02:00
Javier Jardón
2ace397eb5 Remove deprecatedd code from GdkColor
https://bugzilla.gnome.org/show_bug.cgi?id=619649
2010-06-07 00:35:40 +02:00
Colin Walters
95bc0f5405 Use g_source_set_name for all custom GSources in GTK+
Naming the sources allows easier debugging with e.g. SystemTap
probes.

https://bugzilla.gnome.org/show_bug.cgi?id=620511
2010-06-03 21:49:22 -04:00
Javier Jardón
019563c322 Remove gdk_*et_use_xshm() deprecated functions 2010-05-26 05:18:05 +02:00
Matthias Clasen
bd4609b140 Merge the xi2-for-master branch 2010-05-25 18:38:44 -04:00
Matthias Clasen
50a72eda2d Seal gdk
Add G_SEAL annotation for struct members, and add accessors for
the (useful) fields. Patch based on work by Garrett Regier,
see bug #592580.
2010-05-25 12:01:04 -04:00
Javier Jardón
618d15e991 Remove deprecated gdk_window_get_toplevels() function 2010-05-14 18:18:10 +02:00
Paul Davis
aea9f1b6cf Remove arbitrary limit on number of redraw rectangles
The aim of this limit was to not degrade performance too much, however,
it actually did degrade performance to a large extent.
2010-05-12 12:11:40 +02:00
Javier Jardón
2b64a7fd54 Remove some deprecated stuff from GdkWindow
Also, substitute the deprecated functions with the correct ones
2010-05-12 04:29:55 +02:00
Javier Jardón
8424256a39 [gdk] Remove gdki18n.h completely 2010-05-03 01:51:21 +02:00
Javier Jardón
906a510007 Remove deprecated code from GdkImage 2010-05-03 01:48:45 +02:00
Javier Jardón
7894951cee Remove deprecated code from GdkEvent 2010-05-03 01:48:45 +02:00
Javier Jardón
8c46ef830b Remove deprecated code from GdkDnd 2010-05-03 01:45:00 +02:00
Matthias Clasen
13d69e552d Fix a compatibility problem
It turns out that my attempt at handling Super, Hyper and Meta better
is causing problems, mostly because Alt and Meta are commonly colocated
in the modmap, and apps do a check for the Alt modifier regularly.

See e.g bug 607697.
2010-02-12 18:55:42 -05:00
Kristian Rietveld
66207cf13e Improve enter/motion notify semantics
On X11 we receive enter notify and motion notify events for a window
regardless of its focus state.  On Mac OS X this is not the case.  This
commit improves the semantics to overcome this difference.  It improves
on my earlier patch that sent a motion notify event when a window became
main.

Instead of sending a motion notify when a window becomes main, we now
send one when a window becomes key, which comes closest to a window
getting focus in X11.  This motion notify is needed because Mac OS X does
not send motion events when an application is inactive (none of its
windows have focus), these events are sent in X11.  This dummy motion
notify event (with current coordinates of the mouse cursor) allows an
application to get its prelight and other state right when it gets focus
and thus user attention.

Another change is to send an enter notify event when updating the
tracking rectangle of a GdkQuartView and the mouse cursor is currently in
this rectangle.  This rectangle is at least updated on window creation.
This enter notify event is important for the case where a new window
appears right below the mouse cursor.  The window has to receive an enter
notify event for the subsequent events to be processed correctly.  Mac
OS X does not send one in this case, so we generate it ourselves.

Both of these synthesized events have to go through
_gdk_windowing_got_event() for updating statekeeping, etc.
append_event() has a boolean flag now to make this convenient.
2010-01-30 20:36:28 +01:00
Kristian Rietveld
0912a113dd Release view after setting it as contentView
Fixes GdkQuartzView being leaked.
2009-12-30 14:14:21 +01:00
Kristian Rietveld
255c2739e2 Fix memleak in get_nsscreen_for_point()
One codepath did not go through GDK_QUARTZ_RELEASE_POOL, refactored
the code to fix this.
2009-12-30 14:12:42 +01:00
Kristian Rietveld
3887838244 Fix memory leak in GdkQuartzView
Should remove the tracking rect in dealloc.
2009-12-30 14:11:14 +01:00
Kristian Rietveld
ee62948b83 Use CGFLOAT_DEFINED, don't rely on NSINTEGER_DEFINED for this 2009-12-28 23:01:42 +01:00
Kristian Rietveld
e22de4a88e Add gdk_keymap_map_virtual_modifiers() to Quartz backend 2009-12-28 21:18:57 +01:00
Kristian Rietveld
c8fef502e2 Start using CGFloat
Fixes a bunch of compiler warnings.  Since CGFloat does not exist on
Tiger and earlier, we have added a typedef likewise as was done for
NSInteger.
2009-12-28 21:18:57 +01:00
Kristian Rietveld
f3a5bf48d4 Fix compile warning in gdk_cursor_new_from_pixmap 2009-12-28 21:18:57 +01:00
Kristian Rietveld
dd415881be initWithContentRect: has a NSUInteger parameter now
The typedef in place for Tiger and earlier systems should change this
to unsigned int without problems.
2009-12-28 21:18:56 +01:00
Kristian Rietveld
b2b70e5a8d Start using NSInteger and NSUInteger
These have been introduced in Leopard and default to int and unsigned int.
In 64-bit Snow Leopard they are long and unsigned long.  This caused issues
with the getRectsBeingDrawn message which needs a pointer to a NSInteger
(long on 64-bit!) but we passed in an integer.  Surprisingly this problem
was visible when compiling with -O0 (segfault), but *not* when compiling
with -O1.  Other messages were NSInteger is now needed have also been
adapted.

Since NSInteger and NSUInteger are not available on Tiger, a define
has been added to add typedefs for these when they have not been defined
by the system headers.
2009-12-27 19:28:56 +01:00
Matthias Clasen
182108c68e Implement gdk_screen_get_primary_monitor in all GDK backends
The implementations are all trivial, just returning 0. At least
for Quartz, we could probably do better than that. Bug 604459.
2009-12-13 20:40:02 -05:00
Kristian Rietveld
cffddd2adc Document how Cocoa coordinate and monitor layout transforms to GDK work 2009-11-15 15:29:45 +01:00
Nicola Fontana
1e1131c959 Do not use static GTypeInfo and GInterfaceInfo
Either g_type_register_static_simple (used by G_DEFINE_TYPE_EXTENDED)
and G_IMPLEMENT_INTERFACE use automatic variables for GTypeInfo and
GInterfaceInfo structs, while tutorials and source code often use
static variables. This commit consistently adopts the former method.

https://bugzilla.gnome.org/show_bug.cgi?id=600158
2009-11-06 01:21:09 +01:00
Kristian Rietveld
a338c7e929 Update copyright 2009-10-26 09:57:11 +01:00
Kristian Rietveld
fa8fa48ef1 Update position of toplevels after display reconfiguration
We have to do this, especially after the screen containing the menubar
has changed.  Such more larger changes in monitor geometry will cause
changes to how monitors are laid out in the root window.  The position
coordinates of the windows will have to be updated to reflect their
position in the new layout.
2009-10-26 09:52:54 +01:00
Kristian Rietveld
a4d932cc64 Fixup get_nsscreen_for_x() 2009-10-26 09:52:54 +01:00
Kristian Rietveld
221883dd31 Remove unused variable (fix compiler warning) 2009-10-26 09:52:54 +01:00
Kristian Rietveld
93530675de Update size of root window after display reconfiguration 2009-10-26 09:52:54 +01:00
Kristian Rietveld
959a9437e6 Support arbitrary screen layouts
The Quartz port now supports arbitrary multiple monitor layouts instead
of only monitors are were laid out horizontally.  This builds on the
reworked coordinate translation done in a previous commit.
2009-10-26 09:52:54 +01:00
Kristian Rietveld
8846012c6d Rework coordinate transformation to be based on root window
The root window contains all the monitors attached to a Mac.  The
coordinate transformation now both translates the x and y coordinate,
translating it from the Cocoa monitor coordinate space to the GDK
coordinate space.  How monitors are laid out in the root window differs
between Cocoa and GDK, which is why it is important to translate based
on the root window to get multi monitor setups to work properly.

We have replaced the old y coordinate transformation function with
new functions that translate both the x and y coordinate.

When creating new toplevels, we have to determine the Cocoa screen on
which the toplevel should appear and translate the coordinates according
to that screen.

This change also fixes event handling in case there is a monitor left
of the screen containing the menu bar.  In such a case all coordinates
on the left monitor are negative.  Event handling broke, because of
_gdk_quartz_window_find_child() checking bounds.  Now that coordinates
are always properly translated to GDK coordinate space, in which negative
coordinates do never occur, the checks here will work properly.
2009-10-26 09:52:54 +01:00
Kristian Rietveld
d26dd103b2 Be consistent with X11: emit monitors-changed first, then size-changed 2009-10-26 09:52:53 +01:00
Kristian Rietveld
e36872da38 Use screen when emitting signal, not _gdk_screen 2009-10-26 09:52:53 +01:00
Kristian Rietveld
63e2f54516 Emit monitors-changed signal when appropriate 2009-10-26 09:52:53 +01:00
Kristian Rietveld
12dc617dc2 Move screen resolution setup to GdkScreenQuartz initializer 2009-10-26 09:52:53 +01:00
Kristian Rietveld
d47772f002 Create a proper subclass of GdkScreen: GdkScreenQuartz 2009-10-26 09:52:52 +01:00
Kristian Rietveld
73b55ae8f5 Register and handle a display reconfiguration callback
Using this we can update our internal monitor/screen layout state
and emit the GdkScreen::size-changed signal.  Work has not
completely finished on this yet, see bug 596238.
2009-10-26 09:52:52 +01:00
Kristian Rietveld
ce3c861c2a Setup monitor rects during screen initialization and re-use data 2009-10-26 09:52:52 +01:00
Kristian Rietveld
ca20b04b58 Move screen initialization to gdkscreen-quartz.c 2009-10-26 09:52:52 +01:00
Kristian Rietveld
42ac226877 Bug 598881 - Unimplemented GdkWindowImplIface methods crash gimp on OSX
Add dummy for _gdk_input_window_crossing ().  Set both input_window_destroy
and input_window_crossing pointers in the Impl struct.

Reported by John Ralls.
2009-10-23 13:53:57 +02:00
Kristian Rietveld
a4145bfeef Bug 588449 - DnD doesn't work on GDK/Quartz
Patch from Paul Davis.  This gets the basics of drag and drop properly
working on Mac OS X.
2009-09-30 15:07:37 +02:00
Alexander Larsson
5ebb32d1ff Extend _gdk_windowing_window_at_pointer to be able to get toplevels only
This has two advantages:
1) In many backends, this is faster as we can terminate the window
hierarchy traversal earlier
2) When used in gdkdisplay.c::get_current_toplevel() to get the
current toplevel that has the pointer we now correctly return
a toplevel with the pointer in it where the pointer is inside
some foreign subwindow of a toplevel window.

The second advantage fixes some bugs in client side event generation
when the pointer is inside such a foreign child window.
2009-09-28 15:21:54 +02:00
Kristian Rietveld
f2d9f5a9e6 Remove unused variable 2009-09-27 13:44:10 +02:00
Kristian Rietveld
2f782de1b7 Bug 596012 - popup menu position is horribly off on gdk quartz with ...
Based on first patches by Christian Hergert.  Change
screen_get_monitor_geometry() so that it translates the layout of the screens
from Cocoa layout to GDK layout.  In Cocoa, the screen locations
are specified in Cocoa geometry, as well as that GDK uses a different way
to place individual monitors in the root window.  For now only monitors
that are laid out horizontally are supported (see the FIXMEs in the source),
in bug 596238 we will track future work to get things fully right.

Modify _gdk_quartz_window_get_inverted_screen_y() to take the differences
in screen layout between Cocoa and GDK into account.  Also this function
is subject to future work.
2009-09-27 13:44:10 +02:00
Christian Hergert
17130a8ec9 Bug 517394 - Native resize grip steals button release ...
Explicitly handle resizing by leaving all events in the lower right 15x15
corner to Cocoa, if the window shows a resizing indicator.  Some
applications may have widgets allocated in this area.  Generally, these
widgets are likely larger than 15x15 so they can still be hit.  Often
scroll bars are found in this area and these can also be manipulated by
other means.  Since this is the only way of resizing windows on Mac OS X,
it is too important to keep it broken.
2009-09-25 21:52:13 +02:00
Kristian Rietveld
785e55f87d Bug 596250 - Gdkcursor-quartz.c doesn't implement GDK_BLANK_CURSOR
Support GDK_BLANK_CURSOR.  Patch by John Ralls.
2009-09-25 18:51:55 +02:00
Kristian Rietveld
cdec2caaf3 Send a motion-notify when a (new) main window became active
This motion-notify even will make sure that things like highlights are
set up correctly now that the window has become active.
2009-09-25 18:51:54 +02:00
Kristian Rietveld
3043155796 Bug 550939 - GtkFileChooser listbox does not refresh selection
Make the quartz backend support the new queued translations.  We do this
by keeping our own copy of the region that has been set to need display.
Using this region we can intersect by the given area, translate this and also
set needs display for the resulting area.
2009-09-21 20:41:35 +02:00
Kristian Rietveld
d797dcc4dd Assign the size of the screen to the root window
On startup, the root window got assigned the size of the main screen.
But, the GdkScreen has the width of all screens/monitors connected to the
machine.  Change this so that in _gdk_windowing_window_init, we assign
the width/height of all monitors to the root window width, height.
Should fix bug 594738.
2009-09-16 08:48:49 +02:00
Kristian Rietveld
cf80feb3dd Do not test the event mask of implicit grabs
The quartz backend simulates the semantics of XGrabPointer, as a part of
this it checks the event mask of the grab.  However, implicit grabs on X
do not go through XGrabPointer and thus the quartz backend should not check
the event mask for these.  This fixes various "the UI got stuck" cases.
2009-09-16 08:48:49 +02:00
Alexander Larsson
d67a7eda16 Add gdk_window_restack
This lets you restack a window above or below a specified sibling.
At least eclipse wants this functionallity.
2009-09-02 23:38:55 +02:00
Alexander Larsson
939e55223c Ensure that queue_translation is paired with the right X operation
The X11 queue_translation operation uses NextRequest to get the serial
of the XCopyArea operation where the translation should end. However,
if the gc passed to gdk_draw_drawable has a non-flushed clip region
(which it commonly has now for the window clipping) then the next
operation will be the GC flush, not the XCopyArea.

To handle this right we now pass in the GC to be used to
queue_translation and ensure that it is flushed before calling
NextRequest().
2009-08-13 14:46:02 +02:00
Matthias Clasen
b514c6ac22 Fix a logic error in gdk_window_set_title on OS X
Also fix a similar error in gdk_window_set_transient_for.
This fixes bug 589738
2009-08-07 00:13:44 -04:00
Matthias Clasen
5002976fab Fix a logic error in gdk_window_set_title on OS X
This fixes bug 589738
2009-08-07 00:10:43 -04:00
Kristian Rietveld
8c8e1daefa Add stubs for missing GDK windowing functions to Quartz backend
This seems to more or less fix the build.  On Tiger there are still issues
with libresolv missing on the link line, I will figure out what's up with
that soonish.
2009-07-31 21:22:54 +02:00
Alexander Larsson
aa8693f2cb Track viewable for GdkWindow 2009-07-18 23:11:54 +02:00
Alexander Larsson
2e3866b5b2 Make GdkDrawable draw_drawable backwards compat
Turns out pygtk build broke due to the argument addition to draw_drawable.
So, we now add a new vfunc for the new draw_drawable and are thus
backwards compat.
2009-07-01 19:50:49 +02:00
Alexander Larsson
038398d493 Move new draw_drawable argument to end to make it more backwards compat 2009-07-01 16:13:31 +02:00
Richard Hult
52ca2f29cc Update _gdk_windowing_pointer_grab 2009-06-20 11:50:10 +02:00
Richard Hult
56efcf62c4 Remove duplicate definition of GdkInputWindow 2009-06-20 11:50:10 +02:00
Richard Hult
f26fe5bb49 Update gdk_window_quartz_show, ..._get_origin, ..._get_pointer 2009-06-20 11:50:03 +02:00
Richard Hult
eb70b75118 Rename gdk_window_beep to _gdk_windowing_window_beep 2009-06-20 11:28:57 +02:00
Alexander Larsson
0b586a5ad7 Add support for client side graphics exposures in gdk_draw_drawable 2009-05-27 17:10:32 +02:00
Alexander Larsson
7698daf97a Merge branch 'master' into client-side-windows
Conflicts:
	gdk/x11/gdkwindow-x11.c
2009-05-25 14:30:01 +02:00