static void gtk_source_map_get_preferred_width (GtkWidget *widget, gint *mininum_width, gint *natural_width) { GtkSourceMap *map = GTK_SOURCE_MAP (widget); GtkSourceMapPrivate *priv; PangoLayout *layout; gint height; gint width; priv = gtk_source_map_get_instance_private (map); if (priv->font_desc == NULL) { *mininum_width = *natural_width = DEFAULT_WIDTH; return; } /* * FIXME: * * This seems like the type of thing we should calculate when * rebuilding our CSS since it gets used a bunch and changes * very little. */ layout = gtk_widget_create_pango_layout (GTK_WIDGET (priv->child_view), "X"); pango_layout_get_pixel_size (layout, &width, &height); g_object_unref (layout); width *= gtk_source_view_get_right_margin_position (priv->view); *mininum_width = *natural_width = width; }
static gboolean check_previous (GtkSourceView *view, ModelineOptions *previous, ModelineSet set) { GtkSourceBuffer *buffer = GTK_SOURCE_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view))); /* Do not restore default when this is the first time */ if (!previous) return FALSE; /* Do not restore default when previous was not set */ if (!(previous->set & set)) return FALSE; /* Only restore default when setting has not changed */ switch (set) { case MODELINE_SET_INSERT_SPACES: return gtk_source_view_get_insert_spaces_instead_of_tabs (view) == previous->insert_spaces; break; case MODELINE_SET_TAB_WIDTH: return gtk_source_view_get_tab_width (view) == previous->tab_width; break; case MODELINE_SET_INDENT_WIDTH: return gtk_source_view_get_indent_width (view) == previous->indent_width; break; case MODELINE_SET_WRAP_MODE: return gtk_text_view_get_wrap_mode (GTK_TEXT_VIEW (view)) == previous->wrap_mode; break; case MODELINE_SET_RIGHT_MARGIN_POSITION: return gtk_source_view_get_right_margin_position (view) == previous->right_margin_position; break; case MODELINE_SET_SHOW_RIGHT_MARGIN: return gtk_source_view_get_show_right_margin (view) == previous->display_right_margin; break; case MODELINE_SET_LANGUAGE: { GtkSourceLanguage *language = gtk_source_buffer_get_language (buffer); return (language == NULL && previous->language_id == NULL) || (language != NULL && g_strcmp0 (gtk_source_language_get_id (language), previous->language_id) == 0); } break; default: return FALSE; break; } }