[gtk/resizing-fixes: 38/49] window: Move default size into the Private struct
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/resizing-fixes: 38/49] window: Move default size into the Private struct
- Date: Sat, 8 Aug 2020 21:27:17 +0000 (UTC)
commit 21e730003a196c03ac79dbb5269f7a341efca442
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Aug 7 19:51:04 2020 -0400
window: Move default size into the Private struct
This is a step towards getting rid of GdkGeometry
use here.
gtk/gtkwindow.c | 171 ++++++++++++++++++++++++++------------------------------
1 file changed, 79 insertions(+), 92 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 9687e3d9e4..aa62f2b33d 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -229,6 +229,13 @@ typedef struct
char *icon_name;
+ /* Default size - used only the FIRST time we map a window,
+ * only if > 0.
+ */
+
+ int default_width;
+ int default_height;
+
GtkGesture *click_gesture;
GtkEventController *key_controller;
GtkEventController *application_shortcut_controller;
@@ -319,12 +326,6 @@ struct _GtkWindowGeometryInfo
int resize_width;
int resize_height;
- /* Default size - used only the FIRST time we map a window,
- * only if > 0.
- */
- int default_width;
- int default_height;
-
GtkWindowLastGeometryInfo last;
};
@@ -1474,6 +1475,11 @@ gtk_window_init (GtkWindow *window)
priv->focus_visible = TRUE;
priv->initial_fullscreen_monitor = NULL;
+ priv->icon_name = NULL;
+
+ priv->default_width = -1;
+ priv->default_height = -1;
+
g_object_ref_sink (window);
#ifdef GDK_WINDOWING_X11
@@ -1635,7 +1641,6 @@ gtk_window_get_property (GObject *object,
switch (prop_id)
{
- GtkWindowGeometryInfo *info;
case PROP_TITLE:
g_value_set_string (value, priv->title);
break;
@@ -1646,18 +1651,10 @@ gtk_window_get_property (GObject *object,
g_value_set_boolean (value, priv->modal);
break;
case PROP_DEFAULT_WIDTH:
- info = gtk_window_get_geometry_info (window, FALSE);
- if (!info)
- g_value_set_int (value, -1);
- else
- g_value_set_int (value, info->default_width);
+ g_value_set_int (value, priv->default_width);
break;
case PROP_DEFAULT_HEIGHT:
- info = gtk_window_get_geometry_info (window, FALSE);
- if (!info)
- g_value_set_int (value, -1);
- else
- g_value_set_int (value, info->default_height);
+ g_value_set_int (value, priv->default_height);
break;
case PROP_DESTROY_WITH_PARENT:
g_value_set_boolean (value, priv->destroy_with_parent);
@@ -2676,8 +2673,6 @@ gtk_window_get_geometry_info (GtkWindow *window,
{
info = g_new0 (GtkWindowGeometryInfo, 1);
- info->default_width = -1;
- info->default_height = -1;
info->resize_width = -1;
info->resize_height = -1;
info->last.configure_request.width = -1;
@@ -3279,13 +3274,11 @@ gtk_window_set_default_size_internal (GtkWindow *window,
gboolean change_height,
int height)
{
- GtkWindowGeometryInfo *info;
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
g_return_if_fail (change_width == FALSE || width >= -1);
g_return_if_fail (change_height == FALSE || height >= -1);
- info = gtk_window_get_geometry_info (window, TRUE);
-
g_object_freeze_notify (G_OBJECT (window));
if (change_width)
@@ -3296,9 +3289,9 @@ gtk_window_set_default_size_internal (GtkWindow *window,
if (width < 0)
width = -1;
- if (info->default_width != width)
+ if (priv->default_width != width)
{
- info->default_width = width;
+ priv->default_width = width;
g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_DEFAULT_WIDTH]);
}
}
@@ -3311,15 +3304,15 @@ gtk_window_set_default_size_internal (GtkWindow *window,
if (height < 0)
height = -1;
- if (info->default_height != height)
+ if (priv->default_height != height)
{
- info->default_height = height;
+ priv->default_height = height;
g_object_notify_by_pspec (G_OBJECT (window), window_props[PROP_DEFAULT_HEIGHT]);
}
}
-
+
g_object_thaw_notify (G_OBJECT (window));
-
+
gtk_widget_queue_resize (GTK_WIDGET (window));
}
@@ -3359,8 +3352,8 @@ gtk_window_set_default_size_internal (GtkWindow *window,
*/
void
gtk_window_set_default_size (GtkWindow *window,
- int width,
- int height)
+ int width,
+ int height)
{
g_return_if_fail (GTK_IS_WINDOW (window));
g_return_if_fail (width >= -1);
@@ -3379,24 +3372,21 @@ gtk_window_set_default_size (GtkWindow *window,
* height indicates that a default size has not been explicitly set
* for that dimension, so the “natural” size of the window will be
* used.
- *
**/
void
gtk_window_get_default_size (GtkWindow *window,
- int *width,
- int *height)
+ int *width,
+ int *height)
{
- GtkWindowGeometryInfo *info;
+ GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
g_return_if_fail (GTK_IS_WINDOW (window));
- info = gtk_window_get_geometry_info (window, FALSE);
-
if (width)
- *width = info ? info->default_width : -1;
+ *width = priv->default_width;
if (height)
- *height = info ? info->default_height : -1;
+ *height = priv->default_height;
}
/**
@@ -4227,28 +4217,29 @@ toplevel_compute_size (GdkToplevel *toplevel,
{
int remembered_width;
int remembered_height;
+ int default_width_csd;
+ int default_height_csd;
+
gtk_window_get_remembered_size (window,
&remembered_width, &remembered_height);
width = MAX (default_width, remembered_width);
height = MAX (default_height, remembered_height);
/* Override with default size */
- if (info)
- {
- /* Take width of shadows/headerbar into account. We want to set the
- * default size of the content area and not the window area.
- */
- int default_width_csd = info->default_width;
- int default_height_csd = info->default_height;
- gtk_window_update_csd_size (window,
- &default_width_csd, &default_height_csd,
- INCLUDE_CSD_SIZE);
-
- if (info->default_width > 0)
- width = min_width = default_width_csd;
- if (info->default_height > 0)
- height = min_height = default_height_csd;
- }
+
+ /* Take width of shadows/headerbar into account. We want to set the
+ * default size of the content area and not the window area.
+ */
+ default_width_csd = priv->default_width;
+ default_height_csd = priv->default_height;
+ gtk_window_update_csd_size (window,
+ &default_width_csd, &default_height_csd,
+ INCLUDE_CSD_SIZE);
+
+ if (priv->default_width > 0)
+ width = min_width = default_width_csd;
+ if (priv->default_height > 0)
+ height = min_height = default_height_csd;
}
else
{
@@ -5192,28 +5183,28 @@ gtk_window_compute_configure_request_size (GtkWindow *window,
if (priv->need_default_size)
{
+ int default_width_csd;
+ int default_height_csd;
+
gtk_window_guess_default_size (window, width, height);
gtk_window_get_remembered_size (window, &w, &h);
*width = MAX (*width, w);
*height = MAX (*height, h);
/* Override with default size */
- if (info)
- {
- /* Take width of shadows/headerbar into account. We want to set the
- * default size of the content area and not the window area.
- */
- int default_width_csd = info->default_width;
- int default_height_csd = info->default_height;
- gtk_window_update_csd_size (window,
- &default_width_csd, &default_height_csd,
- INCLUDE_CSD_SIZE);
-
- if (info->default_width > 0)
- *width = default_width_csd;
- if (info->default_height > 0)
- *height = default_height_csd;
- }
+ /* Take width of shadows/headerbar into account. We want to set the
+ * default size of the content area and not the window area.
+ */
+ default_width_csd = priv->default_width;
+ default_height_csd = priv->default_height;
+ gtk_window_update_csd_size (window,
+ &default_width_csd, &default_height_csd,
+ INCLUDE_CSD_SIZE);
+
+ if (priv->default_width > 0)
+ *width = default_width_csd;
+ if (priv->default_height > 0)
+ *height = default_height_csd;
}
else
{
@@ -5544,37 +5535,33 @@ gtk_window_update_fixed_size (GtkWindow *window,
int new_height)
{
GtkWindowPrivate *priv = gtk_window_get_instance_private (window);
- GtkWindowGeometryInfo *info;
gboolean has_size_request;
+ int default_width_csd;
+ int default_height_csd;
/* Adjust the geometry hints for non-resizable windows only */
has_size_request = gtk_widget_has_size_request (GTK_WIDGET (window));
if (priv->resizable || has_size_request)
return;
- info = gtk_window_get_geometry_info (window, FALSE);
- if (info)
- {
- int default_width_csd = info->default_width;
- int default_height_csd = info->default_height;
-
- gtk_window_update_csd_size (window,
- &default_width_csd, &default_height_csd,
- INCLUDE_CSD_SIZE);
+ default_width_csd = priv->default_width;
+ default_height_csd = priv->default_height;
+ gtk_window_update_csd_size (window,
+ &default_width_csd, &default_height_csd,
+ INCLUDE_CSD_SIZE);
- if (info->default_width > -1)
- {
- int w = MAX (MAX (default_width_csd, new_width), new_geometry->min_width);
- new_geometry->min_width = w;
- new_geometry->max_width = w;
- }
+ if (priv->default_width > -1)
+ {
+ int w = MAX (MAX (default_width_csd, new_width), new_geometry->min_width);
+ new_geometry->min_width = w;
+ new_geometry->max_width = w;
+ }
- if (info->default_height > -1)
- {
- int h = MAX (MAX (default_height_csd, new_height), new_geometry->min_height);
- new_geometry->min_height = h;
- new_geometry->max_height = h;
- }
+ if (priv->default_height > -1)
+ {
+ int h = MAX (MAX (default_height_csd, new_height), new_geometry->min_height);
+ new_geometry->min_height = h;
+ new_geometry->max_height = h;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]