summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hult <richard@imendio.com>2006-07-17 08:07:55 +0000
committerRichard Hult <rhult@src.gnome.org>2006-07-17 08:07:55 +0000
commit2d41ff51f56f2473c811797259e400474f536902 (patch)
tree542335ee04442d7064be5f4f72c8e9975b6769ab
parent5175386051583a6d8c1b1d3301c17802b97e29d4 (diff)
downloadgtk+-2d41ff51f56f2473c811797259e400474f536902.tar.gz
Fix comment. (gdk_window_set_title): Surround by release pool macros.
2006-07-17 Richard Hult <richard@imendio.com> * gdk/quartz/gdkwindow-quartz.c: (_gdk_windowing_window_destroy_foreign): Fix comment. (gdk_window_set_title): Surround by release pool macros. (gdk_window_get_type_hint): Fix return value. (gdk_window_get_frame_extents): Implement. (gdk_window_iconify): Use the release pool macros. (gdk_window_deiconify): Likewise. (_gdk_windowing_get_pointer): Implement. (gdk_window_get_deskrelative_origin, gdk_window_get_root_origin): Implement. * gdk/quartz/gdkevents-quartz.c (create_crossing_event) (create_scroll_event, convert_window_coordinates_to_root): Set coordinates and root coordinates for crossing and scroll events. * gdk/quartz/gdkcursor-quartz.c (gdk_cursor_new_for_display): Map some more cursors.
-rw-r--r--ChangeLog21
-rw-r--r--ChangeLog.pre-2-1021
-rw-r--r--gdk/quartz/gdkcursor-quartz.c31
-rw-r--r--gdk/quartz/gdkevents-quartz.c36
-rw-r--r--gdk/quartz/gdkwindow-quartz.c82
5 files changed, 162 insertions, 29 deletions
diff --git a/ChangeLog b/ChangeLog
index f5e0a48f05..ce58b379d0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2006-07-17 Richard Hult <richard@imendio.com>
+
+ * gdk/quartz/gdkwindow-quartz.c:
+ (_gdk_windowing_window_destroy_foreign): Fix comment.
+ (gdk_window_set_title): Surround by release pool macros.
+ (gdk_window_get_type_hint): Fix return value.
+ (gdk_window_get_frame_extents): Implement.
+ (gdk_window_iconify): Use the release pool macros.
+ (gdk_window_deiconify): Likewise.
+ (_gdk_windowing_get_pointer): Implement.
+ (gdk_window_get_deskrelative_origin, gdk_window_get_root_origin):
+ Implement.
+
+ * gdk/quartz/gdkevents-quartz.c (create_crossing_event)
+ (create_scroll_event, convert_window_coordinates_to_root):
+ Set coordinates and root coordinates for crossing and scroll
+ events.
+
+ * gdk/quartz/gdkcursor-quartz.c (gdk_cursor_new_for_display):
+ Map some more cursors.
+
2006-07-17 Matthias Clasen <mclasen@redhat.com>
* gdk/gdkwindow.c (gdk_window_get_pointer): Add some more
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index f5e0a48f05..ce58b379d0 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,24 @@
+2006-07-17 Richard Hult <richard@imendio.com>
+
+ * gdk/quartz/gdkwindow-quartz.c:
+ (_gdk_windowing_window_destroy_foreign): Fix comment.
+ (gdk_window_set_title): Surround by release pool macros.
+ (gdk_window_get_type_hint): Fix return value.
+ (gdk_window_get_frame_extents): Implement.
+ (gdk_window_iconify): Use the release pool macros.
+ (gdk_window_deiconify): Likewise.
+ (_gdk_windowing_get_pointer): Implement.
+ (gdk_window_get_deskrelative_origin, gdk_window_get_root_origin):
+ Implement.
+
+ * gdk/quartz/gdkevents-quartz.c (create_crossing_event)
+ (create_scroll_event, convert_window_coordinates_to_root):
+ Set coordinates and root coordinates for crossing and scroll
+ events.
+
+ * gdk/quartz/gdkcursor-quartz.c (gdk_cursor_new_for_display):
+ Map some more cursors.
+
2006-07-17 Matthias Clasen <mclasen@redhat.com>
* gdk/gdkwindow.c (gdk_window_get_pointer): Add some more
diff --git a/gdk/quartz/gdkcursor-quartz.c b/gdk/quartz/gdkcursor-quartz.c
index e87d0481be..4fccc0dee9 100644
--- a/gdk/quartz/gdkcursor-quartz.c
+++ b/gdk/quartz/gdkcursor-quartz.c
@@ -58,6 +58,37 @@ gdk_cursor_new_for_display (GdkDisplay *display,
case GDK_SB_V_DOUBLE_ARROW:
nscursor = [NSCursor resizeUpDownCursor];
break;
+ case GDK_SB_UP_ARROW:
+ case GDK_BASED_ARROW_UP:
+ case GDK_BOTTOM_TEE:
+ case GDK_TOP_SIDE:
+ nscursor = [NSCursor resizeUpCursor];
+ break;
+ case GDK_SB_DOWN_ARROW:
+ case GDK_BASED_ARROW_DOWN:
+ case GDK_TOP_TEE:
+ case GDK_BOTTOM_SIDE:
+ nscursor = [NSCursor resizeDownCursor];
+ break;
+ case GDK_SB_LEFT_ARROW:
+ case GDK_RIGHT_TEE:
+ case GDK_LEFT_SIDE:
+ nscursor = [NSCursor resizeLeftCursor];
+ break;
+ case GDK_SB_RIGHT_ARROW:
+ case GDK_LEFT_TEE:
+ case GDK_RIGHT_SIDE:
+ nscursor = [NSCursor resizeRightCursor];
+ break;
+ case GDK_TCROSS:
+ case GDK_CROSS:
+ case GDK_CROSSHAIR:
+ case GDK_DIAMOND_CROSS:
+ nscursor = [NSCursor crosshairCursor];
+ case GDK_HAND1:
+ case GDK_HAND2:
+ nscursor = [NSCursor pointingHandCursor];
+ break;
default:
g_warning ("Unsupported cursor type %d, using default", cursor_type);
nscursor = [NSCursor arrowCursor];
diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index d533d353cf..859d757b1b 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -802,9 +802,16 @@ static void
convert_window_coordinates_to_root (GdkWindow *window, gdouble x, gdouble y,
gdouble *x_root, gdouble *y_root)
{
- /* FIXME: Implement */
- *x_root = 0;
- *y_root = 0;
+ gint ox, oy;
+
+ *x_root = x;
+ *y_root = y;
+
+ if (gdk_window_get_origin (window, &ox, &oy))
+ {
+ *x_root += ox;
+ *y_root += oy;
+ }
}
static GdkEvent *
@@ -815,13 +822,21 @@ create_crossing_event (GdkWindow *window,
GdkNotifyType detail)
{
GdkEvent *event;
+ NSPoint point;
event = gdk_event_new (event_type);
event->crossing.window = window;
event->crossing.subwindow = NULL; /* FIXME */
event->crossing.time = get_event_time (nsevent);
- /* FIXME: x, y, x_root, y_root */
+
+ point = [nsevent locationInWindow];
+ event->crossing.x = point.x;
+ event->crossing.y = point.y;
+ convert_window_coordinates_to_root (window, event->crossing.x, event->crossing.y,
+ &event->crossing.x_root,
+ &event->crossing.y_root);
+
event->crossing.mode = mode;
event->crossing.detail = detail;
/* FIXME: focus */
@@ -1300,16 +1315,23 @@ static GdkEvent *
create_scroll_event (GdkWindow *window, NSEvent *nsevent, GdkScrollDirection direction)
{
GdkEvent *event;
-
+ NSPoint point;
+
event = gdk_event_new (GDK_SCROLL);
event->scroll.window = window;
event->scroll.time = get_event_time (nsevent);
- /* FIXME event->x, event->y */
+
+ point = [nsevent locationInWindow];
+ event->scroll.x = point.x;
+ event->scroll.y = point.y;
+ convert_window_coordinates_to_root (window, event->scroll.x, event->scroll.y,
+ &event->scroll.x_root,
+ &event->scroll.y_root);
+
/* FIXME event->state; */
/* FIXME event->is_hint; */
event->scroll.direction = direction;
event->scroll.device = _gdk_display->core_pointer;
- /* FIXME: event->x_root, event->y_root */
return event;
}
diff --git a/gdk/quartz/gdkwindow-quartz.c b/gdk/quartz/gdkwindow-quartz.c
index 0de6b52057..948d84af1a 100644
--- a/gdk/quartz/gdkwindow-quartz.c
+++ b/gdk/quartz/gdkwindow-quartz.c
@@ -539,7 +539,7 @@ _gdk_windowing_window_destroy (GdkWindow *window,
void
_gdk_windowing_window_destroy_foreign (GdkWindow *window)
{
- /* FIXME: Implement */
+ /* Foreign windows aren't supported in OSX. */
}
static gboolean
@@ -660,13 +660,8 @@ move_resize_window_internal (GdkWindow *window,
GdkWindowObject *private = (GdkWindowObject *)window;
GdkWindowImplQuartz *impl;
- GDK_QUARTZ_ALLOC_POOL;
-
if (GDK_WINDOW_DESTROYED (window))
- {
- GDK_QUARTZ_RELEASE_POOL;
- return;
- }
+ return;
impl = GDK_WINDOW_IMPL_QUARTZ (private->impl);
@@ -682,6 +677,8 @@ move_resize_window_internal (GdkWindow *window,
if (height != -1)
impl->height = height;
+ GDK_QUARTZ_ALLOC_POOL;
+
if (impl->toplevel)
{
NSRect content_rect = NSMakeRect (private->x,
@@ -699,7 +696,7 @@ move_resize_window_internal (GdkWindow *window,
{
[impl->view setFrame:NSMakeRect (private->x, private->y,
impl->width, impl->height)];
-
+
/* FIXME: Maybe we should use setNeedsDisplayInRect instead */
[impl->view setNeedsDisplay:YES];
}
@@ -930,8 +927,7 @@ gdk_window_get_deskrelative_origin (GdkWindow *window,
{
g_return_val_if_fail (GDK_IS_WINDOW (window), FALSE);
- /* FIXME: Implement */
- return FALSE;
+ return gdk_window_get_origin (window, x, y);
}
void
@@ -939,9 +935,20 @@ gdk_window_get_root_origin (GdkWindow *window,
gint *x,
gint *y)
{
+ GdkRectangle rect;
+
g_return_if_fail (GDK_IS_WINDOW (window));
- /* FIXME: Implement */
+ rect.x = 0;
+ rect.y = 0;
+
+ gdk_window_get_frame_extents (window, &rect);
+
+ if (x)
+ *x = rect.x;
+
+ if (y)
+ *y = rect.y;
}
void
@@ -951,6 +958,10 @@ _gdk_windowing_get_pointer (GdkDisplay *display,
gint *y,
GdkModifierType *mask)
{
+ g_return_if_fail (display == _gdk_display);
+
+ *screen = _gdk_screen;
+ _gdk_windowing_window_get_pointer (_gdk_display, _gdk_root, x, y, mask);
}
GdkWindow *
@@ -1061,7 +1072,9 @@ gdk_window_set_title (GdkWindow *window,
if (impl->toplevel)
{
+ GDK_QUARTZ_ALLOC_POOL;
[impl->toplevel setTitle:[NSString stringWithUTF8String:title]];
+ GDK_QUARTZ_RELEASE_POOL;
}
}
@@ -1230,6 +1243,7 @@ GdkWindowTypeHint
gdk_window_get_type_hint (GdkWindow *window)
{
/* FIXME: Implement */
+ return GDK_WINDOW_TYPE_HINT_NORMAL;
}
void
@@ -1295,7 +1309,33 @@ void
gdk_window_get_frame_extents (GdkWindow *window,
GdkRectangle *rect)
{
- /* FIXME: Implement */
+ GdkWindowObject *private;
+ GdkWindow *toplevel;
+ GdkWindowImplQuartz *impl;
+ NSRect ns_rect;
+
+ g_return_if_fail (GDK_IS_WINDOW (window));
+ g_return_if_fail (rect != NULL);
+
+ private = GDK_WINDOW_OBJECT (window);
+
+ rect->x = 0;
+ rect->y = 0;
+ rect->width = 1;
+ rect->height = 1;
+
+ if (GDK_WINDOW_DESTROYED (window))
+ return;
+
+ toplevel = gdk_window_get_toplevel (window);
+ impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (toplevel)->impl);
+
+ ns_rect = [impl->toplevel frame];
+
+ rect->x = ns_rect.origin.x;
+ rect->y = _gdk_quartz_get_inverted_screen_y (ns_rect.origin.y + ns_rect.size.height);
+ rect->width = ns_rect.size.width;
+ rect->height = ns_rect.size.height;
}
void
@@ -1308,8 +1348,8 @@ gdk_window_set_decorations (GdkWindow *window,
}
gboolean
-gdk_window_get_decorations(GdkWindow *window,
- GdkWMDecoration *decorations)
+gdk_window_get_decorations (GdkWindow *window,
+ GdkWMDecoration *decorations)
{
/* FIXME: Implement */
return FALSE;
@@ -1371,27 +1411,25 @@ void
gdk_window_iconify (GdkWindow *window)
{
GdkWindowImplQuartz *impl;
- NSAutoreleasePool *pool;
g_return_if_fail (GDK_IS_WINDOW (window));
if (GDK_WINDOW_DESTROYED (window))
return;
-
+
impl = GDK_WINDOW_IMPL_QUARTZ (GDK_WINDOW_OBJECT (window)->impl);
if (!impl->toplevel)
return;
-
- pool = [[NSAutoreleasePool alloc] init];
+
+ GDK_QUARTZ_ALLOC_POOL;
[impl->toplevel miniaturize:nil];
- [pool release];
+ GDK_QUARTZ_RELEASE_POOL;
}
void
gdk_window_deiconify (GdkWindow *window)
{
GdkWindowImplQuartz *impl;
- NSAutoreleasePool *pool;
g_return_if_fail (GDK_IS_WINDOW (window));
@@ -1402,9 +1440,9 @@ gdk_window_deiconify (GdkWindow *window)
if (!impl->toplevel)
return;
- pool = [[NSAutoreleasePool alloc] init];
+ GDK_QUARTZ_ALLOC_POOL;
[impl->toplevel deminiaturize:nil];
- [pool release];
+ GDK_QUARTZ_RELEASE_POOL;
}
void