static void
recalculate_size (GtkSourceGutterRendererLines *renderer)
{
	gint num_lines;
	gint num_digits = 0;
	GtkTextBuffer *buffer;

	buffer = get_buffer (renderer);

	num_lines = gtk_text_buffer_get_line_count (buffer);

	num_digits = count_num_digits (num_lines);

	if (num_digits != renderer->priv->num_line_digits)
	{
		gchar markup[24];
		gint size;

		renderer->priv->num_line_digits = num_digits;

		num_lines = MAX (num_lines, 99);

		g_snprintf (markup, sizeof markup, "<b>%d</b>", num_lines);
		gtk_source_gutter_renderer_text_measure_markup (GTK_SOURCE_GUTTER_RENDERER_TEXT (renderer),
		                                                markup,
		                                                &size,
		                                                NULL);

		gtk_source_gutter_renderer_set_size (GTK_SOURCE_GUTTER_RENDERER (renderer),
		                                     size);
	}
}
Esempio n. 2
0
void SourceEditor::enableFolding()
{
    if (!foldingEnabled())
    {
        m_foldsData.resize(lineCount());

        GtkSourceView *view = gtkSourceView();
        GtkSourceGutter *gutter =
            gtk_source_view_get_gutter(view,
                                       GTK_TEXT_WINDOW_LEFT);
        m_foldsRenderer = gtk_source_gutter_renderer_pixbuf_new();
        gtk_source_gutter_insert(gutter,
                                 m_foldsRenderer,
                                 FOLD_POSITION);
        g_signal_connect(m_foldsRenderer, "activate",
                         G_CALLBACK(activateFold), this);
        g_signal_connect(m_foldsRenderer, "query-activatable",
                         G_CALLBACK(queryFoldActivatable), this);
        g_signal_connect(m_foldsRenderer, "query-data",
                         G_CALLBACK(queryFoldData), this);
        gtk_source_gutter_renderer_set_alignment_mode(
            m_foldsRenderer,
            GTK_SOURCE_GUTTER_RENDERER_ALIGNMENT_MODE_FIRST);
        gtk_source_gutter_renderer_set_size(m_foldsRenderer,
                                            measureLineHeight(view) - 2);
    }
}
static void
gutter_renderer_change_view (GtkSourceGutterRenderer *renderer,
                             GtkTextView             *old_view)
{
	GtkSourceView *view;

	view = GTK_SOURCE_VIEW (gtk_source_gutter_renderer_get_view (renderer));

	if (view != NULL)
	{
		gtk_source_gutter_renderer_set_size (renderer,
		                                     measure_line_height (view));
	}
}
static void
gutter_renderer_change_view (GtkSourceGutterRenderer *renderer,
                             GtkTextView             *old_view)
{
	GtkSourceView *view;

	view = GTK_SOURCE_VIEW (gtk_source_gutter_renderer_get_view (renderer));

	if (view != NULL)
	{
		gtk_source_gutter_renderer_set_size (renderer,
		                                     measure_line_height (view));
	}

	if (GTK_SOURCE_GUTTER_RENDERER_CLASS (gtk_source_gutter_renderer_marks_parent_class)->change_view != NULL)
	{
		GTK_SOURCE_GUTTER_RENDERER_CLASS (gtk_source_gutter_renderer_marks_parent_class)->change_view (renderer,
													       old_view);
	}
}