예제 #1
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");
}
예제 #2
0
static void
gtk_css_node_dispose (GObject *object)
{
    GtkCssNode *cssnode = GTK_CSS_NODE (object);

    while (cssnode->first_child)
    {
        gtk_css_node_set_parent (cssnode->first_child, NULL);
    }

    gtk_css_node_set_invalid (cssnode, FALSE);

    G_OBJECT_CLASS (gtk_css_node_parent_class)->dispose (object);
}
예제 #3
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);
}
예제 #4
0
파일: gtklevelbar.c 프로젝트: Therzok/gtk
static void
update_block_nodes (GtkLevelBar *self)
{
  GtkLevelBarPrivate *priv = self->priv;
  guint n_blocks;
  guint i;

  if (priv->bar_mode == GTK_LEVEL_BAR_MODE_CONTINUOUS)
    n_blocks = 2;
  else
    n_blocks = MAX (1, (gint) (round (priv->max_value) - round (priv->min_value)));

  if (priv->n_blocks == n_blocks)
    return;
  else if (n_blocks < priv->n_blocks)
    {
      for (i = n_blocks; i < priv->n_blocks; i++)
        gtk_css_node_set_parent (priv->block_node[i], NULL);
      priv->block_node = g_renew (GtkCssNode*, priv->block_node, n_blocks);
      priv->n_blocks = n_blocks;
    }
  else
    {
예제 #5
0
static void
update_block_nodes (GtkLevelBar *self)
{
  GtkLevelBarPrivate *priv = self->priv;
  GtkCssNode *trough_node = gtk_css_gadget_get_node (priv->trough_gadget);
  guint n_blocks;
  guint i;

  n_blocks = gtk_level_bar_get_num_block_nodes (self);

  if (priv->n_blocks == n_blocks)
    return;
  else if (n_blocks < priv->n_blocks)
    {
      for (i = n_blocks; i < priv->n_blocks; i++)
        {
          gtk_css_node_set_parent (gtk_css_gadget_get_node (priv->block_gadget[i]), NULL);
          g_clear_object (&priv->block_gadget[i]);
        }
      priv->block_gadget = g_renew (GtkCssGadget*, priv->block_gadget, n_blocks);
      priv->n_blocks = n_blocks;
    }
  else
    {