summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEgmont Koblinger <egmont@gmail.com>2017-09-29 14:26:40 +0200
committerEgmont Koblinger <egmont@gmail.com>2017-09-29 14:27:55 +0200
commit86796c17430b7bde42467884849627e990a91af6 (patch)
tree6ee69676e458f8e53dc6c8bd14a8a7fce597d9f8
parentada28e50cf53532bf810ec686ae0134b0aac8124 (diff)
downloadvte-86796c17430b7bde42467884849627e990a91af6.tar.gz
widget: Fix initial size in presence of non-default padding
https://bugzilla.gnome.org/show_bug.cgi?id=787710 (cherry picked from commit 41f55bc1c2a978491b3fa3d23cb4aeb0c900e2b1)
-rw-r--r--src/vte.cc13
-rw-r--r--src/vtegtk.cc11
-rw-r--r--src/vteinternal.hh1
3 files changed, 22 insertions, 3 deletions
diff --git a/src/vte.cc b/src/vte.cc
index 2fed59f0..dfcb7f2c 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -8161,6 +8161,16 @@ VteTerminalPrivate::VteTerminalPrivate(VteTerminal *t) :
}
void
+VteTerminalPrivate::widget_constructed()
+{
+ /* Set the style as early as possible, before GTK+ starts
+ * invoking various callbacks. This is needed in order to
+ * compute the initial geometry correctly in presence of
+ * non-default padding, see bug 787710. */
+ widget_style_updated();
+}
+
+void
VteTerminalPrivate::widget_get_preferred_width(int *minimum_width,
int *natural_width)
{
@@ -8655,9 +8665,6 @@ VteTerminalPrivate::widget_realize()
/* Clear modifiers. */
m_modifiers = 0;
- /* Make sure the style is set, bug 727614. */
- widget_style_updated();
-
ensure_font();
}
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 68a1dce7..18a4b1ba 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -361,6 +361,16 @@ vte_terminal_screen_changed (GtkWidget *widget,
}
static void
+vte_terminal_constructed (GObject *object)
+{
+ VteTerminal *terminal = VTE_TERMINAL (object);
+
+ G_OBJECT_CLASS (vte_terminal_parent_class)->constructed (object);
+
+ IMPL(terminal)->widget_constructed();
+}
+
+static void
vte_terminal_init(VteTerminal *terminal)
{
void *place;
@@ -630,6 +640,7 @@ vte_terminal_class_init(VteTerminalClass *klass)
widget_class = GTK_WIDGET_CLASS(klass);
/* Override some of the default handlers. */
+ gobject_class->constructed = vte_terminal_constructed;
gobject_class->finalize = vte_terminal_finalize;
gobject_class->get_property = vte_terminal_get_property;
gobject_class->set_property = vte_terminal_set_property;
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 476252fa..0cd686b6 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -659,6 +659,7 @@ public:
GdkCursor *widget_cursor_new(GdkCursorType cursor_type) const;
+ void widget_constructed();
void widget_realize();
void widget_unrealize();
void widget_map();