shell: Use enum for small screen

Instead of 2 variables to track the unset status.
This commit is contained in:
Bastien Nocera 2012-05-21 16:01:28 +01:00
parent a112361267
commit 8efba88f4c

View file

@ -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 ();