コード例 #1
0
static void
gb_view_stack_finalize (GObject *object)
{
  GbViewStack *self = (GbViewStack *)object;

  g_clear_pointer (&self->focus_history, g_list_free);
  ide_clear_weak_pointer (&self->context);
  ide_clear_weak_pointer (&self->title_binding);
  ide_clear_weak_pointer (&self->active_view);
  g_clear_object (&self->back_forward_list);

  G_OBJECT_CLASS (gb_view_stack_parent_class)->finalize (object);
}
コード例 #2
0
ファイル: gb-slider.c プロジェクト: MaX121/gnome-builder
static void
gb_slider_finalize (GObject *object)
{
  GbSlider *self = (GbSlider *)object;
  GbSliderPrivate *priv = gb_slider_get_instance_private (self);

  g_clear_object (&priv->h_adj);
  g_clear_object (&priv->v_adj);
  g_clear_pointer (&priv->children, g_ptr_array_unref);

  ide_clear_weak_pointer (&priv->h_anim);
  ide_clear_weak_pointer (&priv->v_anim);

  G_OBJECT_CLASS (gb_slider_parent_class)->finalize (object);
}
コード例 #3
0
static void
ide_file_settings_finalize (GObject *object)
{
  IdeFileSettings *self = (IdeFileSettings *)object;
  IdeFileSettingsPrivate *priv = ide_file_settings_get_instance_private (self);

  g_clear_pointer (&priv->encoding, g_free);
  ide_clear_weak_pointer (&priv->file);

  G_OBJECT_CLASS (ide_file_settings_parent_class)->finalize (object);
}
コード例 #4
0
ファイル: ide-workbench.c プロジェクト: gnunn1/gnome-builder
static void
ide_workbench_finalize (GObject *object)
{
  IdeWorkbench *self = (IdeWorkbench *)object;

  ide_clear_weak_pointer (&self->perspective);
  g_clear_object (&self->context);
  g_clear_object (&self->cancellable);

  G_OBJECT_CLASS (ide_workbench_parent_class)->finalize (object);
}
コード例 #5
0
static void
ide_ctags_completion_item_finalize (GObject *object)
{
  IdeCtagsCompletionItem *self = (IdeCtagsCompletionItem *)object;

  ide_clear_weak_pointer (&self->context);

  G_OBJECT_CLASS (ide_ctags_completion_item_parent_class)->finalize (object);

  EGG_COUNTER_DEC (instances);
}
コード例 #6
0
static void
ide_highlight_engine__unbind_buffer_cb (IdeHighlightEngine  *self,
                                        EggSignalGroup      *group)
{
    GtkTextBuffer *text_buffer;
    GtkTextTagTable *tag_table;
    GtkTextIter begin;
    GtkTextIter end;
    GSList *iter;

    IDE_ENTRY;

    g_assert (IDE_IS_HIGHLIGHT_ENGINE (self));
    g_assert (EGG_IS_SIGNAL_GROUP (group));

    text_buffer = GTK_TEXT_BUFFER (self->buffer);

    if (self->work_timeout)
    {
        g_source_remove (self->work_timeout);
        self->work_timeout = 0;
    }

    g_object_set_qdata (G_OBJECT (text_buffer), gEngineQuark, NULL);

    tag_table = gtk_text_buffer_get_tag_table (text_buffer);

    gtk_text_buffer_delete_mark (text_buffer, self->invalid_begin);
    gtk_text_buffer_delete_mark (text_buffer, self->invalid_end);

    self->invalid_begin = NULL;
    self->invalid_end = NULL;

    gtk_text_buffer_get_bounds (text_buffer, &begin, &end);

    for (iter = self->private_tags; iter; iter = iter->next)
    {
        gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end);
        gtk_text_tag_table_remove (tag_table, iter->data);
    }
    g_clear_pointer (&self->private_tags, g_slist_free);

    for (iter = self->public_tags; iter; iter = iter->next)
    {
        gtk_text_buffer_remove_tag (text_buffer, iter->data, &begin, &end);
        gtk_text_tag_table_remove (tag_table, iter->data);
    }
    g_clear_pointer (&self->public_tags, g_slist_free);

    ide_clear_weak_pointer (&self->buffer);

    IDE_EXIT;
}
コード例 #7
0
static void
provider_entry_destroy (gpointer data)
{
  ProviderEntry *entry = data;

  IDE_ENTRY;

  IDE_TRACE_MSG ("releasing %p", data);

  ide_clear_weak_pointer (&entry->group);
  g_clear_object (&entry->provider);
  g_free (entry);

  IDE_EXIT;
}
コード例 #8
0
static void
gb_search_box_unmap (GtkWidget *widget)
{
  GbSearchBox *self = (GbSearchBox *)widget;

  g_return_if_fail (GB_IS_SEARCH_BOX (self));

  if (self->workbench)
    {
      ide_clear_signal_handler (self->workbench, &self->set_focus_handler);
      ide_clear_weak_pointer (&self->workbench);
    }

  GTK_WIDGET_CLASS (gb_search_box_parent_class)->unmap (widget);
}
コード例 #9
0
static void
ide_xml_highlighter_dispose (GObject *object)
{
  IdeXmlHighlighter *self = (IdeXmlHighlighter *)object;

  if (self->highlight_timeout != 0)
    {
      g_source_remove (self->highlight_timeout);
      self->highlight_timeout = 0;
    }

  ide_clear_weak_pointer (&self->engine);
  g_clear_object (&self->signal_group);

  G_OBJECT_CLASS (ide_xml_highlighter_parent_class)->dispose (object);
}
コード例 #10
0
static void
ide_xml_highlighter_unbind_buffer_cb (IdeXmlHighlighter  *self,
                                      EggSignalGroup     *group)
{
  g_assert (IDE_IS_XML_HIGHLIGHTER (self));
  g_assert (EGG_IS_SIGNAL_GROUP (group));
  g_assert (self->buffer != NULL);

  if (self->highlight_timeout != 0)
    {
      g_source_remove (self->highlight_timeout);
      self->highlight_timeout = 0;
    }

  gtk_text_buffer_delete_mark (self->buffer, self->iter_mark);
  self->iter_mark = NULL;

  ide_clear_weak_pointer (&self->buffer);
}
コード例 #11
0
static void
ide_git_buffer_change_monitor_dispose (GObject *object)
{
  IdeGitBufferChangeMonitor *self = (IdeGitBufferChangeMonitor *)object;

  if (self->changed_timeout)
    {
      g_source_remove (self->changed_timeout);
      self->changed_timeout = 0;
    }

  ide_clear_weak_pointer (&self->buffer);

  g_clear_object (&self->signal_group);
  g_clear_object (&self->vcs_signal_group);
  g_clear_object (&self->cached_blob);
  g_clear_object (&self->repository);

  G_OBJECT_CLASS (ide_git_buffer_change_monitor_parent_class)->dispose (object);
}
コード例 #12
0
static void
ide_editor_spell_widget_finalize (GObject *object)
{
  IdeEditorSpellWidget *self = (IdeEditorSpellWidget *)object;
  GspellTextView *spell_text_view;
  const GspellLanguage *spell_language;
  GtkTextBuffer *buffer;

  if (self->check_word_timeout_id > 0)
    g_source_remove (self->check_word_timeout_id);

  /* Set back the view spellchecking previous state */
  if (self->view != NULL)
    {
      spell_text_view = gspell_text_view_get_from_gtk_text_view (GTK_TEXT_VIEW (self->view));
      if (self->view_spellchecker_set)
        {
          gspell_text_view_set_inline_spell_checking (spell_text_view, TRUE);
          spell_language = gspell_checker_get_language (self->checker);
          if (gspell_language_compare (self->spellchecker_language, spell_language) != 0)
            gspell_checker_set_language (self->checker, self->spellchecker_language);
        }
      else
        {
          gspell_text_view_set_inline_spell_checking (spell_text_view, FALSE);
          gspell_text_view_set_enable_language_menu (spell_text_view, FALSE);

          buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->view));
          ide_buffer_set_spell_checking (IDE_BUFFER (buffer), FALSE);
        }
    }

  g_clear_object (&self->navigator);
  ide_clear_weak_pointer (&self->view);

  G_OBJECT_CLASS (ide_editor_spell_widget_parent_class)->finalize (object);
}
コード例 #13
0
ファイル: gb-slider.c プロジェクト: MaX121/gnome-builder
void
gb_slider_set_position (GbSlider         *self,
                        GbSliderPosition  position)
{
  GbSliderPrivate *priv = gb_slider_get_instance_private (self);

  g_return_if_fail (GB_IS_SLIDER (self));
  g_return_if_fail (position >= GB_SLIDER_NONE);
  g_return_if_fail (position <= GB_SLIDER_LEFT);

  if (priv->position != position)
    {
      GdkFrameClock *frame_clock;
      EggAnimation *anim;
      gdouble v_value;
      gdouble h_value;

      priv->position = position;

      if (priv->h_anim)
        egg_animation_stop (priv->h_anim);
      ide_clear_weak_pointer (&priv->h_anim);

      if (priv->v_anim)
        egg_animation_stop (priv->v_anim);
      ide_clear_weak_pointer (&priv->v_anim);

      switch (position)
        {
        case GB_SLIDER_NONE:
          h_value = 0.0;
          v_value = 0.0;
          break;

        case GB_SLIDER_TOP:
          h_value = 0.0;
          v_value = 1.0;
          break;

        case GB_SLIDER_RIGHT:
          h_value = -1.0;
          v_value = 0.0;
          break;

        case GB_SLIDER_BOTTOM:
          h_value = 0.0;
          v_value = -1.0;
          break;

        case GB_SLIDER_LEFT:
          h_value = 1.0;
          v_value = 0.0;
          break;

        default:
          g_assert_not_reached ();
          break;
        }

      frame_clock = gtk_widget_get_frame_clock (GTK_WIDGET (self));

      anim = egg_object_animate (priv->h_adj,
                                 ANIMATION_MODE,
                                 ANIMATION_DURATION,
                                 frame_clock,
                                 "value", h_value,
                                 NULL);
      ide_set_weak_pointer (&priv->h_anim, anim);

      anim = egg_object_animate (priv->v_adj,
                                 ANIMATION_MODE,
                                 ANIMATION_DURATION,
                                 frame_clock,
                                 "value", v_value,
                                 NULL);
      ide_set_weak_pointer (&priv->v_anim, anim);

      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_POSITION]);
      gtk_widget_queue_resize (GTK_WIDGET (self));
    }
}
コード例 #14
0
void
gb_view_stack_set_active_view (GbViewStack *self,
                               GtkWidget   *active_view)
{
  g_return_if_fail (GB_IS_VIEW_STACK (self));
  g_return_if_fail (!active_view || GB_IS_VIEW (active_view));

  if (self->destroyed)
    return;

  if (self->active_view != active_view)
    {
      if (self->active_view)
        {
          if (self->title_binding)
            g_binding_unbind (self->title_binding);
          ide_clear_weak_pointer (&self->title_binding);
          if (self->modified_binding)
            g_binding_unbind (self->modified_binding);
          ide_clear_weak_pointer (&self->modified_binding);
          gtk_label_set_label (self->title_label, NULL);
          ide_clear_weak_pointer (&self->active_view);
          gtk_widget_hide (GTK_WIDGET (self->controls_stack));
        }

      if (active_view)
        {
          GtkWidget *controls;
          GBinding *binding;
          GActionGroup *group;

          ide_set_weak_pointer (&self->active_view, active_view);
          if (active_view != gtk_stack_get_visible_child (self->stack))
            gtk_stack_set_visible_child (self->stack, active_view);

          self->focus_history = g_list_remove (self->focus_history, active_view);
          self->focus_history = g_list_prepend (self->focus_history, active_view);

          binding = g_object_bind_property (active_view, "title",
                                            self->title_label, "label",
                                            G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
          ide_set_weak_pointer (&self->title_binding, binding);

          binding = g_object_bind_property (active_view, "modified",
                                            self->modified_label, "visible",
                                            G_BINDING_SYNC_CREATE);
          ide_set_weak_pointer (&self->modified_binding, binding);

          controls = gb_view_get_controls (GB_VIEW (active_view));
          if (controls)
            {
              gtk_stack_set_visible_child (self->controls_stack, controls);
              gtk_widget_show (GTK_WIDGET (self->controls_stack));
            }

          group = gtk_widget_get_action_group (active_view, "view");
          if (group)
            gtk_widget_insert_action_group (GTK_WIDGET (self), "view", group);

          gb_view_stack_move_top_list_row (self, GB_VIEW (active_view));
        }

      g_object_notify_by_pspec (G_OBJECT (self), gParamSpecs [PROP_ACTIVE_VIEW]);
    }
}