[gnome-terminal/wip/restore-geometry: 1/3] Fix chunked resize and --geometry option
- From: Debarshi Ray <debarshir src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-terminal/wip/restore-geometry: 1/3] Fix chunked resize and --geometry option
- Date: Fri, 13 May 2016 06:34:49 +0000 (UTC)
commit fd99c3d7fa23c443a1bbf9adb0b8cd9beca4563d
Author: Sorokin Alexei <sor alexei meowr ru>
Date: Mon Mar 7 21:45:46 2016 +0000
Fix chunked resize and --geometry option
Was caused by https://git.gnome.org/browse/gtk+/commit/?id=08974a1
https://bugzilla.gnome.org/show_bug.cgi?id=760944
src/terminal-options.c | 4 ----
src/terminal-window.c | 27 ++++++++++++++++++++++++---
2 files changed, 24 insertions(+), 7 deletions(-)
---
diff --git a/src/terminal-options.c b/src/terminal-options.c
index cc51cf6..723ecfe 100644
--- a/src/terminal-options.c
+++ b/src/terminal-options.c
@@ -583,10 +583,6 @@ option_geometry_callback (const gchar *option_name,
{
TerminalOptions *options = data;
- /* See https://bugzilla.gnome.org/show_bug.cgi?id=760944 */
- if (gtk_check_version (3, 19, 5) == NULL)
- return unsupported_option_callback (option_name, value, data, error);
-
if (options->initial_windows)
{
InitialWindow *iw;
diff --git a/src/terminal-window.c b/src/terminal-window.c
index 80e54b0..4449052 100644
--- a/src/terminal-window.c
+++ b/src/terminal-window.c
@@ -3596,8 +3596,24 @@ terminal_window_update_geometry (TerminalWindow *window)
padding.top + padding.bottom != priv->old_base_height ||
widget != (GtkWidget*) priv->old_geometry_widget)
{
- hints.base_width = padding.left + padding.right;
- hints.base_height = padding.top + padding.bottom;
+ int base_width = 0;
+ int base_height = 0;
+
+#if GTK_CHECK_VERSION (3, 19, 5)
+ {
+ GtkRequisition toplevel_request;
+ GtkRequisition widget_request;
+
+ gtk_widget_get_preferred_size (GTK_WIDGET (window), NULL, &toplevel_request);
+ gtk_widget_get_preferred_size (widget, NULL, &widget_request);
+
+ base_width = toplevel_request.width - widget_request.width;
+ base_height = toplevel_request.height - widget_request.height;
+ }
+#endif
+
+ hints.base_width = base_width + padding.left + padding.right;
+ hints.base_height = base_height + padding.top + padding.bottom;
#define MIN_WIDTH_CHARS 4
#define MIN_HEIGHT_CHARS 1
@@ -3605,12 +3621,17 @@ terminal_window_update_geometry (TerminalWindow *window)
hints.width_inc = char_width;
hints.height_inc = char_height;
- /* min size is min size of just the geometry widget, remember. */
+ /* min size is min size of the whole window (gtk+ >= 3.19.5) or
+ just the geometry widget (older gtk+), remember. */
hints.min_width = hints.base_width + hints.width_inc * MIN_WIDTH_CHARS;
hints.min_height = hints.base_height + hints.height_inc * MIN_HEIGHT_CHARS;
gtk_window_set_geometry_hints (GTK_WINDOW (window),
+#if GTK_CHECK_VERSION (3, 19, 5)
+ NULL,
+#else
widget,
+#endif
&hints,
GDK_HINT_RESIZE_INC |
GDK_HINT_MIN_SIZE |
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]