linux-packaging-mono/external/bockbuild/packages/patches/gtk/quartz-call-undo-redo-on-cmdz.patch

55 lines
1.9 KiB
Diff
Raw Normal View History

diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
index ee7dc96..f4ae401 100644
--- a/gdk/quartz/gdkevents-quartz.c
+++ b/gdk/quartz/gdkevents-quartz.c
@@ -1826,6 +1826,33 @@ gdk_event_translate (GdkEvent *event,
NSView *tmp_view = [nswindow firstResponder];
gboolean gtk_child = FALSE;
+ if (event_type == NSKeyDown && ([nsevent modifierFlags] & NSCommandKeyMask) != 0 && [[nsevent characters] characterAtIndex:0] == 'z')
+ {
+ if ([tmp_view respondsToSelector:@selector(undoManager)])
+ {
+ NSUndoManager *undo_manager = [tmp_view undoManager];
+
+ if (([nsevent modifierFlags] & NSShiftKeyMask) != 0)
+ {
+ if ([undo_manager canRedo])
+ {
+ [undo_manager redo];
+ return_val = FALSE;
+ break;
+ }
+ }
+ else
+ {
+ if ([undo_manager canUndo])
+ {
+ [undo_manager undo];
+ return_val = FALSE;
+ break;
+ }
+ }
+ }
+ }
+
while (tmp_view != NULL)
{
if (tmp_view && [tmp_view respondsToSelector:@selector(isGtkView)])
diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c
index 71fd917..182c82d 100644
--- a/gtk/gtknsview.c
+++ b/gtk/gtknsview.c
@@ -742,11 +742,6 @@ gtk_ns_view_key_press (GtkWidget *widget,
switch (event->keyval)
{
- case GDK_KEY_z: /* undo */
- if ([[text_view undoManager] canUndo])
- [[text_view undoManager] undo];
- return TRUE;
-
case GDK_KEY_c: /* copy */
if (has_selection)
[text_view copy: text_view];