st: Add StDirectionType enum

In order to replace GTK+'s GtkDirectionType. 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:
Carlos Garnacho
2018-11-27 13:58:25 +01:00
parent a977c1388a
commit c59c5eb893
21 changed files with 80 additions and 84 deletions

View File

@ -146,7 +146,7 @@ shell_stack_get_preferred_width (ClutterActor *actor,
static gboolean
shell_stack_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction)
StDirectionType direction)
{
ClutterActor *top_actor;

View File

@ -200,7 +200,7 @@ st_bin_popup_menu (StWidget *widget)
static gboolean
st_bin_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction)
StDirectionType direction)
{
StBinPrivate *priv = st_bin_get_instance_private (ST_BIN (widget));
ClutterActor *bin_actor = CLUTTER_ACTOR (widget);

View File

@ -330,7 +330,7 @@ st_entry_style_changed (StWidget *self)
static gboolean
st_entry_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction)
StDirectionType direction)
{
StEntryPrivate *priv = ST_ENTRY_PRIV (widget);

View File

@ -75,7 +75,7 @@ st_focus_manager_stage_event (ClutterActor *stage,
gpointer user_data)
{
StFocusManager *manager = user_data;
GtkDirectionType direction;
StDirectionType direction;
gboolean wrap_around = FALSE;
ClutterActor *focused, *group;
@ -85,26 +85,26 @@ st_focus_manager_stage_event (ClutterActor *stage,
switch (event->key.keyval)
{
case CLUTTER_KEY_Up:
direction = GTK_DIR_UP;
direction = ST_DIR_UP;
break;
case CLUTTER_KEY_Down:
direction = GTK_DIR_DOWN;
direction = ST_DIR_DOWN;
break;
case CLUTTER_KEY_Left:
direction = GTK_DIR_LEFT;
direction = ST_DIR_LEFT;
break;
case CLUTTER_KEY_Right:
direction = GTK_DIR_RIGHT;
direction = ST_DIR_RIGHT;
break;
case CLUTTER_KEY_Tab:
if (event->key.modifier_state & CLUTTER_SHIFT_MASK)
direction = GTK_DIR_TAB_BACKWARD;
direction = ST_DIR_TAB_BACKWARD;
else
direction = GTK_DIR_TAB_FORWARD;
direction = ST_DIR_TAB_FORWARD;
wrap_around = TRUE;
break;
case CLUTTER_KEY_ISO_Left_Tab:
direction = GTK_DIR_TAB_BACKWARD;
direction = ST_DIR_TAB_BACKWARD;
wrap_around = TRUE;
break;

View File

@ -136,7 +136,7 @@ static void st_widget_recompute_style (StWidget *widget,
StThemeNode *old_theme_node);
static gboolean st_widget_real_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction);
StDirectionType direction);
static AtkObject * st_widget_get_accessible (ClutterActor *actor);
@ -1848,7 +1848,7 @@ st_widget_popup_menu (StWidget *self)
static GList *
filter_by_position (GList *children,
ClutterActorBox *rbox,
GtkDirectionType direction)
StDirectionType direction)
{
ClutterActorBox cbox;
ClutterVertex abs_vertices[4];
@ -1868,28 +1868,28 @@ filter_by_position (GList *children,
*/
switch (direction)
{
case GTK_DIR_UP:
case ST_DIR_UP:
if (cbox.y2 > rbox->y1 + 0.1)
continue;
break;
case GTK_DIR_DOWN:
case ST_DIR_DOWN:
if (cbox.y1 < rbox->y2 - 0.1)
continue;
break;
case GTK_DIR_LEFT:
case ST_DIR_LEFT:
if (cbox.x2 > rbox->x1 + 0.1)
continue;
break;
case GTK_DIR_RIGHT:
case ST_DIR_RIGHT:
if (cbox.x1 < rbox->x2 - 0.1)
continue;
break;
case GTK_DIR_TAB_BACKWARD:
case GTK_DIR_TAB_FORWARD:
case ST_DIR_TAB_BACKWARD:
case ST_DIR_TAB_FORWARD:
default:
g_return_val_if_reached (NULL);
}
@ -1946,7 +1946,7 @@ sort_by_distance (gconstpointer a,
static gboolean
st_widget_real_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction)
StDirectionType direction)
{
StWidgetPrivate *priv = st_widget_get_instance_private (widget);
ClutterActor *widget_actor, *focus_child;
@ -1998,15 +1998,15 @@ st_widget_real_navigate_focus (StWidget *widget,
}
children = st_widget_get_focus_chain (widget);
if (direction == GTK_DIR_TAB_FORWARD ||
direction == GTK_DIR_TAB_BACKWARD)
if (direction == ST_DIR_TAB_FORWARD ||
direction == ST_DIR_TAB_BACKWARD)
{
/* At this point we know that we want to navigate focus to one of
* @widget's immediate children; the next one after @focus_child, or the
* first one if @focus_child is %NULL. (With "next" and "first" being
* determined by @direction.)
*/
if (direction == GTK_DIR_TAB_BACKWARD)
if (direction == ST_DIR_TAB_BACKWARD)
children = g_list_reverse (children);
if (focus_child)
@ -2044,20 +2044,20 @@ st_widget_real_navigate_focus (StWidget *widget,
clutter_actor_box_from_vertices (&sort_box, abs_vertices);
switch (direction)
{
case GTK_DIR_UP:
case ST_DIR_UP:
sort_box.y1 = sort_box.y2;
break;
case GTK_DIR_DOWN:
case ST_DIR_DOWN:
sort_box.y2 = sort_box.y1;
break;
case GTK_DIR_LEFT:
case ST_DIR_LEFT:
sort_box.x1 = sort_box.x2;
break;
case GTK_DIR_RIGHT:
case ST_DIR_RIGHT:
sort_box.x2 = sort_box.x1;
break;
case GTK_DIR_TAB_FORWARD:
case GTK_DIR_TAB_BACKWARD:
case ST_DIR_TAB_FORWARD:
case ST_DIR_TAB_BACKWARD:
default:
g_warn_if_reached ();
}
@ -2127,7 +2127,7 @@ st_widget_real_navigate_focus (StWidget *widget,
gboolean
st_widget_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction,
StDirectionType direction,
gboolean wrap_around)
{
g_return_val_if_fail (ST_IS_WIDGET (widget), FALSE);

View File

@ -38,6 +38,16 @@ G_BEGIN_DECLS
#define ST_TYPE_WIDGET (st_widget_get_type ())
G_DECLARE_DERIVABLE_TYPE (StWidget, st_widget, ST, WIDGET, ClutterActor)
typedef enum
{
ST_DIR_TAB_FORWARD,
ST_DIR_TAB_BACKWARD,
ST_DIR_UP,
ST_DIR_DOWN,
ST_DIR_LEFT,
ST_DIR_RIGHT,
} StDirectionType;
typedef struct _StWidgetClass StWidgetClass;
/**
@ -64,7 +74,7 @@ struct _StWidgetClass
*/
gboolean (* navigate_focus) (StWidget *self,
ClutterActor *from,
GtkDirectionType direction);
StDirectionType direction);
GType (* get_accessible_type) (void);
GList * (* get_focus_chain) (StWidget *widget);
@ -113,7 +123,7 @@ void st_widget_set_can_focus (StWidget *widg
gboolean st_widget_get_can_focus (StWidget *widget);
gboolean st_widget_navigate_focus (StWidget *widget,
ClutterActor *from,
GtkDirectionType direction,
StDirectionType direction,
gboolean wrap_around);
ClutterActor * st_widget_get_label_actor (StWidget *widget);