Esempio n. 1
0
static void
swatch_state_flags_changed (GtkWidget     *widget,
                            GtkStateFlags  previous_state)
{
    GtkColorSwatch *swatch = GTK_COLOR_SWATCH (widget);

    gtk_css_node_set_state (gtk_css_gadget_get_node (swatch->priv->gadget), gtk_widget_get_state_flags (widget));
    gtk_css_node_set_state (gtk_css_gadget_get_node (swatch->priv->overlay_gadget), gtk_widget_get_state_flags (widget));

    GTK_WIDGET_CLASS (gtk_color_swatch_parent_class)->state_flags_changed (widget, previous_state);
}
Esempio n. 2
0
static void
gtk_color_swatch_init (GtkColorSwatch *swatch)
{
  GtkCssNode *widget_node;
  GtkStyleContext *context;

  swatch->priv = gtk_color_swatch_get_instance_private (swatch);
  swatch->priv->use_alpha = TRUE;
  swatch->priv->selectable = TRUE;
  swatch->priv->has_menu = TRUE;

  gtk_widget_set_can_focus (GTK_WIDGET (swatch), TRUE);
  gtk_widget_set_has_window (GTK_WIDGET (swatch), FALSE);

  swatch->priv->long_press_gesture = gtk_gesture_long_press_new (GTK_WIDGET (swatch));
  gtk_gesture_single_set_touch_only (GTK_GESTURE_SINGLE (swatch->priv->long_press_gesture),
                                     TRUE);
  g_signal_connect (swatch->priv->long_press_gesture, "pressed",
                    G_CALLBACK (hold_action), swatch);

  swatch->priv->multipress_gesture = gtk_gesture_multi_press_new (GTK_WIDGET (swatch));
  gtk_gesture_single_set_button (GTK_GESTURE_SINGLE (swatch->priv->multipress_gesture), 0);
  g_signal_connect (swatch->priv->multipress_gesture, "pressed",
                    G_CALLBACK (tap_action), swatch);

  widget_node = gtk_widget_get_css_node (GTK_WIDGET (swatch));
  swatch->priv->overlay_node = gtk_css_node_new ();
  gtk_css_node_set_name (swatch->priv->overlay_node, I_("overlay"));
  gtk_css_node_set_parent (swatch->priv->overlay_node, widget_node);
  gtk_css_node_set_state (swatch->priv->overlay_node, gtk_css_node_get_state (widget_node));
  g_object_unref (swatch->priv->overlay_node);

  context = gtk_widget_get_style_context (GTK_WIDGET (swatch));
  gtk_style_context_add_class (context, "activatable");
}
Esempio n. 3
0
static void
gtk_css_node_set_property (GObject      *object,
                           guint         property_id,
                           const GValue *value,
                           GParamSpec   *pspec)
{
    GtkCssNode *cssnode = GTK_CSS_NODE (object);

    switch (property_id)
    {
    case PROP_CLASSES:
        gtk_css_node_set_classes (cssnode, g_value_get_boxed (value));
        break;

    case PROP_ID:
        gtk_css_node_set_id (cssnode, g_value_get_string (value));
        break;

    case PROP_STATE:
        gtk_css_node_set_state (cssnode, g_value_get_flags (value));
        break;

    case PROP_VISIBLE:
        gtk_css_node_set_visible (cssnode, g_value_get_boolean (value));
        break;

    case PROP_WIDGET_TYPE:
        gtk_css_node_set_widget_type (cssnode, g_value_get_gtype (value));
        break;

    default:
        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
    }
}
Esempio n. 4
0
static void
swatch_state_flags_changed (GtkWidget     *widget,
                            GtkStateFlags  previous_state)
{
  GtkColorSwatch *swatch = GTK_COLOR_SWATCH (widget);

  gtk_css_node_set_state (swatch->priv->overlay_node, gtk_widget_get_state_flags (widget));
}
Esempio n. 5
0
static void
update_node_state (GtkCheckMenuItem *check_menu_item)
{
  GtkCheckMenuItemPrivate *priv = check_menu_item->priv;
  GtkStateFlags state;

  state = gtk_widget_get_state_flags (GTK_WIDGET (check_menu_item));

  if (priv->inconsistent)
    state |= GTK_STATE_FLAG_INCONSISTENT;
  if (priv->active)
    state |= GTK_STATE_FLAG_CHECKED;

  gtk_css_node_set_state (priv->indicator_node, state);
}
Esempio n. 6
0
static void
gtk_check_menu_item_init (GtkCheckMenuItem *check_menu_item)
{
  GtkCheckMenuItemPrivate *priv;
  GtkCssNode *widget_node;

  priv = check_menu_item->priv = gtk_check_menu_item_get_instance_private (check_menu_item);
  priv->active = FALSE;

  widget_node = gtk_widget_get_css_node (GTK_WIDGET (check_menu_item));
  priv->indicator_node = gtk_css_node_new ();
  gtk_css_node_set_name (priv->indicator_node, I_("check"));
  gtk_css_node_set_parent (priv->indicator_node, widget_node);
  gtk_css_node_set_state (priv->indicator_node, gtk_css_node_get_state (widget_node));
  g_signal_connect_object (priv->indicator_node, "style-changed", G_CALLBACK (node_style_changed_cb), check_menu_item, 0);
  g_object_unref (priv->indicator_node);
}