static void ide_editor_view__buffer_cursor_moved (IdeEditorView *self, const GtkTextIter *iter, GtkTextBuffer *buffer) { GtkTextIter bounds; GtkTextMark *mark; gchar *str; guint line; gint column; gint column2; g_assert (IDE_IS_EDITOR_VIEW (self)); g_assert (iter != NULL); g_assert (IDE_IS_BUFFER (buffer)); ide_source_view_get_visual_position (self->frame1->source_view, &line, (guint *)&column); mark = gtk_text_buffer_get_selection_bound (buffer); gtk_text_buffer_get_iter_at_mark (buffer, &bounds, mark); if (!gtk_widget_has_focus (GTK_WIDGET (self->frame1->source_view)) || gtk_text_iter_equal (&bounds, iter) || (gtk_text_iter_get_line (iter) != gtk_text_iter_get_line (&bounds))) { str = g_strdup_printf ("%d:%d", line + 1, column + 1); gtk_label_set_text (self->cursor_label, str); g_free (str); return; } /* We have a selection that is on the same line. * Lets give some detail as to how long the selection is. */ column2 = gtk_source_view_get_visual_column (GTK_SOURCE_VIEW (self->frame1->source_view), &bounds); str = g_strdup_printf ("%d:%d (%d)", line + 1, column + 1, ABS (column2 - column)); gtk_label_set_text (self->cursor_label, str); g_free (str); }
static void ide_editor_frame_update_ruler (IdeEditorFrame *self) { const gchar *mode_display_name; const gchar *mode_name; GtkTextBuffer *buffer; gboolean visible = FALSE; g_assert (IDE_IS_EDITOR_FRAME (self)); buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (self->source_view)); if (!IDE_IS_BUFFER (buffer)) return; /* update line/column text */ if (self->show_ruler) { g_autofree gchar *text = NULL; guint ln = 0; guint col = 0; ide_source_view_get_visual_position (self->source_view, &ln, &col); text = g_strdup_printf (_("Line %u, Column %u"), ln + 1, col + 1); nautilus_floating_bar_set_primary_label (self->floating_bar, text); visible = TRUE; } else { nautilus_floating_bar_set_primary_label (self->floating_bar, NULL); } /* update current mode */ mode_display_name = ide_source_view_get_mode_display_name (self->source_view); gtk_label_set_label (self->mode_name_label, mode_display_name); gtk_widget_set_visible (GTK_WIDGET (self->mode_name_label), !!mode_display_name); if (mode_display_name != NULL) visible = TRUE; /* * Update overwrite label. * * XXX: Hack for 3.18 to ensure we don't have "OVR Replace" in vim mode. */ mode_name = ide_source_view_get_mode_name (self->source_view); if (ide_source_view_get_overwrite (self->source_view) && !ide_str_equal0 (mode_name, "vim-replace")) { gtk_widget_set_visible (GTK_WIDGET (self->overwrite_label), TRUE); visible = TRUE; } else { gtk_widget_set_visible (GTK_WIDGET (self->overwrite_label), FALSE); } if (gtk_widget_get_visible (GTK_WIDGET (self->mode_name_label))) visible = TRUE; if (ide_buffer_get_busy (IDE_BUFFER (buffer))) { nautilus_floating_bar_set_show_spinner (self->floating_bar, TRUE); visible = TRUE; } else { nautilus_floating_bar_set_show_spinner (self->floating_bar, FALSE); } /* we don't fade while hiding because we likely won't have * any text labels set anyway. */ if (!visible && gtk_widget_get_visible (GTK_WIDGET (self->floating_bar))) gtk_widget_hide (GTK_WIDGET (self->floating_bar)); else if (visible && !gtk_widget_get_visible (GTK_WIDGET (self->floating_bar))) gtk_widget_show (GTK_WIDGET (self->floating_bar)); }