st: Add StPolicyType enum
In order to replace GTK+'s GtkPolicyType. It's bit-compatible with it, too. All callers have been updated to use it. This is a purely accessory change in terms of X11 Display usage cleanup, but helps see better what is left. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/317
This commit is contained in:
@ -58,6 +58,7 @@
|
||||
* detailed description of the considerations involved.
|
||||
*/
|
||||
|
||||
#include "st-enum-types.h"
|
||||
#include "st-scroll-view.h"
|
||||
#include "st-scroll-bar.h"
|
||||
#include "st-scrollable.h"
|
||||
@ -82,8 +83,8 @@ struct _StScrollViewPrivate
|
||||
StAdjustment *vadjustment;
|
||||
ClutterActor *vscroll;
|
||||
|
||||
GtkPolicyType hscrollbar_policy;
|
||||
GtkPolicyType vscrollbar_policy;
|
||||
StPolicyType hscrollbar_policy;
|
||||
StPolicyType vscrollbar_policy;
|
||||
|
||||
gfloat row_size;
|
||||
gfloat column_size;
|
||||
@ -372,12 +373,12 @@ st_scroll_view_get_preferred_width (ClutterActor *actor,
|
||||
|
||||
switch (priv->hscrollbar_policy)
|
||||
{
|
||||
case GTK_POLICY_NEVER:
|
||||
case ST_POLICY_NEVER:
|
||||
min_width = child_min_width;
|
||||
break;
|
||||
case GTK_POLICY_ALWAYS:
|
||||
case GTK_POLICY_AUTOMATIC:
|
||||
case GTK_POLICY_EXTERNAL:
|
||||
case ST_POLICY_ALWAYS:
|
||||
case ST_POLICY_AUTOMATIC:
|
||||
case ST_POLICY_EXTERNAL:
|
||||
/* Should theoretically use the min width of the hscrollbar,
|
||||
* but that's not cleanly defined at the moment */
|
||||
min_width = 0;
|
||||
@ -389,14 +390,14 @@ st_scroll_view_get_preferred_width (ClutterActor *actor,
|
||||
|
||||
switch (priv->vscrollbar_policy)
|
||||
{
|
||||
case GTK_POLICY_NEVER:
|
||||
case GTK_POLICY_EXTERNAL:
|
||||
case ST_POLICY_NEVER:
|
||||
case ST_POLICY_EXTERNAL:
|
||||
account_for_vscrollbar = FALSE;
|
||||
break;
|
||||
case GTK_POLICY_ALWAYS:
|
||||
case ST_POLICY_ALWAYS:
|
||||
account_for_vscrollbar = !priv->overlay_scrollbars;
|
||||
break;
|
||||
case GTK_POLICY_AUTOMATIC:
|
||||
case ST_POLICY_AUTOMATIC:
|
||||
/* For automatic scrollbars, we always request space for the vertical
|
||||
* scrollbar; we won't know whether we actually need one until our
|
||||
* height is assigned in allocate().
|
||||
@ -454,11 +455,11 @@ st_scroll_view_get_preferred_height (ClutterActor *actor,
|
||||
|
||||
switch (priv->vscrollbar_policy)
|
||||
{
|
||||
case GTK_POLICY_NEVER:
|
||||
case GTK_POLICY_EXTERNAL:
|
||||
case ST_POLICY_NEVER:
|
||||
case ST_POLICY_EXTERNAL:
|
||||
break;
|
||||
case GTK_POLICY_ALWAYS:
|
||||
case GTK_POLICY_AUTOMATIC:
|
||||
case ST_POLICY_ALWAYS:
|
||||
case ST_POLICY_AUTOMATIC:
|
||||
/* We've requested space for the scrollbar, subtract it back out */
|
||||
for_width -= sb_width;
|
||||
break;
|
||||
@ -469,14 +470,14 @@ st_scroll_view_get_preferred_height (ClutterActor *actor,
|
||||
|
||||
switch (priv->hscrollbar_policy)
|
||||
{
|
||||
case GTK_POLICY_NEVER:
|
||||
case GTK_POLICY_EXTERNAL:
|
||||
case ST_POLICY_NEVER:
|
||||
case ST_POLICY_EXTERNAL:
|
||||
account_for_hscrollbar = FALSE;
|
||||
break;
|
||||
case GTK_POLICY_ALWAYS:
|
||||
case ST_POLICY_ALWAYS:
|
||||
account_for_hscrollbar = !priv->overlay_scrollbars;
|
||||
break;
|
||||
case GTK_POLICY_AUTOMATIC:
|
||||
case ST_POLICY_AUTOMATIC:
|
||||
/* For automatic scrollbars, we always request space for the horizontal
|
||||
* scrollbar; we won't know whether we actually need one until our
|
||||
* width is assigned in allocate().
|
||||
@ -495,12 +496,12 @@ st_scroll_view_get_preferred_height (ClutterActor *actor,
|
||||
|
||||
switch (priv->vscrollbar_policy)
|
||||
{
|
||||
case GTK_POLICY_NEVER:
|
||||
case ST_POLICY_NEVER:
|
||||
min_height = child_min_height;
|
||||
break;
|
||||
case GTK_POLICY_ALWAYS:
|
||||
case GTK_POLICY_AUTOMATIC:
|
||||
case GTK_POLICY_EXTERNAL:
|
||||
case ST_POLICY_ALWAYS:
|
||||
case ST_POLICY_AUTOMATIC:
|
||||
case ST_POLICY_EXTERNAL:
|
||||
/* Should theoretically use the min height of the vscrollbar,
|
||||
* but that's not cleanly defined at the moment */
|
||||
min_height = 0;
|
||||
@ -571,9 +572,9 @@ st_scroll_view_allocate (ClutterActor *actor,
|
||||
clutter_actor_get_preferred_width (priv->child, -1,
|
||||
&child_min_width, NULL);
|
||||
|
||||
if (priv->vscrollbar_policy == GTK_POLICY_AUTOMATIC)
|
||||
if (priv->vscrollbar_policy == ST_POLICY_AUTOMATIC)
|
||||
{
|
||||
if (priv->hscrollbar_policy == GTK_POLICY_AUTOMATIC)
|
||||
if (priv->hscrollbar_policy == ST_POLICY_AUTOMATIC)
|
||||
{
|
||||
/* Pass one, try without a vertical scrollbar */
|
||||
clutter_actor_get_preferred_height (priv->child, avail_width, &child_min_height, NULL);
|
||||
@ -591,7 +592,7 @@ st_scroll_view_allocate (ClutterActor *actor,
|
||||
}
|
||||
else
|
||||
{
|
||||
hscrollbar_visible = priv->hscrollbar_policy == GTK_POLICY_ALWAYS;
|
||||
hscrollbar_visible = priv->hscrollbar_policy == ST_POLICY_ALWAYS;
|
||||
|
||||
/* try without a vertical scrollbar */
|
||||
clutter_actor_get_preferred_height (priv->child, avail_width, &child_min_height, NULL);
|
||||
@ -600,20 +601,20 @@ st_scroll_view_allocate (ClutterActor *actor,
|
||||
}
|
||||
else
|
||||
{
|
||||
vscrollbar_visible = priv->vscrollbar_policy == GTK_POLICY_ALWAYS;
|
||||
vscrollbar_visible = priv->vscrollbar_policy == ST_POLICY_ALWAYS;
|
||||
|
||||
if (priv->hscrollbar_policy == GTK_POLICY_AUTOMATIC)
|
||||
if (priv->hscrollbar_policy == ST_POLICY_AUTOMATIC)
|
||||
hscrollbar_visible = child_min_width > avail_height - (vscrollbar_visible ? 0 : sb_width);
|
||||
else
|
||||
hscrollbar_visible = priv->hscrollbar_policy == GTK_POLICY_ALWAYS;
|
||||
hscrollbar_visible = priv->hscrollbar_policy == ST_POLICY_ALWAYS;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hscrollbar_visible = priv->hscrollbar_policy != GTK_POLICY_NEVER &&
|
||||
priv->hscrollbar_policy != GTK_POLICY_EXTERNAL;
|
||||
vscrollbar_visible = priv->vscrollbar_policy != GTK_POLICY_NEVER &&
|
||||
priv->vscrollbar_policy != GTK_POLICY_EXTERNAL;
|
||||
hscrollbar_visible = priv->hscrollbar_policy != ST_POLICY_NEVER &&
|
||||
priv->hscrollbar_policy != ST_POLICY_EXTERNAL;
|
||||
vscrollbar_visible = priv->vscrollbar_policy != ST_POLICY_NEVER &&
|
||||
priv->vscrollbar_policy != ST_POLICY_EXTERNAL;
|
||||
}
|
||||
|
||||
/* Whether or not we show the scrollbars, if the scrollbars are visible
|
||||
@ -661,12 +662,12 @@ st_scroll_view_allocate (ClutterActor *actor,
|
||||
* Fold this into the scrollbar sizes to simplify the rest of the
|
||||
* computations.
|
||||
*/
|
||||
if (priv->hscrollbar_policy == GTK_POLICY_NEVER ||
|
||||
priv->hscrollbar_policy == GTK_POLICY_EXTERNAL ||
|
||||
if (priv->hscrollbar_policy == ST_POLICY_NEVER ||
|
||||
priv->hscrollbar_policy == ST_POLICY_EXTERNAL ||
|
||||
priv->overlay_scrollbars)
|
||||
sb_height = 0;
|
||||
if (priv->vscrollbar_policy == GTK_POLICY_NEVER ||
|
||||
priv->vscrollbar_policy == GTK_POLICY_EXTERNAL ||
|
||||
if (priv->vscrollbar_policy == ST_POLICY_NEVER ||
|
||||
priv->vscrollbar_policy == ST_POLICY_EXTERNAL ||
|
||||
priv->overlay_scrollbars)
|
||||
sb_width = 0;
|
||||
|
||||
@ -828,16 +829,16 @@ st_scroll_view_class_init (StScrollViewClass *klass)
|
||||
pspec = g_param_spec_enum ("vscrollbar-policy",
|
||||
"Vertical Scrollbar Policy",
|
||||
"When the vertical scrollbar is displayed",
|
||||
GTK_TYPE_POLICY_TYPE,
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
ST_TYPE_POLICY_TYPE,
|
||||
ST_POLICY_AUTOMATIC,
|
||||
G_PARAM_READWRITE);
|
||||
g_object_class_install_property (object_class, PROP_VSCROLLBAR_POLICY, pspec);
|
||||
|
||||
pspec = g_param_spec_enum ("hscrollbar-policy",
|
||||
"Horizontal Scrollbar Policy",
|
||||
"When the horizontal scrollbar is displayed",
|
||||
GTK_TYPE_POLICY_TYPE,
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
ST_TYPE_POLICY_TYPE,
|
||||
ST_POLICY_AUTOMATIC,
|
||||
G_PARAM_READWRITE);
|
||||
g_object_class_install_property (object_class, PROP_HSCROLLBAR_POLICY, pspec);
|
||||
|
||||
@ -879,8 +880,8 @@ st_scroll_view_init (StScrollView *self)
|
||||
{
|
||||
StScrollViewPrivate *priv = self->priv = st_scroll_view_get_instance_private (self);
|
||||
|
||||
priv->hscrollbar_policy = GTK_POLICY_AUTOMATIC;
|
||||
priv->vscrollbar_policy = GTK_POLICY_AUTOMATIC;
|
||||
priv->hscrollbar_policy = ST_POLICY_AUTOMATIC;
|
||||
priv->vscrollbar_policy = ST_POLICY_AUTOMATIC;
|
||||
|
||||
priv->hadjustment = g_object_new (ST_TYPE_ADJUSTMENT, NULL);
|
||||
priv->hscroll = g_object_new (ST_TYPE_SCROLL_BAR,
|
||||
@ -1187,8 +1188,8 @@ st_scroll_view_get_overlay_scrollbars (StScrollView *scroll)
|
||||
*/
|
||||
void
|
||||
st_scroll_view_set_policy (StScrollView *scroll,
|
||||
GtkPolicyType hscroll,
|
||||
GtkPolicyType vscroll)
|
||||
StPolicyType hscroll,
|
||||
StPolicyType vscroll)
|
||||
{
|
||||
StScrollViewPrivate *priv;
|
||||
|
||||
|
@ -34,6 +34,14 @@ G_BEGIN_DECLS
|
||||
#define ST_TYPE_SCROLL_VIEW (st_scroll_view_get_type())
|
||||
G_DECLARE_FINAL_TYPE (StScrollView, st_scroll_view, ST, SCROLL_VIEW, StBin)
|
||||
|
||||
typedef enum
|
||||
{
|
||||
ST_POLICY_ALWAYS,
|
||||
ST_POLICY_AUTOMATIC,
|
||||
ST_POLICY_NEVER,
|
||||
ST_POLICY_EXTERNAL,
|
||||
} StPolicyType;
|
||||
|
||||
typedef struct _StScrollViewPrivate StScrollViewPrivate;
|
||||
|
||||
/**
|
||||
@ -72,8 +80,8 @@ void st_scroll_view_set_overlay_scrollbars (StScrollView *scroll,
|
||||
gboolean st_scroll_view_get_overlay_scrollbars (StScrollView *scroll);
|
||||
|
||||
void st_scroll_view_set_policy (StScrollView *scroll,
|
||||
GtkPolicyType hscroll,
|
||||
GtkPolicyType vscroll);
|
||||
StPolicyType hscroll,
|
||||
StPolicyType vscroll);
|
||||
void st_scroll_view_update_fade_effect (StScrollView *scroll,
|
||||
float vfade_offset,
|
||||
float hfade_offset);
|
||||
|
Reference in New Issue
Block a user