[gtksourceview] Added undo and redo signals to GtkSourceBuffer
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gtksourceview] Added undo and redo signals to GtkSourceBuffer
- Date: Sat, 2 Jan 2010 11:02:43 +0000 (UTC)
commit 7f7cda76b429bfcecdd2688d23d6441ec9c66d24
Author: Jesse van den Kieboom <jesse vandenkieboom epfl ch>
Date: Sat Jan 2 12:00:24 2010 +0100
Added undo and redo signals to GtkSourceBuffer
The actual undo and redo actions are run in the default signal handlers
gtksourceview/gtksourcebuffer.c | 50 +++++++++++++++++++++++++++++++++++---
gtksourceview/gtksourcebuffer.h | 6 +++-
2 files changed, 50 insertions(+), 6 deletions(-)
---
diff --git a/gtksourceview/gtksourcebuffer.c b/gtksourceview/gtksourcebuffer.c
index ecb69a9..9a197d2 100644
--- a/gtksourceview/gtksourcebuffer.c
+++ b/gtksourceview/gtksourcebuffer.c
@@ -86,6 +86,8 @@
enum {
HIGHLIGHT_UPDATED,
SOURCE_MARK_UPDATED,
+ UNDO,
+ REDO,
LAST_SIGNAL
};
@@ -166,6 +168,9 @@ static void gtk_source_buffer_real_mark_deleted (GtkTextBuffer *buffer,
static gboolean gtk_source_buffer_find_bracket_match_with_limit (GtkTextIter *orig,
gint max_chars);
+static void gtk_source_buffer_real_undo (GtkSourceBuffer *buffer);
+static void gtk_source_buffer_real_redo (GtkSourceBuffer *buffer);
+
static void
gtk_source_buffer_class_init (GtkSourceBufferClass *klass)
{
@@ -190,6 +195,9 @@ gtk_source_buffer_class_init (GtkSourceBufferClass *klass)
tb_class->mark_set = gtk_source_buffer_real_mark_set;
tb_class->mark_deleted = gtk_source_buffer_real_mark_deleted;
+ klass->undo = gtk_source_buffer_real_undo;
+ klass->redo = gtk_source_buffer_real_redo;
+
/**
* GtkSourceBuffer:highlight-syntax:
*
@@ -304,6 +312,26 @@ gtk_source_buffer_class_init (GtkSourceBufferClass *klass)
G_TYPE_NONE,
1, GTK_TYPE_TEXT_MARK);
+ buffer_signals[UNDO] =
+ g_signal_new ("undo",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkSourceBufferClass, undo),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
+ buffer_signals[REDO] =
+ g_signal_new ("redo",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GtkSourceBufferClass, redo),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
+
g_type_class_add_private (object_class, sizeof(GtkSourceBufferPrivate));
}
@@ -1026,9 +1054,8 @@ void
gtk_source_buffer_undo (GtkSourceBuffer *buffer)
{
g_return_if_fail (GTK_IS_SOURCE_BUFFER (buffer));
- g_return_if_fail (gtk_source_undo_manager_can_undo (buffer->priv->undo_manager));
- gtk_source_undo_manager_undo (buffer->priv->undo_manager);
+ g_signal_emit (buffer, buffer_signals[UNDO], 0);
}
/**
@@ -1042,9 +1069,8 @@ void
gtk_source_buffer_redo (GtkSourceBuffer *buffer)
{
g_return_if_fail (GTK_IS_SOURCE_BUFFER (buffer));
- g_return_if_fail (gtk_source_undo_manager_can_redo (buffer->priv->undo_manager));
- gtk_source_undo_manager_redo (buffer->priv->undo_manager);
+ g_signal_emit (buffer, buffer_signals[REDO], 0);
}
/**
@@ -1558,6 +1584,22 @@ gtk_source_buffer_real_mark_deleted (GtkTextBuffer *buffer,
GTK_TEXT_BUFFER_CLASS (gtk_source_buffer_parent_class)->mark_deleted (buffer, mark);
}
+static void
+gtk_source_buffer_real_undo (GtkSourceBuffer *buffer)
+{
+ g_return_if_fail (gtk_source_undo_manager_can_undo (buffer->priv->undo_manager));
+
+ gtk_source_undo_manager_undo (buffer->priv->undo_manager);
+}
+
+static void
+gtk_source_buffer_real_redo (GtkSourceBuffer *buffer)
+{
+ g_return_if_fail (gtk_source_undo_manager_can_redo (buffer->priv->undo_manager));
+
+ gtk_source_undo_manager_redo (buffer->priv->undo_manager);
+}
+
/**
* gtk_source_buffer_create_source_mark:
* @buffer: a #GtkSourceBuffer.
diff --git a/gtksourceview/gtksourcebuffer.h b/gtksourceview/gtksourcebuffer.h
index 67ec9f2..d2801a6 100644
--- a/gtksourceview/gtksourcebuffer.h
+++ b/gtksourceview/gtksourcebuffer.h
@@ -55,13 +55,15 @@ struct _GtkSourceBufferClass
{
GtkTextBufferClass parent_class;
+ /* Signals */
+ void (*undo) (GtkSourceBuffer *buffer);
+ void (*redo) (GtkSourceBuffer *buffer);
+
/* Padding for future expansion */
void (*_gtk_source_reserved1) (void);
void (*_gtk_source_reserved2) (void);
void (*_gtk_source_reserved3) (void);
void (*_gtk_source_reserved4) (void);
- void (*_gtk_source_reserved5) (void);
- void (*_gtk_source_reserved6) (void);
};
GType gtk_source_buffer_get_type (void) G_GNUC_CONST;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]