コード例 #1
0
ファイル: gtkcsscomputedvalues.c プロジェクト: soreau/gtk
static void
gtk_css_computed_values_finalize (GObject *object)
{
    GtkCssComputedValues *values = GTK_CSS_COMPUTED_VALUES (object);

    _gtk_bitmask_free (values->depends_on_parent);
    _gtk_bitmask_free (values->equals_parent);
    _gtk_bitmask_free (values->depends_on_color);
    _gtk_bitmask_free (values->depends_on_font_size);

    G_OBJECT_CLASS (_gtk_css_computed_values_parent_class)->finalize (object);
}
コード例 #2
0
ファイル: gtkcsslookup.c プロジェクト: alexlarsson/gtk
void
_gtk_css_lookup_free (GtkCssLookup *lookup)
{
  gtk_internal_return_if_fail (lookup != NULL);

  _gtk_bitmask_free (lookup->missing);
  g_free (lookup);
}
コード例 #3
0
ファイル: gtkcsswidgetnode.c プロジェクト: ahodesuka/gtk
static void
gtk_css_widget_node_finalize (GObject *object)
{
  GtkCssWidgetNode *node = GTK_CSS_WIDGET_NODE (object);

  _gtk_bitmask_free (node->accumulated_changes);

  G_OBJECT_CLASS (gtk_css_widget_node_parent_class)->finalize (object);
}
コード例 #4
0
ファイル: gtkcsswidgetnode.c プロジェクト: ahodesuka/gtk
static void
gtk_css_widget_node_validate (GtkCssNode *node)
{
  GtkCssWidgetNode *widget_node = GTK_CSS_WIDGET_NODE (node);
  GtkStyleContext *context;

  if (widget_node->widget == NULL)
    return;

  context = _gtk_widget_peek_style_context (widget_node->widget);
  if (context)
    gtk_style_context_validate (context, widget_node->accumulated_changes);
  else
    _gtk_widget_style_context_invalidated (widget_node->widget);
  _gtk_bitmask_free (widget_node->accumulated_changes);
  widget_node->accumulated_changes = _gtk_bitmask_new ();
}
コード例 #5
0
ファイル: gtkcsspathnode.c プロジェクト: Distrotech/gtk
static void
gtk_css_path_node_invalidate (GtkCssNode *node)
{
  GtkCssPathNode *path_node = GTK_CSS_PATH_NODE (node);

  if (path_node->context)
    {
      GtkBitmask *changes;

      changes = _gtk_bitmask_new ();
      changes = _gtk_bitmask_invert_range (changes,
                                           0,
                                           _gtk_css_style_property_get_n_properties ());

      gtk_style_context_validate (path_node->context, changes);

      _gtk_bitmask_free (changes);
    }
}
コード例 #6
0
ファイル: gtkcsswidgetnode.c プロジェクト: ahodesuka/gtk
static void
gtk_css_widget_node_style_changed (GtkCssNode   *cssnode,
                                   GtkCssStyle  *old_style,
                                   GtkCssStyle  *new_style)
{
  GtkCssWidgetNode *node;
  GtkBitmask *diff;

  node = GTK_CSS_WIDGET_NODE (cssnode);

  if (node->widget)
    gtk_widget_clear_path (node->widget);

  GTK_CSS_NODE_CLASS (gtk_css_widget_node_parent_class)->style_changed (cssnode, old_style, new_style);

  diff = gtk_css_style_get_difference (new_style, old_style);
  node->accumulated_changes = _gtk_bitmask_union (node->accumulated_changes, diff);
  _gtk_bitmask_free (diff);
}
コード例 #7
0
ファイル: gtkcheckmenuitem.c プロジェクト: dhruva71/gtk
static void
node_style_changed_cb (GtkCssNode  *node,
                       GtkCssStyle *old_style,
                       GtkCssStyle *new_style,
                       GtkWidget    *widget)
{
  GtkBitmask *changes;
  static GtkBitmask *affects_size = NULL;

  if (G_UNLIKELY (affects_size == NULL))
    affects_size = _gtk_css_style_property_get_mask_affecting (GTK_CSS_AFFECTS_SIZE | GTK_CSS_AFFECTS_CLIP);

  changes = _gtk_bitmask_new ();
  changes = gtk_css_style_add_difference (changes, old_style, new_style);

  if (_gtk_bitmask_intersects (changes, affects_size))
    gtk_widget_queue_resize (widget);
  else
    gtk_widget_queue_draw (widget);

  _gtk_bitmask_free (changes);
}