Index: third_party/undoview/undo_view.c |
diff --git a/third_party/undoview/undo_view.c b/third_party/undoview/undo_view.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..03ea16af14cf2c9b50c88fbeab617b54558ff1af |
--- /dev/null |
+++ b/third_party/undoview/undo_view.c |
@@ -0,0 +1,83 @@ |
+// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Boilerplate code was generated by http://burtonini.com/cgi/gobject.py |
+ |
+#include <gdk/gdkkeysyms.h> |
+ |
+#include "undo_view.h" |
+ |
+G_DEFINE_TYPE (GtkUndoView, gtk_undo_view, GTK_TYPE_TEXT_VIEW) |
+ |
+static void |
+gtk_undo_view_dispose(GObject *object) { |
+ GtkUndoView *uview = GTK_UNDO_VIEW(object); |
+ |
+ if(uview->undo_manager_) { |
+ g_object_unref(G_OBJECT(uview->undo_manager_)); |
+ uview->undo_manager_ = NULL; |
+ } |
+ G_OBJECT_CLASS(gtk_undo_view_parent_class)->dispose(object); |
+} |
+ |
+static void |
+gtk_undo_view_undo(GtkUndoView *uview) { |
+ if(gtk_source_undo_manager_can_undo(uview->undo_manager_)) |
+ gtk_source_undo_manager_undo(uview->undo_manager_); |
+} |
+ |
+static void |
+gtk_undo_view_redo(GtkUndoView *uview) { |
+ if(gtk_source_undo_manager_can_redo(uview->undo_manager_)) |
+ gtk_source_undo_manager_redo(uview->undo_manager_); |
+} |
+ |
+static void |
+gtk_undo_view_class_init(GtkUndoViewClass *klass) { |
+ GObjectClass *object_class = G_OBJECT_CLASS(klass); |
+ GtkBindingSet *binding_set; |
+ |
+ g_signal_new("undo", |
+ G_TYPE_FROM_CLASS(klass), |
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, |
+ G_STRUCT_OFFSET(GtkUndoViewClass, undo), |
+ NULL, |
+ NULL, |
+ g_cclosure_marshal_VOID__VOID, |
+ G_TYPE_NONE, |
+ 0); |
+ g_signal_new("redo", |
+ G_TYPE_FROM_CLASS(klass), |
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, |
+ G_STRUCT_OFFSET(GtkUndoViewClass, redo), |
+ NULL, |
+ NULL, |
+ g_cclosure_marshal_VOID__VOID, |
+ G_TYPE_NONE, |
+ 0); |
+ |
+ klass->undo = gtk_undo_view_undo; |
+ klass->redo = gtk_undo_view_redo; |
+ |
+ binding_set = gtk_binding_set_by_class(klass); |
+ gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK, "undo", 0); |
+ gtk_binding_entry_add_signal(binding_set, GDK_y, GDK_CONTROL_MASK, "redo", 0); |
+ gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK | GDK_SHIFT_MASK, "redo", 0); |
+ gtk_binding_entry_add_signal(binding_set, GDK_F14, 0, "undo", 0); |
+ |
+ object_class->dispose = gtk_undo_view_dispose; |
+} |
+ |
+static void |
+gtk_undo_view_init(GtkUndoView *self) { |
+} |
+ |
+GtkWidget* |
+gtk_undo_view_new(GtkTextBuffer *buffer) { |
+ GtkWidget *ret = g_object_new(GTK_TYPE_UNDO_VIEW, "buffer", buffer, NULL); |
+ GTK_UNDO_VIEW(ret)->undo_manager_ = gtk_source_undo_manager_new(GTK_TEXT_BUFFER(buffer)); |
+ |
+ return ret; |
+} |
+ |