[vte/vte-next: 149/223] Move eof signal to VteBuffer
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte/vte-next: 149/223] Move eof signal to VteBuffer
- Date: Wed, 22 Jun 2011 21:01:07 +0000 (UTC)
commit 1b12314b2f4182b1aa3b85cfb7941da282c62130
Author: Christian Persch <chpe gnome org>
Date: Sat Jun 11 16:37:26 2011 +0200
Move eof signal to VteBuffer
src/reflect.c | 5 ++++-
src/vte.c | 51 +++++++++++++++++++++++++++------------------------
src/vte.h | 2 --
src/vteapp.c | 2 +-
src/vtebuffer.h | 1 +
5 files changed, 33 insertions(+), 28 deletions(-)
---
diff --git a/src/reflect.c b/src/reflect.c
index 33cf53a..a593642 100644
--- a/src/reflect.c
+++ b/src/reflect.c
@@ -58,8 +58,11 @@ terminal_adjustment_text_view(GtkWidget *terminal)
static void
terminal_init_vte(GtkWidget **terminal)
{
+ VteBuffer *buffer;
+
*terminal = vte_terminal_new();
- g_signal_connect(G_OBJECT(*terminal), "eof",
+ buffer = vte_terminal_get_buffer(VTE_TERMINAL(*terminal));
+ g_signal_connect(buffer, "eof",
G_CALLBACK(gtk_main_quit), NULL);
g_signal_connect(G_OBJECT(*terminal), "child-exited",
G_CALLBACK(gtk_main_quit), NULL);
diff --git a/src/vte.c b/src/vte.c
index 72004d3..e8427ef 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -169,6 +169,7 @@ enum {
BUFFER_WINDOW_TITLE_CHANGED,
BUFFER_ICON_TITLE_CHANGED,
BUFFER_STATUS_LINE_CHANGED,
+ BUFFER_EOF,
LAST_BUFFER_SIGNAL,
};
@@ -915,26 +916,27 @@ vte_terminal_queue_cursor_moved(VteTerminal *terminal)
terminal->pvt->cursor_moved_pending = TRUE;
}
+/* FIXMEchpe: why is this doing GDK threads? */
static gboolean
-vte_terminal_emit_eof(VteTerminal *terminal)
+vte_buffer_emit_eof(VteBuffer *buffer)
{
_vte_debug_print(VTE_DEBUG_SIGNALS,
"Emitting `eof'.\n");
GDK_THREADS_ENTER ();
- g_signal_emit_by_name(terminal, "eof");
+ g_signal_emit(buffer, buffer_signals[BUFFER_EOF], 0);
GDK_THREADS_LEAVE ();
return FALSE;
}
/* Emit a "eof" signal. */
static void
-vte_terminal_queue_eof(VteTerminal *terminal)
+vte_buffer_queue_eof(VteBuffer *buffer)
{
_vte_debug_print(VTE_DEBUG_SIGNALS,
"Queueing `eof'.\n");
g_idle_add_full (G_PRIORITY_HIGH,
- (GSourceFunc) vte_terminal_emit_eof,
- g_object_ref (terminal),
+ (GSourceFunc) vte_buffer_emit_eof,
+ g_object_ref (buffer),
g_object_unref);
}
@@ -2999,7 +3001,7 @@ vte_terminal_eof(GIOChannel *channel, VteTerminal *terminal)
vte_terminal_set_pty(terminal, NULL);
/* Emit a signal that we read an EOF. */
- vte_terminal_queue_eof(terminal);
+ vte_buffer_queue_eof(terminal->term_pvt->buffer);
g_object_thaw_notify(object);
}
@@ -10835,7 +10837,6 @@ vte_terminal_class_init(VteTerminalClass *klass)
widget_class->screen_changed = vte_terminal_screen_changed;
/* Initialize default handlers. */
- klass->eof = NULL;
klass->child_exited = NULL;
klass->char_size_changed = NULL;
klass->selection_changed = NULL;
@@ -10874,23 +10875,6 @@ vte_terminal_class_init(VteTerminalClass *klass)
/* Register some signals of our own. */
/**
- * VteTerminal::eof:
- * @vteterminal: the object which received the signal
- *
- * Emitted when the terminal receives an end-of-file from a child which
- * is running in the terminal. This signal is frequently (but not
- * always) emitted with a #VteTerminal::child-exited signal.
- */
- g_signal_new(I_("eof"),
- G_OBJECT_CLASS_TYPE(klass),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET(VteTerminalClass, eof),
- NULL,
- NULL,
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
- /**
* VteTerminal::child-exited:
* @vteterminal: the object which received the signal
* @status: the child's exit status
@@ -13630,6 +13614,7 @@ vte_buffer_class_init(VteBufferClass *klass)
klass->commit = NULL;
klass->emulation_changed = NULL;
klass->encoding_changed = NULL;
+ klass->eof = NULL;
klass->window_title_changed = NULL;
klass->icon_title_changed = NULL;
klass->status_line_changed = NULL;
@@ -13691,6 +13676,24 @@ vte_buffer_class_init(VteBufferClass *klass)
G_TYPE_NONE, 0);
/**
+ * VteBuffer::eof:
+ * @vtebuffer: the object which received the signal
+ *
+ * Emitted when the buffer receives an end-of-file from a child which
+ * is running in the buffer. This signal is frequently (but not
+ * always) emitted with a #VteBuffer::child-exited signal.
+ */
+ buffer_signals[BUFFER_EOF] =
+ g_signal_new(I_("eof"),
+ G_OBJECT_CLASS_TYPE(klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(VteBufferClass, eof),
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
* VteBuffer::window-title-changed:
* @vtebuffer: the object which received the signal
*
diff --git a/src/vte.h b/src/vte.h
index be9bde1..db1d95f 100644
--- a/src/vte.h
+++ b/src/vte.h
@@ -74,8 +74,6 @@ struct _VteTerminalClass {
GtkWidgetClass parent_class;
/*< protected > */
- /* Default signal handlers. */
- void (*eof)(VteTerminal* terminal);
void (*child_exited)(VteTerminal* terminal, int status);
void (*char_size_changed)(VteTerminal* terminal, guint char_width, guint char_height);
void (*selection_changed)(VteTerminal* terminal);
diff --git a/src/vteapp.c b/src/vteapp.c
index fdc74df..68bdaf4 100644
--- a/src/vteapp.c
+++ b/src/vteapp.c
@@ -1048,7 +1048,7 @@ main(int argc, char **argv)
G_IO_IN,
read_and_feed,
widget);
- g_signal_connect_swapped(widget,
+ g_signal_connect_swapped(buffer,
"eof",
G_CALLBACK(disconnect_watch),
GINT_TO_POINTER(watch));
diff --git a/src/vtebuffer.h b/src/vtebuffer.h
index c28e464..a496374 100644
--- a/src/vtebuffer.h
+++ b/src/vtebuffer.h
@@ -52,6 +52,7 @@ struct _VteBufferClass {
void (*icon_title_changed) (VteBuffer* buffer);
void (*window_title_changed) (VteBuffer* buffer);
void (*status_line_changed) (VteBuffer* buffer);
+ void (*eof) (VteBuffer* buffer);
/*< private >*/
VteBufferClassPrivate *priv;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]