summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/vte.cc16
-rw-r--r--src/vtegtk.cc2
-rw-r--r--src/vteinternal.hh3
3 files changed, 13 insertions, 8 deletions
diff --git a/src/vte.cc b/src/vte.cc
index c5f35656..601b89ad 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -7543,7 +7543,8 @@ Terminal::screen_set_size(VteScreen *screen_,
void
Terminal::set_size(long columns,
- long rows)
+ long rows,
+ bool allocating)
{
glong old_columns, old_rows;
@@ -7592,11 +7593,14 @@ Terminal::set_size(long columns,
_vte_ring_next (m_screen->row_data) - 1));
adjust_adjustments_full();
+ if (!allocating) {
#if VTE_GTK == 3
- gtk_widget_queue_resize_no_redraw(m_widget);
+ gtk_widget_queue_resize_no_redraw(m_widget);
#elif VTE_GTK == 4
- gtk_widget_queue_resize(m_widget); // FIXMEgtk4?
+ gtk_widget_queue_resize(m_widget); // FIXMEgtk4?
#endif
+ }
+
/* Our visible text changed. */
emit_text_modified();
}
@@ -7692,7 +7696,7 @@ Terminal::Terminal(vte::platform::Widget* w,
/* Setting the terminal type and size requires the PTY master to
* be set up properly first. */
- set_size(VTE_COLUMNS, VTE_ROWS);
+ set_size(VTE_COLUMNS, VTE_ROWS, false);
/* Default is 0, forces update in vte_terminal_set_scrollback_lines */
set_scrollback_lines(VTE_SCROLLBACK_INIT);
@@ -7874,7 +7878,7 @@ Terminal::widget_size_allocate(
grid_height != m_row_count ||
update_scrollback) {
/* Set the size of the pseudo-terminal. */
- set_size(grid_width, grid_height);
+ set_size(grid_width, grid_height, true);
/* Notify viewers that the contents have changed. */
queue_contents_changed();
@@ -10140,7 +10144,7 @@ Terminal::set_pty(vte::base::Pty *new_pty)
if (!new_pty)
return true;
- set_size(m_column_count, m_row_count);
+ set_size(m_column_count, m_row_count, false);
if (!pty()->set_utf8(primary_data_syntax() == DataSyntax::ECMA48_UTF8)) {
// nothing we can do here
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 235faac9..6e325654 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -4479,7 +4479,7 @@ try
g_return_if_fail(columns >= 1);
g_return_if_fail(rows >= 1);
- IMPL(terminal)->set_size(columns, rows);
+ IMPL(terminal)->set_size(columns, rows, false);
}
catch (...)
{
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index fbe696b1..88464760 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -1351,7 +1351,8 @@ public:
bool search_set_wrap_around(bool wrap);
void set_size(long columns,
- long rows);
+ long rows,
+ bool allocating);
std::optional<std::vector<char32_t>> process_word_char_exceptions(std::string_view str) const noexcept;