98db2efb673178a9b5e44387474c2dbb3309b76d
[mono.git] / bockbuild / mac-sdk / patches / gtk / quartz-call-undo-redo-on-cmdz.patch
1 diff --git a/gdk/quartz/gdkevents-quartz.c b/gdk/quartz/gdkevents-quartz.c
2 index ee7dc96..f4ae401 100644
3 --- a/gdk/quartz/gdkevents-quartz.c
4 +++ b/gdk/quartz/gdkevents-quartz.c
5 @@ -1826,6 +1826,33 @@ gdk_event_translate (GdkEvent *event,
6          NSView *tmp_view = [nswindow firstResponder];
7          gboolean gtk_child = FALSE;
8
9 +        if (event_type == NSKeyDown && ([nsevent modifierFlags] & NSCommandKeyMask) != 0 && [[nsevent characters] characterAtIndex:0] == 'z')
10 +          {
11 +            if ([tmp_view respondsToSelector:@selector(undoManager)])
12 +              {
13 +                NSUndoManager *undo_manager = [tmp_view undoManager];
14 +
15 +                if (([nsevent modifierFlags] & NSShiftKeyMask) != 0)
16 +                  {
17 +                    if ([undo_manager canRedo])
18 +                      {
19 +                        [undo_manager redo];
20 +                        return_val = FALSE;
21 +                        break;
22 +                      }
23 +                  }
24 +                else
25 +                  {
26 +                    if ([undo_manager canUndo])
27 +                      {
28 +                        [undo_manager undo];
29 +                        return_val = FALSE;
30 +                        break;
31 +                      }
32 +                  }
33 +              }
34 +          }
35 +
36          while (tmp_view != NULL)
37            {
38              if (tmp_view && [tmp_view respondsToSelector:@selector(isGtkView)])
39 diff --git a/gtk/gtknsview.c b/gtk/gtknsview.c
40 index 71fd917..182c82d 100644
41 --- a/gtk/gtknsview.c
42 +++ b/gtk/gtknsview.c
43 @@ -742,11 +742,6 @@ gtk_ns_view_key_press (GtkWidget   *widget,
44
45            switch (event->keyval)
46              {
47 -            case GDK_KEY_z: /* undo */
48 -              if ([[text_view undoManager] canUndo])
49 -                [[text_view undoManager] undo];
50 -              return TRUE;
51 -
52              case GDK_KEY_c: /* copy */
53                if (has_selection)
54                  [text_view copy: text_view];