Compare commits
9 Commits
wip/matthi
...
wip/cherge
Author | SHA1 | Date | |
---|---|---|---|
|
625436aa1e | ||
|
de56a31883 | ||
|
3abf9bb6dc | ||
|
eb39571735 | ||
|
f35095bc5d | ||
|
bcf6ea175a | ||
|
e8ed816c83 | ||
|
66892ea58f | ||
|
e396370beb |
@@ -10,8 +10,8 @@
|
||||
</MACRO>
|
||||
|
||||
<MACRO>
|
||||
<NAME>GDK_WINDOWING_QUARTZ</NAME>
|
||||
#define GDK_WINDOWING_QUARTZ
|
||||
<NAME>GDK_WINDOWING_MACOS</NAME>
|
||||
#define GDK_WINDOWING_MACOS
|
||||
</MACRO>
|
||||
|
||||
<MACRO>
|
||||
|
@@ -8,7 +8,7 @@
|
||||
<SUBSECTION>
|
||||
GDK_WINDOWING_X11
|
||||
GDK_WINDOWING_WIN32
|
||||
GDK_WINDOWING_QUARTZ
|
||||
GDK_WINDOWING_MACOS
|
||||
GDK_WINDOWING_WAYLAND
|
||||
|
||||
<SUBSECTION>
|
||||
|
@@ -88,12 +88,12 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* GDK_WINDOWING_QUARTZ:
|
||||
* GDK_WINDOWING_MACOS:
|
||||
*
|
||||
* The #GDK_WINDOWING_QUARTZ macro is defined if the Quartz backend
|
||||
* The #GDK_WINDOWING_MACOS macro is defined if the macOS backend
|
||||
* is supported.
|
||||
*
|
||||
* Use this macro to guard code that is specific to the Quartz backend.
|
||||
* Use this macro to guard code that is specific to the macOS backend.
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@@ -36,16 +36,6 @@
|
||||
#include "x11/gdkprivate-x11.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
/* When the gdk_quartz_display_open function is removed We can
|
||||
* immediately include gdkquartzdisplaymanager.h here instead of
|
||||
* gdkprivate-quartz.h so that we won’t have to enable -xobjective-c
|
||||
* for the “generic” GDK source code.
|
||||
* #include "quartz/gdkquartzdisplaymanager.h"
|
||||
*/
|
||||
#include "quartz/gdkprivate-quartz.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_BROADWAY
|
||||
#include "broadway/gdkprivate-broadway.h"
|
||||
#endif
|
||||
@@ -98,10 +88,10 @@
|
||||
* }
|
||||
* else
|
||||
* #endif
|
||||
* #ifdef GDK_WINDOWING_QUARTZ
|
||||
* if (GDK_IS_QUARTZ_DISPLAY (display))
|
||||
* #ifdef GDK_WINDOWING_MACOS
|
||||
* if (GDK_IS_MACOS_DISPLAY (display))
|
||||
* {
|
||||
* // make Quartz-specific calls here
|
||||
* // make macOS-specific calls here
|
||||
* }
|
||||
* else
|
||||
* #endif
|
||||
|
@@ -30,19 +30,6 @@
|
||||
#include "gdkmacosdisplay-private.h"
|
||||
#include "gdkmacossurface-private.h"
|
||||
|
||||
/* Text Input Client */
|
||||
#define TIC_MARKED_TEXT "tic-marked-text"
|
||||
#define TIC_SELECTED_POS "tic-selected-pos"
|
||||
#define TIC_SELECTED_LEN "tic-selected-len"
|
||||
#define TIC_INSERT_TEXT "tic-insert-text"
|
||||
#define TIC_IN_KEY_DOWN "tic-in-key-down"
|
||||
|
||||
/* GtkIMContext */
|
||||
#define GIC_CURSOR_RECT "gic-cursor-rect"
|
||||
#define GIC_FILTER_KEY "gic-filter-key"
|
||||
#define GIC_FILTER_PASSTHRU 0
|
||||
#define GIC_FILTER_FILTERED 1
|
||||
|
||||
@implementation GdkMacosBaseView
|
||||
|
||||
-(id)initWithFrame:(NSRect)frameRect
|
||||
|
@@ -29,6 +29,19 @@
|
||||
|
||||
#define GDK_IS_MACOS_BASE_VIEW(obj) ((obj) && [obj isKindOfClass:[GdkMacosBaseView class]])
|
||||
|
||||
/* Text Input Client */
|
||||
#define TIC_MARKED_TEXT "tic-marked-text"
|
||||
#define TIC_SELECTED_POS "tic-selected-pos"
|
||||
#define TIC_SELECTED_LEN "tic-selected-len"
|
||||
#define TIC_INSERT_TEXT "tic-insert-text"
|
||||
#define TIC_IN_KEY_DOWN "tic-in-key-down"
|
||||
|
||||
/* GtkIMContext */
|
||||
#define GIC_CURSOR_RECT "gic-cursor-rect"
|
||||
#define GIC_FILTER_KEY "gic-filter-key"
|
||||
#define GIC_FILTER_PASSTHRU 0
|
||||
#define GIC_FILTER_FILTERED 1
|
||||
|
||||
@interface GdkMacosBaseView : NSView <NSTextInputClient>
|
||||
{
|
||||
NSTrackingArea *trackingArea;
|
||||
|
@@ -27,9 +27,10 @@
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
GdkMacosKeymap *_gdk_macos_keymap_new (GdkMacosDisplay *display);
|
||||
GdkEventType _gdk_macos_keymap_get_event_type (NSEvent *event);
|
||||
gboolean _gdk_macos_keymap_is_modifier (guint keycode);
|
||||
GdkMacosKeymap *_gdk_macos_keymap_new (GdkMacosDisplay *display);
|
||||
GdkEventType _gdk_macos_keymap_get_event_type (NSEvent *event);
|
||||
gboolean _gdk_macos_keymap_is_modifier (guint keycode);
|
||||
gunichar _gdk_macos_keymap_get_key_equivalent (guint key);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -696,3 +696,150 @@ _gdk_macos_keymap_is_modifier (guint keycode)
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Code for key code conversion
|
||||
*
|
||||
* Copyright (C) 2009 Paul Davis
|
||||
*/
|
||||
gunichar
|
||||
_gdk_macos_keymap_get_key_equivalent (guint key)
|
||||
{
|
||||
if (key >= GDK_KEY_A && key <= GDK_KEY_Z)
|
||||
return key + (GDK_KEY_a - GDK_KEY_A);
|
||||
|
||||
if (key >= GDK_KEY_space && key <= GDK_KEY_asciitilde)
|
||||
return key;
|
||||
|
||||
switch (key)
|
||||
{
|
||||
case GDK_KEY_BackSpace:
|
||||
return NSBackspaceCharacter;
|
||||
case GDK_KEY_Delete:
|
||||
return NSDeleteFunctionKey;
|
||||
case GDK_KEY_Pause:
|
||||
return NSPauseFunctionKey;
|
||||
case GDK_KEY_Scroll_Lock:
|
||||
return NSScrollLockFunctionKey;
|
||||
case GDK_KEY_Sys_Req:
|
||||
return NSSysReqFunctionKey;
|
||||
case GDK_KEY_Home:
|
||||
return NSHomeFunctionKey;
|
||||
case GDK_KEY_Left:
|
||||
case GDK_KEY_leftarrow:
|
||||
return NSLeftArrowFunctionKey;
|
||||
case GDK_KEY_Up:
|
||||
case GDK_KEY_uparrow:
|
||||
return NSUpArrowFunctionKey;
|
||||
case GDK_KEY_Right:
|
||||
case GDK_KEY_rightarrow:
|
||||
return NSRightArrowFunctionKey;
|
||||
case GDK_KEY_Down:
|
||||
case GDK_KEY_downarrow:
|
||||
return NSDownArrowFunctionKey;
|
||||
case GDK_KEY_Page_Up:
|
||||
return NSPageUpFunctionKey;
|
||||
case GDK_KEY_Page_Down:
|
||||
return NSPageDownFunctionKey;
|
||||
case GDK_KEY_End:
|
||||
return NSEndFunctionKey;
|
||||
case GDK_KEY_Begin:
|
||||
return NSBeginFunctionKey;
|
||||
case GDK_KEY_Select:
|
||||
return NSSelectFunctionKey;
|
||||
case GDK_KEY_Print:
|
||||
return NSPrintFunctionKey;
|
||||
case GDK_KEY_Execute:
|
||||
return NSExecuteFunctionKey;
|
||||
case GDK_KEY_Insert:
|
||||
return NSInsertFunctionKey;
|
||||
case GDK_KEY_Undo:
|
||||
return NSUndoFunctionKey;
|
||||
case GDK_KEY_Redo:
|
||||
return NSRedoFunctionKey;
|
||||
case GDK_KEY_Menu:
|
||||
return NSMenuFunctionKey;
|
||||
case GDK_KEY_Find:
|
||||
return NSFindFunctionKey;
|
||||
case GDK_KEY_Help:
|
||||
return NSHelpFunctionKey;
|
||||
case GDK_KEY_Break:
|
||||
return NSBreakFunctionKey;
|
||||
case GDK_KEY_Mode_switch:
|
||||
return NSModeSwitchFunctionKey;
|
||||
case GDK_KEY_F1:
|
||||
return NSF1FunctionKey;
|
||||
case GDK_KEY_F2:
|
||||
return NSF2FunctionKey;
|
||||
case GDK_KEY_F3:
|
||||
return NSF3FunctionKey;
|
||||
case GDK_KEY_F4:
|
||||
return NSF4FunctionKey;
|
||||
case GDK_KEY_F5:
|
||||
return NSF5FunctionKey;
|
||||
case GDK_KEY_F6:
|
||||
return NSF6FunctionKey;
|
||||
case GDK_KEY_F7:
|
||||
return NSF7FunctionKey;
|
||||
case GDK_KEY_F8:
|
||||
return NSF8FunctionKey;
|
||||
case GDK_KEY_F9:
|
||||
return NSF9FunctionKey;
|
||||
case GDK_KEY_F10:
|
||||
return NSF10FunctionKey;
|
||||
case GDK_KEY_F11:
|
||||
return NSF11FunctionKey;
|
||||
case GDK_KEY_F12:
|
||||
return NSF12FunctionKey;
|
||||
case GDK_KEY_F13:
|
||||
return NSF13FunctionKey;
|
||||
case GDK_KEY_F14:
|
||||
return NSF14FunctionKey;
|
||||
case GDK_KEY_F15:
|
||||
return NSF15FunctionKey;
|
||||
case GDK_KEY_F16:
|
||||
return NSF16FunctionKey;
|
||||
case GDK_KEY_F17:
|
||||
return NSF17FunctionKey;
|
||||
case GDK_KEY_F18:
|
||||
return NSF18FunctionKey;
|
||||
case GDK_KEY_F19:
|
||||
return NSF19FunctionKey;
|
||||
case GDK_KEY_F20:
|
||||
return NSF20FunctionKey;
|
||||
case GDK_KEY_F21:
|
||||
return NSF21FunctionKey;
|
||||
case GDK_KEY_F22:
|
||||
return NSF22FunctionKey;
|
||||
case GDK_KEY_F23:
|
||||
return NSF23FunctionKey;
|
||||
case GDK_KEY_F24:
|
||||
return NSF24FunctionKey;
|
||||
case GDK_KEY_F25:
|
||||
return NSF25FunctionKey;
|
||||
case GDK_KEY_F26:
|
||||
return NSF26FunctionKey;
|
||||
case GDK_KEY_F27:
|
||||
return NSF27FunctionKey;
|
||||
case GDK_KEY_F28:
|
||||
return NSF28FunctionKey;
|
||||
case GDK_KEY_F29:
|
||||
return NSF29FunctionKey;
|
||||
case GDK_KEY_F30:
|
||||
return NSF30FunctionKey;
|
||||
case GDK_KEY_F31:
|
||||
return NSF31FunctionKey;
|
||||
case GDK_KEY_F32:
|
||||
return NSF32FunctionKey;
|
||||
case GDK_KEY_F33:
|
||||
return NSF33FunctionKey;
|
||||
case GDK_KEY_F34:
|
||||
return NSF34FunctionKey;
|
||||
case GDK_KEY_F35:
|
||||
return NSF35FunctionKey;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return '\0';
|
||||
}
|
||||
|
@@ -68,10 +68,10 @@
|
||||
* }
|
||||
* else
|
||||
* #endif
|
||||
* #ifdef GDK_WINDOWING_QUARTZ
|
||||
* if (GDK_IS_QUARTZ_DISPLAY (display))
|
||||
* #ifdef GDK_WINDOWING_MACOS
|
||||
* if (GDK_IS_MACOS_DISPLAY (display))
|
||||
* {
|
||||
* // make Quartz-specific calls here
|
||||
* // make macOS-specific calls here
|
||||
* }
|
||||
* else
|
||||
* #endif
|
||||
|
@@ -71,8 +71,8 @@ for f in funcs:
|
||||
file_output += ['#ifdef GDK_WINDOWING_WIN32']
|
||||
file_output += ['*tp++ = {0}();'.format(f)]
|
||||
file_output += ['#endif']
|
||||
elif f.startswith('gdk_quartz'):
|
||||
file_output += ['#ifdef GDK_WINDOWING_QUARTZ']
|
||||
elif f.startswith('gdk_macos'):
|
||||
file_output += ['#ifdef GDK_WINDOWING_MACOS']
|
||||
file_output += ['*tp++ = {0}();'.format(f)]
|
||||
file_output += ['#endif']
|
||||
elif f.startswith('gsk_vulkan'):
|
||||
|
@@ -707,7 +707,7 @@ static gboolean
|
||||
append_keyval_symbol (guint accelerator_key,
|
||||
GString *gstring)
|
||||
{
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
switch (accelerator_key)
|
||||
{
|
||||
case GDK_KEY_Return:
|
||||
@@ -778,7 +778,7 @@ append_keyval_symbol (guint accelerator_key,
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
#else /* !GDK_WINDOWING_QUARTZ */
|
||||
#else /* !GDK_WINDOWING_MACOS */
|
||||
return FALSE;
|
||||
#endif
|
||||
}
|
||||
@@ -786,7 +786,7 @@ append_keyval_symbol (guint accelerator_key,
|
||||
static void
|
||||
append_separator (GString *string)
|
||||
{
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
g_string_append (string, "+");
|
||||
#else
|
||||
/* no separator on quartz */
|
||||
@@ -826,7 +826,7 @@ gtk_accelerator_print_label (GString *gstring,
|
||||
|
||||
if (accelerator_mods & GDK_SHIFT_MASK)
|
||||
{
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
/* This is the text that should appear next to menu accelerators
|
||||
* that use the shift key. If the text on this key isn't typically
|
||||
* translated on keyboards used for your language, don't translate
|
||||
@@ -845,7 +845,7 @@ gtk_accelerator_print_label (GString *gstring,
|
||||
if (seen_mod)
|
||||
append_separator (gstring);
|
||||
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
/* This is the text that should appear next to menu accelerators
|
||||
* that use the control key. If the text on this key isn't typically
|
||||
* translated on keyboards used for your language, don't translate
|
||||
@@ -864,7 +864,7 @@ gtk_accelerator_print_label (GString *gstring,
|
||||
if (seen_mod)
|
||||
append_separator (gstring);
|
||||
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
/* This is the text that should appear next to menu accelerators
|
||||
* that use the alt key. If the text on this key isn't typically
|
||||
* translated on keyboards used for your language, don't translate
|
||||
@@ -911,7 +911,7 @@ gtk_accelerator_print_label (GString *gstring,
|
||||
if (seen_mod)
|
||||
append_separator (gstring);
|
||||
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
/* This is the text that should appear next to menu accelerators
|
||||
* that use the meta key. If the text on this key isn't typically
|
||||
* translated on keyboards used for your language, don't translate
|
||||
|
@@ -23,10 +23,10 @@
|
||||
#include "gtkapplicationprivate.h"
|
||||
#include "gtkmenutrackerprivate.h"
|
||||
#include "gtkicontheme.h"
|
||||
#include "gtktoolbarprivate.h"
|
||||
#include "gtkquartz.h"
|
||||
|
||||
#include <gdk/quartz/gdkquartz.h>
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
#include <gdk/macos/gdkmacoskeymap-private.h>
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
@@ -103,7 +103,7 @@ icon_loaded (GObject *object,
|
||||
GAsyncResult *result,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkIconPaintable *icon = GTK_ICON (object);
|
||||
GtkIconPaintable *icon = GTK_ICON_PAINTABLE (object);
|
||||
GNSMenuItem *item = user_data;
|
||||
GError *error = NULL;
|
||||
GdkPixbuf *pixbuf;
|
||||
@@ -322,7 +322,7 @@ icon_loaded (GObject *object,
|
||||
|
||||
- (void)didChangeToggled
|
||||
{
|
||||
[self setState:gtk_menu_tracker_item_get_toggled (trackerItem) ? NSOnState : NSOffState];
|
||||
[self setState:gtk_menu_tracker_item_get_toggled (trackerItem) ? NSControlStateValueOn : NSControlStateValueOff];
|
||||
}
|
||||
|
||||
- (void)didChangeAccel
|
||||
@@ -338,18 +338,18 @@ icon_loaded (GObject *object,
|
||||
|
||||
gtk_accelerator_parse (accel, &key, &mask);
|
||||
|
||||
character = gdk_quartz_get_key_equivalent (key);
|
||||
character = _gdk_macos_keymap_get_key_equivalent (key);
|
||||
[self setKeyEquivalent:[NSString stringWithCharacters:&character length:1]];
|
||||
|
||||
modifiers = 0;
|
||||
if (mask & GDK_SHIFT_MASK)
|
||||
modifiers |= NSShiftKeyMask;
|
||||
modifiers |= NSEventModifierFlagShift;
|
||||
if (mask & GDK_CONTROL_MASK)
|
||||
modifiers |= NSControlKeyMask;
|
||||
modifiers |= NSEventModifierFlagControl;
|
||||
if (mask & GDK_ALT_MASK)
|
||||
modifiers |= NSAlternateKeyMask;
|
||||
modifiers |= NSEventModifierFlagOption;
|
||||
if (mask & GDK_META_MASK)
|
||||
modifiers |= NSCommandKeyMask;
|
||||
modifiers |= NSEventModifierFlagCommand;
|
||||
[self setKeyEquivalentModifierMask:modifiers];
|
||||
}
|
||||
else
|
||||
|
@@ -41,21 +41,7 @@ gtk_application_quartz_inhibitor_free (GtkApplicationQuartzInhibitor *inhibitor)
|
||||
}
|
||||
|
||||
typedef GtkApplicationImplClass GtkApplicationImplQuartzClass;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
GtkApplicationImpl impl;
|
||||
|
||||
GtkActionMuxer *muxer;
|
||||
GMenu *combined;
|
||||
|
||||
GSList *inhibitors;
|
||||
gint quit_inhibit;
|
||||
guint next_cookie;
|
||||
NSObject *delegate;
|
||||
} GtkApplicationImplQuartz;
|
||||
|
||||
G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_APPLICATION_IMPL)
|
||||
typedef struct _GtkApplicationImplQuartz GtkApplicationImplQuartz;
|
||||
|
||||
@interface GtkApplicationQuartzDelegate : NSObject
|
||||
{
|
||||
@@ -67,6 +53,21 @@ G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_A
|
||||
- (void)application:(NSApplication *)theApplication openFiles:(NSArray *)filenames;
|
||||
@end
|
||||
|
||||
struct _GtkApplicationImplQuartz
|
||||
{
|
||||
GtkApplicationImpl impl;
|
||||
|
||||
GtkActionMuxer *muxer;
|
||||
GMenu *combined;
|
||||
|
||||
GSList *inhibitors;
|
||||
gint quit_inhibit;
|
||||
guint next_cookie;
|
||||
GtkApplicationQuartzDelegate *delegate;
|
||||
};
|
||||
|
||||
G_DEFINE_TYPE (GtkApplicationImplQuartz, gtk_application_impl_quartz, GTK_TYPE_APPLICATION_IMPL)
|
||||
|
||||
@implementation GtkApplicationQuartzDelegate
|
||||
-(id)initWithImpl:(GtkApplicationImplQuartz*)impl
|
||||
{
|
||||
@@ -162,10 +163,10 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl,
|
||||
if (register_session)
|
||||
{
|
||||
quartz->delegate = [[GtkApplicationQuartzDelegate alloc] initWithImpl:quartz];
|
||||
[NSApp setDelegate: quartz->delegate];
|
||||
[NSApp setDelegate: (id<NSApplicationDelegate>)quartz->delegate];
|
||||
}
|
||||
|
||||
quartz->muxer = gtk_action_muxer_new ();
|
||||
quartz->muxer = gtk_action_muxer_new (NULL);
|
||||
gtk_action_muxer_set_parent (quartz->muxer, gtk_application_get_action_muxer (impl->application));
|
||||
|
||||
/* Add the default accels */
|
||||
@@ -182,7 +183,11 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl,
|
||||
g_object_unref (gtkinternal);
|
||||
|
||||
/* now setup the menu */
|
||||
#if 0
|
||||
app_menu = gtk_application_get_app_menu (impl->application);
|
||||
#else
|
||||
app_menu = NULL;
|
||||
#endif
|
||||
if (app_menu == NULL)
|
||||
{
|
||||
GtkBuilder *builder;
|
||||
@@ -193,7 +198,7 @@ gtk_application_impl_quartz_startup (GtkApplicationImpl *impl,
|
||||
* app menu at index 0 in 'combined'.
|
||||
*/
|
||||
builder = gtk_builder_new_from_resource ("/org/gtk/libgtk/ui/gtkapplication-quartz.ui");
|
||||
gtk_application_set_app_menu (impl->application, G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
|
||||
gtk_application_impl_set_app_menu (impl, G_MENU_MODEL (gtk_builder_get_object (builder, "app-menu")));
|
||||
g_object_unref (builder);
|
||||
}
|
||||
else
|
||||
|
@@ -29,8 +29,8 @@
|
||||
#include <gdk/wayland/gdkwayland.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#include <gdk/quartz/gdkquartz.h>
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
#endif
|
||||
|
||||
G_DEFINE_TYPE (GtkApplicationImpl, gtk_application_impl, G_TYPE_OBJECT)
|
||||
@@ -172,8 +172,8 @@ gtk_application_impl_new (GtkApplication *application,
|
||||
impl_type = gtk_application_impl_wayland_get_type ();
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
if (GDK_IS_QUARTZ_DISPLAY (display))
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
if (GDK_IS_MACOS_DISPLAY (display))
|
||||
impl_type = gtk_application_impl_quartz_get_type ();
|
||||
#endif
|
||||
|
||||
|
@@ -189,7 +189,7 @@
|
||||
enum {
|
||||
MODE_FALLBACK,
|
||||
MODE_WIN32,
|
||||
MODE_QUARTZ,
|
||||
MODE_MACOS,
|
||||
MODE_PORTAL,
|
||||
};
|
||||
|
||||
@@ -672,7 +672,7 @@ gtk_file_chooser_native_get_files (GtkFileChooser *chooser)
|
||||
{
|
||||
case MODE_PORTAL:
|
||||
case MODE_WIN32:
|
||||
case MODE_QUARTZ:
|
||||
case MODE_MACOS:
|
||||
{
|
||||
GListStore *store;
|
||||
GSList *l;
|
||||
@@ -709,9 +709,9 @@ gtk_file_chooser_native_show (GtkNativeDialog *native)
|
||||
self->mode = MODE_WIN32;
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
if (gtk_file_chooser_native_quartz_show (self))
|
||||
self->mode = MODE_QUARTZ;
|
||||
self->mode = MODE_MACOS;
|
||||
#endif
|
||||
|
||||
if (self->mode == MODE_FALLBACK &&
|
||||
@@ -737,8 +737,8 @@ gtk_file_chooser_native_hide (GtkNativeDialog *native)
|
||||
gtk_file_chooser_native_win32_hide (self);
|
||||
#endif
|
||||
break;
|
||||
case MODE_QUARTZ:
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
case MODE_MACOS:
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
gtk_file_chooser_native_quartz_hide (self);
|
||||
#endif
|
||||
break;
|
||||
|
@@ -19,6 +19,8 @@
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#include <Cocoa/Cocoa.h>
|
||||
|
||||
#include "gtkfilechoosernativeprivate.h"
|
||||
#include "gtknativedialogprivate.h"
|
||||
|
||||
@@ -28,6 +30,7 @@
|
||||
#include "gtkfilechooserwidget.h"
|
||||
#include "gtkfilechooserwidgetprivate.h"
|
||||
#include "gtkfilechooserutils.h"
|
||||
#include "gtknative.h"
|
||||
#include "gtksizerequest.h"
|
||||
#include "gtktypebuiltins.h"
|
||||
#include "gtkintl.h"
|
||||
@@ -38,7 +41,9 @@
|
||||
#include "gtklabel.h"
|
||||
#include "gtkfilefilterprivate.h"
|
||||
|
||||
#include "quartz/gdkquartz.h"
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
|
||||
#include "gdk/macos/gdkmacossurface-private.h"
|
||||
|
||||
typedef struct {
|
||||
GtkFileChooserNative *self;
|
||||
@@ -346,7 +351,7 @@ filechooser_quartz_launch (FileChooserQuartzData *data)
|
||||
|
||||
void (^handler)(NSInteger ret) = ^(NSInteger result) {
|
||||
|
||||
if (result == NSFileHandlingPanelOKButton)
|
||||
if (result == NSModalResponseOK)
|
||||
{
|
||||
// get selected files and update data->files
|
||||
data->response = GTK_RESPONSE_ACCEPT;
|
||||
@@ -467,7 +472,7 @@ gtk_file_chooser_native_quartz_show (GtkFileChooserNative *self)
|
||||
data->filter_names = [NSMutableArray arrayWithCapacity:n_filters];
|
||||
[data->filter_names retain];
|
||||
|
||||
for (i = 0; i < n; i++)
|
||||
for (i = 0; i < n_filters; i++)
|
||||
{
|
||||
GtkFileFilter *filter = g_list_model_get_item (filters, i);
|
||||
if (!file_filter_to_quartz (filter, data->filters, data->filter_names))
|
||||
@@ -516,7 +521,7 @@ gtk_file_chooser_native_quartz_show (GtkFileChooserNative *self)
|
||||
if (transient_for)
|
||||
{
|
||||
gtk_widget_realize (GTK_WIDGET (transient_for));
|
||||
data->parent = gdk_quartz_surface_get_nswindow (gtk_native_get_surface (GTK_NATIVE (transient_for)));
|
||||
data->parent = _gdk_macos_surface_get_native (GDK_MACOS_SURFACE (gtk_native_get_surface (GTK_NATIVE (transient_for))));
|
||||
|
||||
if (gtk_native_dialog_get_modal (GTK_NATIVE_DIALOG (self)))
|
||||
data->modal = TRUE;
|
||||
|
@@ -625,7 +625,7 @@ gtk_file_filter_get_attributes (GtkFileFilter *filter)
|
||||
return (const char **)filter->attributes;
|
||||
}
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
|
@@ -22,7 +22,7 @@
|
||||
#include <gtk/gtkfilefilter.h>
|
||||
#include <gdk/gdkconfig.h>
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#import <Foundation/Foundation.h>
|
||||
#endif
|
||||
|
||||
@@ -30,7 +30,7 @@ G_BEGIN_DECLS
|
||||
|
||||
char ** _gtk_file_filter_get_as_patterns (GtkFileFilter *filter);
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
NSArray * _gtk_file_filter_get_as_pattern_nsstrings (GtkFileFilter *filter);
|
||||
#endif
|
||||
|
||||
|
@@ -21,17 +21,19 @@
|
||||
#include "config.h"
|
||||
#include <string.h>
|
||||
|
||||
#include "gtk/gtkimcontextquartz.h"
|
||||
#include "gtk/gtkintl.h"
|
||||
#include "gtk/gtkimmoduleprivate.h"
|
||||
#include "gtkimcontextquartz.h"
|
||||
#include "gtkimmoduleprivate.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
#include "gdk/quartz/gdkquartz.h"
|
||||
#include "gdk/quartz/GdkQuartzView.h"
|
||||
#include "gdk/macos/gdkmacos.h"
|
||||
#include "gdk/macos/gdkmacossurface-private.h"
|
||||
#include "gdk/macos/GdkMacosBaseView.h"
|
||||
|
||||
#define GTK_IM_CONTEXT_TYPE_QUARTZ (type_quartz)
|
||||
#define GTK_IM_CONTEXT_QUARTZ(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_IM_CONTEXT_TYPE_QUARTZ, GtkIMContextQuartz))
|
||||
#define GTK_IM_CONTEXT_TYPE_QUARTZ (gtk_im_context_quartz_get_type())
|
||||
#define GTK_IM_CONTEXT_QUARTZ(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_IM_CONTEXT_TYPE_QUARTZ, GtkIMContextQuartz))
|
||||
#define GTK_IM_CONTEXT_QUARTZ_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_IM_CONTEXT_TYPE_QUARTZ, GtkIMContextQuartzClass))
|
||||
|
||||
G_GNUC_BEGIN_IGNORE_DEPRECATIONS
|
||||
|
||||
typedef struct _GtkIMContextQuartz
|
||||
{
|
||||
@@ -51,21 +53,21 @@ typedef struct _GtkIMContextQuartzClass
|
||||
} GtkIMContextQuartzClass;
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE (GtkIMContextQuartz, gtk_im_context_quartz, GTK_TYPE_IM_CONTEXT,
|
||||
gtk_im_module_ensure_extension_point ();
|
||||
gtk_im_module_ensure_extension_point ();
|
||||
g_io_extension_point_implement (GTK_IM_MODULE_EXTENSION_POINT_NAME,
|
||||
g_define_type_id,
|
||||
"quartz",
|
||||
0))
|
||||
|
||||
static void
|
||||
quartz_get_preedit_string (GtkIMContext *context,
|
||||
gchar **str,
|
||||
quartz_get_preedit_string (GtkIMContext *context,
|
||||
gchar **str,
|
||||
PangoAttrList **attrs,
|
||||
gint *cursor_pos)
|
||||
gint *cursor_pos)
|
||||
{
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
|
||||
GTK_NOTE (MISC, g_print ("quartz_get_preedit_string\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_get_preedit_string\n"));
|
||||
|
||||
if (str)
|
||||
*str = qc->preedit_str ? g_strdup (qc->preedit_str) : g_strdup ("");
|
||||
@@ -85,7 +87,7 @@ quartz_get_preedit_string (GtkIMContext *context,
|
||||
ch = g_utf8_next_char (ch);
|
||||
|
||||
if (i >= qc->cursor_index &&
|
||||
i < qc->cursor_index + qc->selected_len)
|
||||
i < qc->cursor_index + qc->selected_len)
|
||||
attr = pango_attr_underline_new (PANGO_UNDERLINE_DOUBLE);
|
||||
else
|
||||
attr = pango_attr_underline_new (PANGO_UNDERLINE_SINGLE);
|
||||
@@ -110,7 +112,7 @@ quartz_get_preedit_string (GtkIMContext *context,
|
||||
|
||||
static gboolean
|
||||
output_result (GtkIMContext *context,
|
||||
GdkSurface *surface)
|
||||
GdkSurface *surface)
|
||||
{
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
gboolean retval = FALSE;
|
||||
@@ -120,7 +122,7 @@ output_result (GtkIMContext *context,
|
||||
marked_str = g_strdup (g_object_get_data (G_OBJECT (surface), TIC_MARKED_TEXT));
|
||||
if (fixed_str)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("tic-insert-text: %s\n", fixed_str));
|
||||
GDK_NOTE (MISC, g_print ("tic-insert-text: %s\n", fixed_str));
|
||||
g_free (qc->preedit_str);
|
||||
qc->preedit_str = NULL;
|
||||
g_object_set_data (G_OBJECT (surface), TIC_INSERT_TEXT, NULL);
|
||||
@@ -128,9 +130,9 @@ output_result (GtkIMContext *context,
|
||||
g_signal_emit_by_name (context, "preedit_changed");
|
||||
|
||||
unsigned int filtered =
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
GIC_FILTER_KEY));
|
||||
GTK_NOTE (MISC, g_print ("filtered, %d\n", filtered));
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
GIC_FILTER_KEY));
|
||||
GDK_NOTE (MISC, g_print ("filtered, %d\n", filtered));
|
||||
if (filtered)
|
||||
retval = TRUE;
|
||||
else
|
||||
@@ -138,13 +140,13 @@ output_result (GtkIMContext *context,
|
||||
}
|
||||
if (marked_str)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("tic-marked-text: %s\n", marked_str));
|
||||
GDK_NOTE (MISC, g_print ("tic-marked-text: %s\n", marked_str));
|
||||
qc->cursor_index =
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
TIC_SELECTED_POS));
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
TIC_SELECTED_POS));
|
||||
qc->selected_len =
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
TIC_SELECTED_LEN));
|
||||
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (surface),
|
||||
TIC_SELECTED_LEN));
|
||||
g_free (qc->preedit_str);
|
||||
qc->preedit_str = g_strdup (marked_str);
|
||||
g_object_set_data (G_OBJECT (surface), TIC_MARKED_TEXT, NULL);
|
||||
@@ -168,25 +170,28 @@ quartz_filter_keypress (GtkIMContext *context,
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
gboolean retval;
|
||||
NSView *nsview;
|
||||
GdkSurface *surface;
|
||||
|
||||
GTK_NOTE (MISC, g_print ("quartz_filter_keypress\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_filter_keypress\n"));
|
||||
|
||||
if (!GDK_IS_QUARTZ_SURFACE (qc->client_surface))
|
||||
if (!GDK_IS_MACOS_SURFACE (qc->client_surface))
|
||||
return FALSE;
|
||||
|
||||
nsview = gdk_quartz_surface_get_nsview (qc->client_surface);
|
||||
surface = (GdkSurface *)[ (GdkQuartzView *)nsview gdkSurface];
|
||||
GTK_NOTE (MISC, g_print ("client_surface: %p, win: %p, nsview: %p\n",
|
||||
qc->client_surface, surface, nsview));
|
||||
nsview = _gdk_macos_surface_get_view (GDK_MACOS_SURFACE (qc->client_surface));
|
||||
GDK_NOTE (MISC, g_print ("client_surface: %p, win: %p, nsview: %p\n",
|
||||
qc->client_surface, qc->client_surface, nsview));
|
||||
|
||||
#if 0
|
||||
NSEvent *nsevent = gdk_quartz_event_get_nsevent ((GdkEvent *)event);
|
||||
#else
|
||||
/* TODO: Fix this to get actual NSEvent */
|
||||
NSEvent *nsevent = nil;
|
||||
#endif
|
||||
|
||||
if (!nsevent)
|
||||
{
|
||||
if (event->hardware_keycode == 0 && event->keyval == 0xffffff)
|
||||
/* update text input changes by mouse events */
|
||||
return output_result (context, surface);
|
||||
return output_result (context, qc->client_surface);
|
||||
else
|
||||
return gtk_im_context_filter_keypress (qc->helper, event);
|
||||
}
|
||||
@@ -194,24 +199,26 @@ quartz_filter_keypress (GtkIMContext *context,
|
||||
if (event->type == GDK_KEY_RELEASE)
|
||||
return FALSE;
|
||||
|
||||
if (event->hardware_keycode == 55) /* Command */
|
||||
if (event->hardware_keycode == 55) /* Command */
|
||||
return FALSE;
|
||||
|
||||
NSEventType etype = [nsevent type];
|
||||
if (etype == NSKeyDown)
|
||||
if (etype == NSEventTypeKeyDown)
|
||||
{
|
||||
g_object_set_data (G_OBJECT (surface), TIC_IN_KEY_DOWN,
|
||||
GUINT_TO_POINTER (TRUE));
|
||||
[nsview keyDown: nsevent];
|
||||
g_object_set_data (G_OBJECT (qc->client_surface),
|
||||
TIC_IN_KEY_DOWN,
|
||||
GUINT_TO_POINTER (TRUE));
|
||||
[nsview keyDown: nsevent];
|
||||
}
|
||||
/* JIS_Eisu || JIS_Kana */
|
||||
if (event->hardware_keycode == 102 || event->hardware_keycode == 104)
|
||||
return FALSE;
|
||||
|
||||
retval = output_result(context, surface);
|
||||
g_object_set_data (G_OBJECT (surface), TIC_IN_KEY_DOWN,
|
||||
GUINT_TO_POINTER (FALSE));
|
||||
GTK_NOTE (MISC, g_print ("quartz_filter_keypress done\n"));
|
||||
retval = output_result(context, qc->client_surface);
|
||||
g_object_set_data (G_OBJECT (qc->client_surface),
|
||||
TIC_IN_KEY_DOWN,
|
||||
GUINT_TO_POINTER (FALSE));
|
||||
GDK_NOTE (MISC, g_print ("quartz_filter_keypress done\n"));
|
||||
|
||||
return retval;
|
||||
}
|
||||
@@ -224,15 +231,15 @@ discard_preedit (GtkIMContext *context)
|
||||
if (!qc->client_surface)
|
||||
return;
|
||||
|
||||
if (!GDK_IS_QUARTZ_SURFACE (qc->client_surface))
|
||||
if (!GDK_IS_MACOS_SURFACE (qc->client_surface))
|
||||
return;
|
||||
|
||||
NSView *nsview = gdk_quartz_surface_get_nsview (qc->client_surface);
|
||||
NSView *nsview = _gdk_macos_surface_get_view (GDK_MACOS_SURFACE (qc->client_surface));
|
||||
if (!nsview)
|
||||
return;
|
||||
|
||||
/* reset any partial input for this NSView */
|
||||
[(GdkQuartzView *)nsview unmarkText];
|
||||
[(GdkMacosBaseView *)nsview unmarkText];
|
||||
NSInputManager *currentInputManager = [NSInputManager currentInputManager];
|
||||
[currentInputManager markedTextAbandoned:nsview];
|
||||
|
||||
@@ -249,24 +256,29 @@ discard_preedit (GtkIMContext *context)
|
||||
static void
|
||||
quartz_reset (GtkIMContext *context)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("quartz_reset\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_reset\n"));
|
||||
discard_preedit (context);
|
||||
}
|
||||
|
||||
static void
|
||||
quartz_set_client_surface (GtkIMContext *context, GtkWidget *widget)
|
||||
quartz_set_client_surface (GtkIMContext *context,
|
||||
GtkWidget *widget)
|
||||
{
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
GtkNative *native = gtk_widget_get_native (widget);
|
||||
|
||||
GTK_NOTE (MISC, g_print ("quartz_set_client_surface: %p\n", widget));
|
||||
GDK_NOTE (MISC, g_print ("quartz_set_client_surface: %p\n", widget));
|
||||
|
||||
qc->client_surface = gtk_widget_get_parent_surface (widget);
|
||||
if (native)
|
||||
qc->client_surface = gtk_native_get_surface (native);
|
||||
else
|
||||
qc->client_surface = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
quartz_focus_in (GtkIMContext *context)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("quartz_focus_in\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_focus_in\n"));
|
||||
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
qc->focused = TRUE;
|
||||
@@ -275,7 +287,7 @@ quartz_focus_in (GtkIMContext *context)
|
||||
static void
|
||||
quartz_focus_out (GtkIMContext *context)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("quartz_focus_out\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_focus_out\n"));
|
||||
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
qc->focused = FALSE;
|
||||
@@ -285,14 +297,14 @@ quartz_focus_out (GtkIMContext *context)
|
||||
}
|
||||
|
||||
static void
|
||||
quartz_set_cursor_location (GtkIMContext *context, GdkRectangle *area)
|
||||
quartz_set_cursor_location (GtkIMContext *context,
|
||||
GdkRectangle *area)
|
||||
{
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (context);
|
||||
gint x, y;
|
||||
NSView *nsview;
|
||||
GdkSurface *surface;
|
||||
|
||||
GTK_NOTE (MISC, g_print ("quartz_set_cursor_location\n"));
|
||||
GDK_NOTE (MISC, g_print ("quartz_set_cursor_location\n"));
|
||||
|
||||
if (!qc->client_surface)
|
||||
return;
|
||||
@@ -310,22 +322,24 @@ quartz_set_cursor_location (GtkIMContext *context, GdkRectangle *area)
|
||||
qc->cursor_rect->x = area->x + x;
|
||||
qc->cursor_rect->y = area->y + y;
|
||||
|
||||
if (!GDK_IS_QUARTZ_SURFACE (qc->client_surface))
|
||||
if (!GDK_IS_MACOS_SURFACE (qc->client_surface))
|
||||
return;
|
||||
|
||||
nsview = gdk_quartz_surface_get_nsview (qc->client_surface);
|
||||
surface = (GdkSurface *)[ (GdkQuartzView*)nsview gdkSurface];
|
||||
g_object_set_data (G_OBJECT (surface), GIC_CURSOR_RECT, qc->cursor_rect);
|
||||
nsview = _gdk_macos_surface_get_view (GDK_MACOS_SURFACE (qc->client_surface));
|
||||
g_object_set_data (G_OBJECT (qc->client_surface), GIC_CURSOR_RECT, qc->cursor_rect);
|
||||
}
|
||||
|
||||
static void
|
||||
quartz_set_use_preedit (GtkIMContext *context, gboolean use_preedit)
|
||||
quartz_set_use_preedit (GtkIMContext *context,
|
||||
gboolean use_preedit)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("quartz_set_use_preedit: %d\n", use_preedit));
|
||||
GDK_NOTE (MISC, g_print ("quartz_set_use_preedit: %d\n", use_preedit));
|
||||
}
|
||||
|
||||
static void
|
||||
commit_cb (GtkIMContext *context, const gchar *str, GtkIMContextQuartz *qc)
|
||||
commit_cb (GtkIMContext *context,
|
||||
const gchar *str,
|
||||
GtkIMContextQuartz *qc)
|
||||
{
|
||||
g_signal_emit_by_name (qc, "commit", str);
|
||||
}
|
||||
@@ -333,7 +347,7 @@ commit_cb (GtkIMContext *context, const gchar *str, GtkIMContextQuartz *qc)
|
||||
static void
|
||||
imquartz_finalize (GObject *obj)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("imquartz_finalize\n"));
|
||||
GDK_NOTE (MISC, g_print ("imquartz_finalize\n"));
|
||||
|
||||
GtkIMContextQuartz *qc = GTK_IM_CONTEXT_QUARTZ (obj);
|
||||
g_free (qc->preedit_str);
|
||||
@@ -344,13 +358,13 @@ imquartz_finalize (GObject *obj)
|
||||
g_signal_handlers_disconnect_by_func (qc->helper, (gpointer)commit_cb, qc);
|
||||
g_object_unref (qc->helper);
|
||||
|
||||
gtk_im_context_quartz_parent_class->finalize (obj);
|
||||
G_OBJECT_CLASS (gtk_im_context_quartz_parent_class)->finalize (obj);
|
||||
}
|
||||
|
||||
static void
|
||||
gtk_im_context_quartz_class_init (GtkIMContextQuartzClass *class)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("gtk_im_context_quartz_class_init\n"));
|
||||
GDK_NOTE (MISC, g_print ("gtk_im_context_quartz_class_init\n"));
|
||||
|
||||
GtkIMContextClass *klass = GTK_IM_CONTEXT_CLASS (class);
|
||||
GObjectClass *object_class = G_OBJECT_CLASS (class);
|
||||
@@ -370,7 +384,7 @@ gtk_im_context_quartz_class_init (GtkIMContextQuartzClass *class)
|
||||
static void
|
||||
gtk_im_context_quartz_init (GtkIMContextQuartz *qc)
|
||||
{
|
||||
GTK_NOTE (MISC, g_print ("gtk_im_context_quartz_init\n"));
|
||||
GDK_NOTE (MISC, g_print ("gtk_im_context_quartz_init\n"));
|
||||
|
||||
qc->preedit_str = g_strdup ("");
|
||||
qc->cursor_index = 0;
|
||||
@@ -381,3 +395,5 @@ gtk_im_context_quartz_init (GtkIMContextQuartz *qc)
|
||||
qc->helper = g_object_new (GTK_TYPE_IM_CONTEXT_SIMPLE, NULL);
|
||||
g_signal_connect (G_OBJECT (qc->helper), "commit", G_CALLBACK (commit_cb), qc);
|
||||
}
|
||||
|
||||
G_GNUC_END_IGNORE_DEPRECATIONS
|
||||
|
@@ -58,8 +58,8 @@
|
||||
#include "gtkimcontextime.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#include "quartz/gdkquartz.h"
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#include "macos/gdkmacos.h"
|
||||
#include "gtkimcontextquartz.h"
|
||||
#endif
|
||||
|
||||
@@ -131,9 +131,9 @@ match_backend (GdkDisplay *display,
|
||||
return FALSE;
|
||||
#endif
|
||||
|
||||
if (g_strcmp0 (context_id, "quartz") == 0)
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
return GDK_IS_QUARTZ_DISPLAY (display);
|
||||
if (g_strcmp0 (context_id, "macos") == 0)
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
return GDK_IS_MACOS_DISPLAY (display);
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
@@ -270,7 +270,7 @@ gtk_im_modules_init (void)
|
||||
#ifdef GDK_WINDOWING_WIN32
|
||||
g_type_ensure (gtk_im_context_ime_get_type ());
|
||||
#endif
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
g_type_ensure (gtk_im_context_quartz_get_type ());
|
||||
#endif
|
||||
|
||||
|
@@ -33,7 +33,7 @@
|
||||
#include "gtkresources.h"
|
||||
|
||||
|
||||
#if !defined G_OS_WIN32 && !(defined GDK_WINDOWING_QUARTZ && defined QUARTZ_RELOCATION)
|
||||
#if !defined G_OS_WIN32 && !(defined GDK_WINDOWING_MACOS && defined QUARTZ_RELOCATION)
|
||||
|
||||
const gchar *
|
||||
_gtk_get_datadir (void)
|
||||
|
218
gtk/gtkquartz.c
218
gtk/gtkquartz.c
@@ -19,12 +19,12 @@
|
||||
#include "config.h"
|
||||
|
||||
#include "gtkquartz.h"
|
||||
#include <gdk/quartz/gdkquartz.h>
|
||||
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
|
||||
static gboolean
|
||||
_cairo_surface_extents (cairo_surface_t *surface,
|
||||
GdkRectangle *extents)
|
||||
GdkRectangle *extents)
|
||||
{
|
||||
double x1, x2, y1, y2;
|
||||
cairo_t *cr;
|
||||
@@ -59,7 +59,9 @@ _cairo_surface_extents (cairo_surface_t *surface,
|
||||
}
|
||||
|
||||
static void
|
||||
_data_provider_release_cairo_surface (void* info, const void* data, size_t size)
|
||||
_data_provider_release_cairo_surface (void *info,
|
||||
const void *data,
|
||||
size_t size)
|
||||
{
|
||||
cairo_surface_destroy ((cairo_surface_t *)info);
|
||||
}
|
||||
@@ -121,212 +123,6 @@ _gtk_quartz_create_image_from_surface (cairo_surface_t *surface)
|
||||
return nsimage;
|
||||
}
|
||||
|
||||
NSSet *
|
||||
_gtk_quartz_target_list_to_pasteboard_types (GtkTargetList *target_list)
|
||||
{
|
||||
NSMutableSet *set = [[NSMutableSet alloc] init];
|
||||
GList *list;
|
||||
|
||||
for (list = target_list->list; list; list = list->next)
|
||||
{
|
||||
GtkTargetPair *pair = list->data;
|
||||
g_return_val_if_fail (pair->flags < 16, NULL);
|
||||
[set addObject:gdk_quartz_atom_to_pasteboard_type_libgtk_only (pair->target)];
|
||||
}
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
NSSet *
|
||||
_gtk_quartz_target_entries_to_pasteboard_types (const GtkTargetEntry *targets,
|
||||
guint n_targets)
|
||||
{
|
||||
NSMutableSet *set = [[NSMutableSet alloc] init];
|
||||
int i;
|
||||
|
||||
for (i = 0; i < n_targets; i++)
|
||||
{
|
||||
[set addObject:gdk_quartz_target_to_pasteboard_type_libgtk_only (targets[i].target)];
|
||||
}
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
GList *
|
||||
_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array)
|
||||
{
|
||||
GList *result = NULL;
|
||||
int i;
|
||||
int count;
|
||||
|
||||
count = [array count];
|
||||
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
GdkAtom atom = gdk_quartz_pasteboard_type_to_atom_libgtk_only ([array objectAtIndex:i]);
|
||||
|
||||
result = g_list_prepend (result, GDK_ATOM_TO_POINTER (atom));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
GtkSelectionData *
|
||||
_gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
|
||||
GdkAtom target,
|
||||
GdkAtom selection)
|
||||
{
|
||||
GtkSelectionData *selection_data = NULL;
|
||||
|
||||
selection_data = g_slice_new0 (GtkSelectionData);
|
||||
selection_data->selection = selection;
|
||||
selection_data->target = target;
|
||||
if (!selection_data->display)
|
||||
selection_data->display = gdk_display_get_default ();
|
||||
if (target == g_intern_static_string ("UTF8_STRING"))
|
||||
{
|
||||
NSString *s = [pasteboard stringForType:NSStringPboardType];
|
||||
|
||||
if (s)
|
||||
{
|
||||
const char *utf8_string = [s UTF8String];
|
||||
|
||||
gtk_selection_data_set (selection_data,
|
||||
target, 8,
|
||||
(guchar *)utf8_string, strlen (utf8_string));
|
||||
}
|
||||
}
|
||||
else if (target == g_intern_static_string ("application/x-color"))
|
||||
{
|
||||
NSColor *nscolor = [[NSColor colorFromPasteboard:pasteboard]
|
||||
colorUsingColorSpaceName:NSDeviceRGBColorSpace];
|
||||
|
||||
guint16 color[4];
|
||||
|
||||
selection_data->target = target;
|
||||
|
||||
color[0] = 0xffff * [nscolor redComponent];
|
||||
color[1] = 0xffff * [nscolor greenComponent];
|
||||
color[2] = 0xffff * [nscolor blueComponent];
|
||||
color[3] = 0xffff * [nscolor alphaComponent];
|
||||
|
||||
gtk_selection_data_set (selection_data, target, 16, (guchar *)color, 8);
|
||||
}
|
||||
else if (target == g_intern_static_string ("text/uri-list"))
|
||||
{
|
||||
if ([[pasteboard types] containsObject:NSFilenamesPboardType])
|
||||
{
|
||||
gchar **uris;
|
||||
NSArray *files = [pasteboard propertyListForType:NSFilenamesPboardType];
|
||||
int n_files = [files count];
|
||||
int i;
|
||||
|
||||
selection_data->target = g_intern_static_string ("text/uri-list");
|
||||
|
||||
uris = (gchar **) g_malloc (sizeof (gchar*) * (n_files + 1));
|
||||
for (i = 0; i < n_files; ++i)
|
||||
{
|
||||
NSString* uriString = [files objectAtIndex:i];
|
||||
uriString = [@"file://" stringByAppendingString:uriString];
|
||||
uriString = [uriString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
||||
uris[i] = (gchar *) [uriString cStringUsingEncoding:NSUTF8StringEncoding];
|
||||
}
|
||||
uris[i] = NULL;
|
||||
|
||||
gtk_selection_data_set_uris (selection_data, uris);
|
||||
g_free (uris);
|
||||
}
|
||||
else if ([[pasteboard types] containsObject:NSURLPboardType])
|
||||
{
|
||||
gchar *uris[2];
|
||||
NSURL *url = [NSURL URLFromPasteboard:pasteboard];
|
||||
|
||||
selection_data->target = g_intern_static_string ("text/uri-list");
|
||||
|
||||
uris[0] = (gchar *) [[url description] UTF8String];
|
||||
|
||||
uris[1] = NULL;
|
||||
gtk_selection_data_set_uris (selection_data, uris);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
NSData *data;
|
||||
const char *name;
|
||||
|
||||
name = (const char *)target;
|
||||
|
||||
if (strcmp (name, "image/tiff") == 0)
|
||||
data = [pasteboard dataForType:NSTIFFPboardType];
|
||||
else
|
||||
data = [pasteboard dataForType:[NSString stringWithUTF8String:name]];
|
||||
|
||||
if (data)
|
||||
{
|
||||
gtk_selection_data_set (selection_data,
|
||||
target, 8,
|
||||
[data bytes], [data length]);
|
||||
}
|
||||
}
|
||||
|
||||
return selection_data;
|
||||
}
|
||||
|
||||
void
|
||||
_gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
|
||||
GtkSelectionData *selection_data)
|
||||
{
|
||||
NSString *type;
|
||||
GdkDisplay *display;
|
||||
gint format;
|
||||
const guchar *data;
|
||||
NSUInteger length;
|
||||
|
||||
display = gtk_selection_data_get_display (selection_data);
|
||||
format = gtk_selection_data_get_format (selection_data);
|
||||
data = gtk_selection_data_get_data (selection_data);
|
||||
length = gtk_selection_data_get_length (selection_data);
|
||||
|
||||
type = gdk_quartz_atom_to_pasteboard_type_libgtk_only (gtk_selection_data_get_target (selection_data));
|
||||
|
||||
if ([type isEqualTo:NSStringPboardType])
|
||||
[pasteboard setString:[NSString stringWithUTF8String:(const char *)data]
|
||||
forType:type];
|
||||
else if ([type isEqualTo:NSColorPboardType])
|
||||
{
|
||||
guint16 *color = (guint16 *)data;
|
||||
float red, green, blue, alpha;
|
||||
NSColor *nscolor;
|
||||
|
||||
red = (float)color[0] / 0xffff;
|
||||
green = (float)color[1] / 0xffff;
|
||||
blue = (float)color[2] / 0xffff;
|
||||
alpha = (float)color[3] / 0xffff;
|
||||
|
||||
nscolor = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha];
|
||||
[nscolor writeToPasteboard:pasteboard];
|
||||
}
|
||||
else if ([type isEqualTo:NSURLPboardType])
|
||||
{
|
||||
gchar **uris;
|
||||
|
||||
uris = gtk_selection_data_get_uris (selection_data);
|
||||
if (uris != NULL)
|
||||
{
|
||||
NSURL *url;
|
||||
|
||||
url = [NSURL URLWithString:[NSString stringWithUTF8String:uris[0]]];
|
||||
[url writeToPasteboard:pasteboard];
|
||||
}
|
||||
g_strfreev (uris);
|
||||
}
|
||||
else
|
||||
[pasteboard setData:[NSData dataWithBytesNoCopy:(void *)data
|
||||
length:length
|
||||
freeWhenDone:NO]
|
||||
forType:type];
|
||||
}
|
||||
|
||||
#ifdef QUARTZ_RELOCATION
|
||||
|
||||
/* Bundle-based functions for various directories. These almost work
|
||||
@@ -349,9 +145,9 @@ get_bundle_path (void)
|
||||
|
||||
base = g_path_get_basename (resource_path);
|
||||
if (strcmp (base, "bin") == 0)
|
||||
path = g_path_get_dirname (resource_path);
|
||||
path = g_path_get_dirname (resource_path);
|
||||
else
|
||||
path = strdup (resource_path);
|
||||
path = strdup (resource_path);
|
||||
|
||||
g_free (resource_path);
|
||||
g_free (base);
|
||||
|
@@ -20,31 +20,18 @@
|
||||
#define __GTK_QUARTZ_H__
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#include <gtk/gtkselection.h>
|
||||
|
||||
#include <cairo.h>
|
||||
#include <glib.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
NSSet *_gtk_quartz_target_list_to_pasteboard_types (GtkTargetList *target_list);
|
||||
NSSet *_gtk_quartz_target_entries_to_pasteboard_types (const GtkTargetEntry *targets,
|
||||
guint n_targets);
|
||||
|
||||
GList *_gtk_quartz_pasteboard_types_to_atom_list (NSArray *array);
|
||||
|
||||
GtkSelectionData *_gtk_quartz_get_selection_data_from_pasteboard (NSPasteboard *pasteboard,
|
||||
GdkAtom target,
|
||||
GdkAtom selection);
|
||||
|
||||
void _gtk_quartz_set_selection_data_for_pasteboard (NSPasteboard *pasteboard,
|
||||
GtkSelectionData *selection_data);
|
||||
|
||||
NSImage *_gtk_quartz_create_image_from_surface (cairo_surface_t *surface);
|
||||
void _gtk_clipboard_handle_event (GdkEventOwnerChange *event);
|
||||
void _gtk_clipboard_store_all (void);
|
||||
const gchar * _gtk_get_datadir (void);
|
||||
const gchar * _gtk_get_libdir (void);
|
||||
const gchar * _gtk_get_localedir (void);
|
||||
const gchar * _gtk_get_sysconfdir (void);
|
||||
const gchar * _gtk_get_data_prefix (void);
|
||||
NSImage *_gtk_quartz_create_image_from_surface (cairo_surface_t *surface);
|
||||
const char *_gtk_get_datadir (void);
|
||||
const char *_gtk_get_libdir (void);
|
||||
const char *_gtk_get_localedir (void);
|
||||
const char *_gtk_get_sysconfdir (void);
|
||||
const char *_gtk_get_data_prefix (void);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
@@ -2182,7 +2182,7 @@ gtk_range_scroll_controller_scroll (GtkEventControllerScroll *scroll,
|
||||
gboolean handled;
|
||||
GtkOrientation move_orientation;
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
scroll_unit = 1;
|
||||
#else
|
||||
scroll_unit = gtk_adjustment_get_page_increment (priv->adjustment);
|
||||
|
@@ -1202,7 +1202,7 @@ get_scroll_unit (GtkScrolledWindow *sw,
|
||||
{
|
||||
gdouble scroll_unit;
|
||||
|
||||
#ifndef GDK_WINDOWING_QUARTZ
|
||||
#ifndef GDK_WINDOWING_MACOS
|
||||
GtkScrolledWindowPrivate *priv = gtk_scrolled_window_get_instance_private (sw);
|
||||
GtkScrollbar *scrollbar;
|
||||
GtkAdjustment *adj;
|
||||
|
@@ -25,7 +25,7 @@
|
||||
#include "gtksearchenginequartz.h"
|
||||
#include "gtkintl.h"
|
||||
|
||||
#include <gdk/gdk.h> /* for GDK_WINDOWING_QUARTZ */
|
||||
#include <gdk/gdk.h> /* for GDK_WINDOWING_MACOS */
|
||||
|
||||
#if defined(HAVE_TRACKER3)
|
||||
#include "gtksearchenginetracker3.h"
|
||||
@@ -342,7 +342,7 @@ _gtk_search_engine_new (void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
engine->priv->native = _gtk_search_engine_quartz_new ();
|
||||
if (engine->priv->native)
|
||||
{
|
||||
|
@@ -16,7 +16,6 @@
|
||||
*/
|
||||
|
||||
#include <Cocoa/Cocoa.h>
|
||||
#include <quartz/gdkquartz.h>
|
||||
|
||||
#include "gtksearchenginequartz.h"
|
||||
|
||||
@@ -262,7 +261,7 @@ _gtk_search_engine_quartz_init (GtkSearchEngineQuartz *engine)
|
||||
GtkSearchEngine *
|
||||
_gtk_search_engine_quartz_new (void)
|
||||
{
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
return g_object_new (GTK_TYPE_SEARCH_ENGINE_QUARTZ, NULL);
|
||||
#else
|
||||
return NULL;
|
||||
|
@@ -49,15 +49,15 @@
|
||||
#include "broadway/gdkbroadway.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#include "quartz/gdkquartz.h"
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#include "macos/gdkmacos.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_WIN32
|
||||
#include "win32/gdkwin32.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#define PRINT_PREVIEW_COMMAND "open -b com.apple.Preview %f"
|
||||
#else
|
||||
#define PRINT_PREVIEW_COMMAND "evince --unlink-tempfile --preview --print-settings %s %f"
|
||||
@@ -1095,8 +1095,8 @@ gtk_settings_create_for_display (GdkDisplay *display)
|
||||
{
|
||||
GtkSettings *settings;
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
if (GDK_IS_QUARTZ_DISPLAY (display))
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
if (GDK_IS_MACOS_DISPLAY (display))
|
||||
settings = g_object_new (GTK_TYPE_SETTINGS,
|
||||
"gtk-key-theme-name", "Mac",
|
||||
"gtk-shell-shows-app-menu", TRUE,
|
||||
|
@@ -44,8 +44,8 @@
|
||||
#include "win32/gdkwin32.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#include "quartz/gdkquartz.h"
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#include "macos/gdkmacos.h"
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_WAYLAND
|
||||
@@ -134,9 +134,9 @@ init_version (GtkInspectorGeneral *gen)
|
||||
backend = "Windows";
|
||||
else
|
||||
#endif
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
if (GDK_IS_QUARTZ_DISPLAY (gen->display))
|
||||
backend = "Quartz";
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
if (GDK_IS_MACOS_DISPLAY (gen->display))
|
||||
backend = "macOS";
|
||||
else
|
||||
#endif
|
||||
backend = "Unknown";
|
||||
|
@@ -486,7 +486,7 @@ static gchar*
|
||||
get_data_path (const gchar *subdir)
|
||||
{
|
||||
gchar *base_datadir, *full_datadir;
|
||||
#if defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_QUARTZ)
|
||||
#if defined (GDK_WINDOWING_WIN32) || defined (GDK_WINDOWING_MACOS)
|
||||
base_datadir = g_strdup (_gtk_get_datadir ());
|
||||
#else
|
||||
base_datadir = g_strdup (GTK_DATADIR);
|
||||
|
@@ -799,7 +799,7 @@ if win32_enabled
|
||||
gtk_sources += ['gtkmountoperation-stub.c']
|
||||
endif
|
||||
|
||||
if quartz_enabled
|
||||
if macos_enabled
|
||||
gtk_sources += files([
|
||||
'gtksearchenginequartz.c',
|
||||
'gtkmountoperation-stub.c',
|
||||
@@ -813,7 +813,7 @@ if quartz_enabled
|
||||
gtk_cargs += ['-xobjective-c'] # FIXME? maybe add_languages() instead?
|
||||
endif
|
||||
|
||||
if not (x11_enabled or win32_enabled or quartz_enabled)
|
||||
if not (x11_enabled or win32_enabled or macos_enabled)
|
||||
gtk_sources += ['gtkmountoperation-stub.c', ]
|
||||
endif
|
||||
|
||||
|
@@ -4,9 +4,9 @@
|
||||
#include <gdk/broadway/gdkbroadway.h>
|
||||
#endif
|
||||
|
||||
#ifdef GDK_WINDOWING_QUARTZ
|
||||
#ifdef GDK_WINDOWING_MACOS
|
||||
#if HAVE_OBJC
|
||||
#include <gdk/quartz/gdkquartz.h>
|
||||
#include <gdk/macos/gdkmacos.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user