diff --git a/src/ssh_terminal.cpp b/src/ssh_terminal.cpp index 6955d43..fdcb1b3 100644 --- a/src/ssh_terminal.cpp +++ b/src/ssh_terminal.cpp @@ -17,7 +17,7 @@ SshTerminal::SshTerminal() gtk_box_pack_start(GTK_BOX(vte_box_), GTK_WIDGET(terminal_), TRUE, TRUE, 0); gtk_widget_show_all(vte_box_); - g_signal_connect(terminal_, "size-changed", G_CALLBACK(on_size_changed), this); + g_signal_connect(terminal_, "size-allocate", G_CALLBACK(on_size_changed), this); } SshTerminal::~SshTerminal() { @@ -28,10 +28,13 @@ SshTerminal::~SshTerminal() { } } -void SshTerminal::on_size_changed(VteTerminal* term, guint cols, guint rows, gpointer data) { - (void)term; +void SshTerminal::on_size_changed(GtkWidget* widget, GtkAllocation* alloc, gpointer data) { + (void)alloc; auto* self = static_cast(data); if (self->channel_ && self->connected_) { + VteTerminal* term = VTE_TERMINAL(widget); + guint cols = vte_terminal_get_column_count(term); + guint rows = vte_terminal_get_row_count(term); ssh_channel_change_pty_size(self->channel_, cols, rows); } } diff --git a/src/ssh_terminal.h b/src/ssh_terminal.h index 199a3a0..da26213 100644 --- a/src/ssh_terminal.h +++ b/src/ssh_terminal.h @@ -25,7 +25,7 @@ public: private: void cleanup(); static gpointer io_thread_func(gpointer data); - static void on_size_changed(VteTerminal* term, guint cols, guint rows, gpointer data); + static void on_size_changed(GtkWidget* widget, GtkAllocation* alloc, gpointer data); GtkWidget* vte_box_; VteTerminal* terminal_;