shell: Use enum for small screen
Instead of 2 variables to track the unset status.
This commit is contained in:
parent
a112361267
commit
8efba88f4c
1 changed files with 23 additions and 14 deletions
|
@ -55,6 +55,12 @@ G_DEFINE_TYPE (GnomeControlCenter, gnome_control_center, CC_TYPE_SHELL)
|
||||||
|
|
||||||
#define MIN_ICON_VIEW_HEIGHT 300
|
#define MIN_ICON_VIEW_HEIGHT 300
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
SMALL_SCREEN_UNSET,
|
||||||
|
SMALL_SCREEN_TRUE,
|
||||||
|
SMALL_SCREEN_FALSE
|
||||||
|
} CcSmallScreen;
|
||||||
|
|
||||||
struct _GnomeControlCenterPrivate
|
struct _GnomeControlCenterPrivate
|
||||||
{
|
{
|
||||||
GtkBuilder *builder;
|
GtkBuilder *builder;
|
||||||
|
@ -85,8 +91,7 @@ struct _GnomeControlCenterPrivate
|
||||||
gchar *default_window_icon;
|
gchar *default_window_icon;
|
||||||
|
|
||||||
int monitor_num;
|
int monitor_num;
|
||||||
gboolean small_screen;
|
CcSmallScreen small_screen;
|
||||||
gboolean small_screen_set;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static const gchar *
|
static const gchar *
|
||||||
|
@ -853,7 +858,7 @@ notebook_page_notify_cb (CcNotebook *notebook,
|
||||||
gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->main_vbox),
|
gtk_widget_get_preferred_height_for_width (GTK_WIDGET (priv->main_vbox),
|
||||||
FIXED_WIDTH, NULL, &nat_height);
|
FIXED_WIDTH, NULL, &nat_height);
|
||||||
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window),
|
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (priv->scrolled_window),
|
||||||
priv->small_screen ? SMALL_SCREEN_FIXED_HEIGHT : nat_height);
|
priv->small_screen == SMALL_SCREEN_TRUE ? SMALL_SCREEN_FIXED_HEIGHT : nat_height);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1182,34 +1187,39 @@ update_monitor_number (GnomeControlCenter *self)
|
||||||
return changed;
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static CcSmallScreen
|
||||||
|
is_small (GnomeControlCenter *self)
|
||||||
|
{
|
||||||
|
if (get_monitor_height (self) <= FIXED_HEIGHT)
|
||||||
|
return SMALL_SCREEN_TRUE;
|
||||||
|
return SMALL_SCREEN_FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
update_small_screen_settings (GnomeControlCenter *self)
|
update_small_screen_settings (GnomeControlCenter *self)
|
||||||
{
|
{
|
||||||
gboolean small;
|
CcSmallScreen small;
|
||||||
|
|
||||||
update_monitor_number (self);
|
update_monitor_number (self);
|
||||||
small = get_monitor_height (self) <= FIXED_HEIGHT;
|
small = is_small (self);
|
||||||
|
|
||||||
if (small)
|
if (small == SMALL_SCREEN_TRUE)
|
||||||
{
|
{
|
||||||
gtk_window_set_resizable (GTK_WINDOW (self->priv->window), TRUE);
|
gtk_window_set_resizable (GTK_WINDOW (self->priv->window), TRUE);
|
||||||
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (self->priv->scrolled_window), SMALL_SCREEN_FIXED_HEIGHT);
|
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (self->priv->scrolled_window), SMALL_SCREEN_FIXED_HEIGHT);
|
||||||
|
|
||||||
if (!self->priv->small_screen_set
|
if (self->priv->small_screen != small)
|
||||||
&& self->priv->small_screen != small)
|
|
||||||
gtk_window_maximize (GTK_WINDOW (self->priv->window));
|
gtk_window_maximize (GTK_WINDOW (self->priv->window));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!self->priv->small_screen_set
|
if (self->priv->small_screen != small)
|
||||||
&& self->priv->small_screen != small)
|
|
||||||
gtk_window_unmaximize (GTK_WINDOW (self->priv->window));
|
gtk_window_unmaximize (GTK_WINDOW (self->priv->window));
|
||||||
|
|
||||||
gtk_window_set_resizable (GTK_WINDOW (self->priv->window), FALSE);
|
gtk_window_set_resizable (GTK_WINDOW (self->priv->window), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
self->priv->small_screen = small;
|
self->priv->small_screen = small;
|
||||||
self->priv->small_screen_set = TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
|
@ -1242,7 +1252,7 @@ monitors_changed_cb (GdkScreen *screen,
|
||||||
{
|
{
|
||||||
/* We reset small_screen_set to make sure that the
|
/* We reset small_screen_set to make sure that the
|
||||||
* window gets maximised if need be, in update_small_screen_settings() */
|
* window gets maximised if need be, in update_small_screen_settings() */
|
||||||
self->priv->small_screen_set = FALSE;
|
self->priv->small_screen = SMALL_SCREEN_UNSET;
|
||||||
update_small_screen_settings (self);
|
update_small_screen_settings (self);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1262,8 +1272,7 @@ gnome_control_center_init (GnomeControlCenter *self)
|
||||||
}
|
}
|
||||||
|
|
||||||
priv->monitor_num = -1;
|
priv->monitor_num = -1;
|
||||||
self->priv->small_screen = FALSE;
|
self->priv->small_screen = SMALL_SCREEN_UNSET;
|
||||||
self->priv->small_screen_set = FALSE;
|
|
||||||
|
|
||||||
/* load the user interface */
|
/* load the user interface */
|
||||||
priv->builder = gtk_builder_new ();
|
priv->builder = gtk_builder_new ();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue