summaryrefslogtreecommitdiff
path: root/pluma/pluma-view.c
diff options
context:
space:
mode:
authormbkma <[email protected]>2021-02-12 10:29:05 +0100
committerraveit65 <[email protected]>2021-03-02 22:19:58 +0100
commitc7101aa8603f288065ad9ed8150623d0270feb68 (patch)
tree3eb2c147d0db991011423b208742983fe9eaa92e /pluma/pluma-view.c
parentc0c513f3ef7e7ea432e799d8a5e10cfe94d38908 (diff)
downloadpluma-c7101aa8603f288065ad9ed8150623d0270feb68.tar.bz2
pluma-c7101aa8603f288065ad9ed8150623d0270feb68.tar.xz
code formating fixes
pluma-app.c: tabs to spaces pluma-view.c: tabs to spaces, move code around pluma-window.c: tabs to spaces
Diffstat (limited to 'pluma/pluma-view.c')
-rw-r--r--pluma/pluma-view.c3654
1 files changed, 1820 insertions, 1834 deletions
diff --git a/pluma/pluma-view.c b/pluma/pluma-view.c
index d09599a7..905df5d7 100644
--- a/pluma/pluma-view.c
+++ b/pluma/pluma-view.c
@@ -54,369 +54,369 @@
#define PLUMA_VIEW_SCROLL_MARGIN 0.02
#define PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT (30*1000) /* 30 seconds */
-#define MIN_SEARCH_COMPLETION_KEY_LEN 3
+#define MIN_SEARCH_COMPLETION_KEY_LEN 3
/* Local variables */
static gboolean middle_or_right_down = FALSE;
typedef enum
{
- GOTO_LINE,
- SEARCH
+ GOTO_LINE,
+ SEARCH
} SearchMode;
enum
{
- TARGET_URI_LIST = 100
+ TARGET_URI_LIST = 100
};
struct _PlumaViewPrivate
{
- GSettings *editor_settings;
- GSettings *interface_settings;
+ GSettings *editor_settings;
+ GSettings *interface_settings;
- SearchMode search_mode;
+ SearchMode search_mode;
- GtkTextIter start_search_iter;
+ GtkTextIter start_search_iter;
- /* used to restore the search state if an
- * incremental search is cancelled
- */
- gchar *old_search_text;
- guint old_search_flags;
+ /* used to restore the search state if an
+ * incremental search is cancelled
+ */
+ gchar *old_search_text;
+ guint old_search_flags;
- /* used to remeber the state of the last
- * incremental search (the document search
- * state may be changed by the search dialog)
- */
- guint search_flags;
- gboolean wrap_around;
+ /* used to remeber the state of the last
+ * incremental search (the document search
+ * state may be changed by the search dialog)
+ */
+ guint search_flags;
+ gboolean wrap_around;
- GtkWidget *search_window;
- GtkWidget *search_entry;
+ GtkWidget *search_window;
+ GtkWidget *search_entry;
- guint typeselect_flush_timeout;
- guint search_entry_changed_id;
+ guint typeselect_flush_timeout;
+ guint search_entry_changed_id;
- gboolean disable_popdown;
+ gboolean disable_popdown;
- GtkTextBuffer *current_buffer;
+ GtkTextBuffer *current_buffer;
- GtkCssProvider *css_provider;
- PangoFontDescription *font_desc;
+ GtkCssProvider *css_provider;
+ PangoFontDescription *font_desc;
- PeasExtensionSet *extensions;
+ PeasExtensionSet *extensions;
};
/* The search entry completion is shared among all the views */
GtkListStore *search_completion_model = NULL;
-static void pluma_view_dispose (GObject *object);
+static void pluma_view_dispose (GObject *object);
-static void pluma_view_finalize (GObject *object);
+static void pluma_view_finalize (GObject *object);
-static gint pluma_view_focus_out (GtkWidget *widget,
- GdkEventFocus *event);
+static gint pluma_view_focus_out (GtkWidget *widget,
+ GdkEventFocus *event);
static gboolean pluma_view_scroll_event (GtkWidget *widget,
GdkEventScroll *event);
-static gboolean pluma_view_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp);
+static gboolean pluma_view_drag_motion (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp);
static void pluma_view_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint timestamp);
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint timestamp);
-static gboolean pluma_view_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp);
+static gboolean pluma_view_drag_drop (GtkWidget *widget,
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp);
-static void pluma_view_realize (GtkWidget *widget);
+static void pluma_view_realize (GtkWidget *widget);
-static void pluma_view_unrealize (GtkWidget *widget);
+static void pluma_view_unrealize (GtkWidget *widget);
-static gboolean pluma_view_button_press_event (GtkWidget *widget,
- GdkEventButton *event);
+static gboolean pluma_view_button_press_event (GtkWidget *widget,
+ GdkEventButton *event);
-static gboolean pluma_view_button_release_event (GtkWidget *widget,
- GdkEventButton *event);
+static gboolean pluma_view_button_release_event (GtkWidget *widget,
+ GdkEventButton *event);
-static void pluma_view_populate_popup (GtkTextView *text_view,
- GtkWidget *widget);
+static void pluma_view_populate_popup (GtkTextView *text_view,
+ GtkWidget *widget);
-static gboolean start_interactive_search (PlumaView *view);
+static gboolean start_interactive_search (PlumaView *view);
-static gboolean start_interactive_goto_line (PlumaView *view);
+static gboolean start_interactive_goto_line (PlumaView *view);
-static gboolean reset_searched_text (PlumaView *view);
+static gboolean reset_searched_text (PlumaView *view);
-static void hide_search_window (PlumaView *view,
- gboolean cancel);
+static void hide_search_window (PlumaView *view,
+ gboolean cancel);
-static gboolean pluma_view_draw (GtkWidget *widget,
- cairo_t *cr);
+static gboolean pluma_view_draw (GtkWidget *widget,
+ cairo_t *cr);
-static void search_highlight_updated_cb (PlumaDocument *doc,
- GtkTextIter *start,
- GtkTextIter *end,
- PlumaView *view);
+static void search_highlight_updated_cb (PlumaDocument *doc,
+ GtkTextIter *start,
+ GtkTextIter *end,
+ PlumaView *view);
-static void pluma_view_delete_from_cursor (GtkTextView *text_view,
- GtkDeleteType type,
- gint count);
+static void pluma_view_delete_from_cursor (GtkTextView *text_view,
+ GtkDeleteType type,
+ gint count);
G_DEFINE_TYPE_WITH_PRIVATE (PlumaView, pluma_view, GTK_SOURCE_TYPE_VIEW)
/* Signals */
enum
{
- START_INTERACTIVE_SEARCH,
- START_INTERACTIVE_GOTO_LINE,
- RESET_SEARCHED_TEXT,
- DROP_URIS,
- LAST_SIGNAL
+ START_INTERACTIVE_SEARCH,
+ START_INTERACTIVE_GOTO_LINE,
+ RESET_SEARCHED_TEXT,
+ DROP_URIS,
+ LAST_SIGNAL
};
static guint view_signals [LAST_SIGNAL] = { 0 };
typedef enum
{
- PLUMA_SEARCH_ENTRY_NORMAL,
- PLUMA_SEARCH_ENTRY_NOT_FOUND
+ PLUMA_SEARCH_ENTRY_NORMAL,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND
} PlumaSearchEntryState;
static void
document_read_only_notify_handler (PlumaDocument *document,
- GParamSpec *pspec,
- PlumaView *view)
+ GParamSpec *pspec,
+ PlumaView *view)
{
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
- !pluma_document_get_readonly (document));
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
+ !pluma_document_get_readonly (document));
}
static gboolean
pluma_view_scroll_event (GtkWidget *widget,
GdkEventScroll *event)
{
- if (event->direction == GDK_SCROLL_UP)
- {
- event->delta_x = 0;
- event->delta_y = -1;
- }
- else if (event->direction == GDK_SCROLL_DOWN)
- {
- event->delta_x = 0;
- event->delta_y = 1;
- }
- else if (event->direction == GDK_SCROLL_LEFT)
- {
- event->delta_x = -1;
- event->delta_y = 0;
- }
- else if (event->direction == GDK_SCROLL_RIGHT)
- {
- event->delta_x = 1;
- event->delta_y = 0;
- }
-
- event->direction = GDK_SCROLL_SMOOTH;
-
- return FALSE;
+ if (event->direction == GDK_SCROLL_UP)
+ {
+ event->delta_x = 0;
+ event->delta_y = -1;
+ }
+ else if (event->direction == GDK_SCROLL_DOWN)
+ {
+ event->delta_x = 0;
+ event->delta_y = 1;
+ }
+ else if (event->direction == GDK_SCROLL_LEFT)
+ {
+ event->delta_x = -1;
+ event->delta_y = 0;
+ }
+ else if (event->direction == GDK_SCROLL_RIGHT)
+ {
+ event->delta_x = 1;
+ event->delta_y = 0;
+ }
+
+ event->direction = GDK_SCROLL_SMOOTH;
+
+ return FALSE;
}
static void
pluma_view_class_init (PlumaViewClass *klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- GtkTextViewClass *text_view_class = GTK_TEXT_VIEW_CLASS (klass);
-
- GtkBindingSet *binding_set;
-
- object_class->dispose = pluma_view_dispose;
- object_class->finalize = pluma_view_finalize;
-
- widget_class->focus_out_event = pluma_view_focus_out;
- widget_class->draw = pluma_view_draw;
- widget_class->scroll_event = pluma_view_scroll_event;
-
- /*
- * Override the gtk_text_view_drag_motion and drag_drop
- * functions to get URIs
- *
- * If the mime type is text/uri-list, then we will accept
- * the potential drop, or request the data (depending on the
- * function).
- *
- * If the drag context has any other mime type, then pass the
- * information onto the GtkTextView's standard handlers.
- * (widget_class->function_name).
- *
- * See bug #89881 for details
- */
- widget_class->drag_motion = pluma_view_drag_motion;
- widget_class->drag_data_received = pluma_view_drag_data_received;
- widget_class->drag_drop = pluma_view_drag_drop;
- widget_class->button_press_event = pluma_view_button_press_event;
- widget_class->button_release_event = pluma_view_button_release_event;
-
- widget_class->realize = pluma_view_realize;
- widget_class->unrealize = pluma_view_unrealize;
-
- text_view_class->populate_popup = pluma_view_populate_popup;
- klass->start_interactive_search = start_interactive_search;
- klass->start_interactive_goto_line = start_interactive_goto_line;
- klass->reset_searched_text = reset_searched_text;
-
- text_view_class->delete_from_cursor = pluma_view_delete_from_cursor;
-
- view_signals[START_INTERACTIVE_SEARCH] =
- g_signal_new ("start_interactive_search",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, start_interactive_search),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- view_signals[START_INTERACTIVE_GOTO_LINE] =
- g_signal_new ("start_interactive_goto_line",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, start_interactive_goto_line),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- view_signals[RESET_SEARCHED_TEXT] =
- g_signal_new ("reset_searched_text",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, reset_searched_text),
- NULL, NULL, NULL,
- G_TYPE_BOOLEAN, 0);
-
- /* A new signal DROP_URIS has been added to allow plugins to intercept
- * the default dnd behaviour of 'text/uri-list'. PlumaView now handles
- * dnd in the default handlers of drag_drop, drag_motion and
- * drag_data_received. The view emits drop_uris from drag_data_received
- * if valid uris have been dropped. Plugins should connect to
- * drag_motion, drag_drop and drag_data_received to change this
- * default behaviour. They should _NOT_ use this signal because this
- * will not prevent pluma from loading the uri
- */
- view_signals[DROP_URIS] =
- g_signal_new ("drop_uris",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (PlumaViewClass, drop_uris),
- NULL, NULL, NULL,
- G_TYPE_NONE, 1, G_TYPE_STRV);
-
- binding_set = gtk_binding_set_by_class (klass);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_k,
- GDK_CONTROL_MASK,
- "start_interactive_search", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_i,
- GDK_CONTROL_MASK,
- "start_interactive_goto_line", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_k,
- GDK_CONTROL_MASK | GDK_SHIFT_MASK,
- "reset_searched_text", 0);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_d,
- GDK_CONTROL_MASK,
- "delete_from_cursor", 2,
- G_TYPE_ENUM, GTK_DELETE_PARAGRAPHS,
- G_TYPE_INT, 1);
-
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_u,
- GDK_CONTROL_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_UPPER);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_l,
- GDK_CONTROL_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_LOWER);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_u,
- GDK_MOD1_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TOGGLE);
- gtk_binding_entry_add_signal (binding_set,
- GDK_KEY_l,
- GDK_MOD1_MASK,
- "change_case", 1,
- G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TITLE);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
+ GtkTextViewClass *text_view_class = GTK_TEXT_VIEW_CLASS (klass);
+
+ GtkBindingSet *binding_set;
+
+ object_class->dispose = pluma_view_dispose;
+ object_class->finalize = pluma_view_finalize;
+
+ widget_class->focus_out_event = pluma_view_focus_out;
+ widget_class->draw = pluma_view_draw;
+ widget_class->scroll_event = pluma_view_scroll_event;
+
+ /*
+ * Override the gtk_text_view_drag_motion and drag_drop
+ * functions to get URIs
+ *
+ * If the mime type is text/uri-list, then we will accept
+ * the potential drop, or request the data (depending on the
+ * function).
+ *
+ * If the drag context has any other mime type, then pass the
+ * information onto the GtkTextView's standard handlers.
+ * (widget_class->function_name).
+ *
+ * See bug #89881 for details
+ */
+ widget_class->drag_motion = pluma_view_drag_motion;
+ widget_class->drag_data_received = pluma_view_drag_data_received;
+ widget_class->drag_drop = pluma_view_drag_drop;
+ widget_class->button_press_event = pluma_view_button_press_event;
+ widget_class->button_release_event = pluma_view_button_release_event;
+
+ widget_class->realize = pluma_view_realize;
+ widget_class->unrealize = pluma_view_unrealize;
+
+ text_view_class->populate_popup = pluma_view_populate_popup;
+ klass->start_interactive_search = start_interactive_search;
+ klass->start_interactive_goto_line = start_interactive_goto_line;
+ klass->reset_searched_text = reset_searched_text;
+
+ text_view_class->delete_from_cursor = pluma_view_delete_from_cursor;
+
+ view_signals[START_INTERACTIVE_SEARCH] =
+ g_signal_new ("start_interactive_search",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, start_interactive_search),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ view_signals[START_INTERACTIVE_GOTO_LINE] =
+ g_signal_new ("start_interactive_goto_line",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, start_interactive_goto_line),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ view_signals[RESET_SEARCHED_TEXT] =
+ g_signal_new ("reset_searched_text",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, reset_searched_text),
+ NULL, NULL, NULL,
+ G_TYPE_BOOLEAN, 0);
+
+ /* A new signal DROP_URIS has been added to allow plugins to intercept
+ * the default dnd behaviour of 'text/uri-list'. PlumaView now handles
+ * dnd in the default handlers of drag_drop, drag_motion and
+ * drag_data_received. The view emits drop_uris from drag_data_received
+ * if valid uris have been dropped. Plugins should connect to
+ * drag_motion, drag_drop and drag_data_received to change this
+ * default behaviour. They should _NOT_ use this signal because this
+ * will not prevent pluma from loading the uri
+ */
+ view_signals[DROP_URIS] =
+ g_signal_new ("drop_uris",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (PlumaViewClass, drop_uris),
+ NULL, NULL, NULL,
+ G_TYPE_NONE, 1, G_TYPE_STRV);
+
+ binding_set = gtk_binding_set_by_class (klass);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_k,
+ GDK_CONTROL_MASK,
+ "start_interactive_search", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_i,
+ GDK_CONTROL_MASK,
+ "start_interactive_goto_line", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_k,
+ GDK_CONTROL_MASK | GDK_SHIFT_MASK,
+ "reset_searched_text", 0);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_d,
+ GDK_CONTROL_MASK,
+ "delete_from_cursor", 2,
+ G_TYPE_ENUM, GTK_DELETE_PARAGRAPHS,
+ G_TYPE_INT, 1);
+
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_u,
+ GDK_CONTROL_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_UPPER);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_l,
+ GDK_CONTROL_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_LOWER);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_u,
+ GDK_MOD1_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TOGGLE);
+ gtk_binding_entry_add_signal (binding_set,
+ GDK_KEY_l,
+ GDK_MOD1_MASK,
+ "change_case", 1,
+ G_TYPE_ENUM, GTK_SOURCE_CHANGE_CASE_TITLE);
}
static void
current_buffer_removed (PlumaView *view)
{
- if (view->priv->current_buffer)
- {
- g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
- document_read_only_notify_handler,
- view);
- g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
- search_highlight_updated_cb,
- view);
-
- g_object_unref (view->priv->current_buffer);
- view->priv->current_buffer = NULL;
- }
+ if (view->priv->current_buffer)
+ {
+ g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
+ document_read_only_notify_handler,
+ view);
+ g_signal_handlers_disconnect_by_func (view->priv->current_buffer,
+ search_highlight_updated_cb,
+ view);
+
+ g_object_unref (view->priv->current_buffer);
+ view->priv->current_buffer = NULL;
+ }
}
static void
on_notify_buffer_cb (PlumaView *view,
- GParamSpec *arg1,
- gpointer userdata)
+ GParamSpec *arg1,
+ gpointer userdata)
{
- GtkTextBuffer *buffer;
+ GtkTextBuffer *buffer;
- current_buffer_removed (view);
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ current_buffer_removed (view);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- if (buffer == NULL || !PLUMA_IS_DOCUMENT (buffer))
- return;
+ if (buffer == NULL || !PLUMA_IS_DOCUMENT (buffer))
+ return;
- view->priv->current_buffer = g_object_ref (buffer);
- g_signal_connect (buffer,
- "notify::read-only",
- G_CALLBACK (document_read_only_notify_handler),
- view);
+ view->priv->current_buffer = g_object_ref (buffer);
+ g_signal_connect (buffer,
+ "notify::read-only",
+ G_CALLBACK (document_read_only_notify_handler),
+ view);
- gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
- !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
+ gtk_text_view_set_editable (GTK_TEXT_VIEW (view),
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- g_signal_connect (buffer,
- "search_highlight_updated",
- G_CALLBACK (search_highlight_updated_cb),
- view);
+ g_signal_connect (buffer,
+ "search_highlight_updated",
+ G_CALLBACK (search_highlight_updated_cb),
+ view);
/* We only activate the extensions when the right buffer is set,
- * because most plugins will expect this behaviour, and we won't
- * change the buffer later anyway. */
- peas_extension_set_call (view->priv->extensions, "activate", view);
+ * because most plugins will expect this behaviour, and we won't
+ * change the buffer later anyway. */
+ peas_extension_set_call (view->priv->extensions, "activate", view);
}
#ifdef GTK_SOURCE_VERSION_3_24
@@ -425,34 +425,35 @@ pluma_set_source_space_drawer_by_level (GtkSourceView *view,
gint level,
GtkSourceSpaceTypeFlags type)
{
- GtkSourceSpaceLocationFlags locs[] = {GTK_SOURCE_SPACE_LOCATION_LEADING,
- GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT,
- GTK_SOURCE_SPACE_LOCATION_TRAILING};
- /* this array links the level to the location */
- GtkSourceSpaceLocationFlags levels[] = {0,
- GTK_SOURCE_SPACE_LOCATION_TRAILING,
- GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT |
- GTK_SOURCE_SPACE_LOCATION_TRAILING |
- GTK_SOURCE_SPACE_LOCATION_LEADING
- };
-
- gint i;
-
- GtkSourceSpaceDrawer *drawer = gtk_source_view_get_space_drawer (view);
-
- if (level >= G_N_ELEMENTS(levels) || level < 0)
- level = 0;
-
- for (i = 0 ; i < G_N_ELEMENTS(locs) ; i++ ) {
- GtkSourceSpaceTypeFlags f;
- f = gtk_source_space_drawer_get_types_for_locations (drawer,
- locs[i]);
- if (locs[i] & levels[level])
- f |= type;
- else
- f &= ~type;
- gtk_source_space_drawer_set_types_for_locations (drawer, locs[i], f);
- }
+ GtkSourceSpaceLocationFlags locs[] = {GTK_SOURCE_SPACE_LOCATION_LEADING,
+ GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT,
+ GTK_SOURCE_SPACE_LOCATION_TRAILING};
+ /* this array links the level to the location */
+ GtkSourceSpaceLocationFlags levels[] =
+ {0,
+ GTK_SOURCE_SPACE_LOCATION_TRAILING,
+ GTK_SOURCE_SPACE_LOCATION_INSIDE_TEXT |
+ GTK_SOURCE_SPACE_LOCATION_TRAILING |
+ GTK_SOURCE_SPACE_LOCATION_LEADING
+ };
+
+ gint i;
+
+ GtkSourceSpaceDrawer *drawer = gtk_source_view_get_space_drawer (view);
+
+ if (level >= G_N_ELEMENTS(levels) || level < 0)
+ level = 0;
+
+ for (i = 0 ; i < G_N_ELEMENTS(locs) ; i++ ) {
+ GtkSourceSpaceTypeFlags f;
+ f = gtk_source_space_drawer_get_types_for_locations (drawer,
+ locs[i]);
+ if (locs[i] & levels[level])
+ f |= type;
+ else
+ f &= ~type;
+ gtk_source_space_drawer_set_types_for_locations (drawer, locs[i], f);
+ }
}
#endif
@@ -460,172 +461,165 @@ pluma_set_source_space_drawer_by_level (GtkSourceView *view,
static void
pluma_set_source_space_drawer (GSettings *settings, GtkSourceView *view)
{
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE),
- GTK_SOURCE_SPACE_TYPE_SPACE);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB),
- GTK_SOURCE_SPACE_TYPE_TAB);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE) ? 2 : 0,
- GTK_SOURCE_SPACE_TYPE_NEWLINE);
- pluma_set_source_space_drawer_by_level (view,
- g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP),
- GTK_SOURCE_SPACE_TYPE_NBSP);
- gtk_source_space_drawer_set_enable_matrix (gtk_source_view_get_space_drawer (view),
- TRUE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE),
+ GTK_SOURCE_SPACE_TYPE_SPACE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB),
+ GTK_SOURCE_SPACE_TYPE_TAB);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE) ? 2 : 0,
+ GTK_SOURCE_SPACE_TYPE_NEWLINE);
+ pluma_set_source_space_drawer_by_level (view,
+ g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP),
+ GTK_SOURCE_SPACE_TYPE_NBSP);
+ gtk_source_space_drawer_set_enable_matrix (gtk_source_view_get_space_drawer (view),
+ TRUE);
}
#else
static void
pluma_set_source_space_drawer (GSettings *settings, GtkSourceView *view)
{
- GtkSourceDrawSpacesFlags flags = 0;
+ GtkSourceDrawSpacesFlags flags = 0;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_SPACE;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_TAB;
- if (g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE))
- flags |= GTK_SOURCE_DRAW_SPACES_NEWLINE;
- if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP) > 0)
- flags |= GTK_SOURCE_DRAW_SPACES_NBSP;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_SPACE) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_SPACE;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_TAB) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_TAB;
+ if (g_settings_get_boolean (settings, PLUMA_SETTINGS_DRAWER_NEWLINE))
+ flags |= GTK_SOURCE_DRAW_SPACES_NEWLINE;
+ if (g_settings_get_enum (settings, PLUMA_SETTINGS_DRAWER_NBSP) > 0)
+ flags |= GTK_SOURCE_DRAW_SPACES_NBSP;
- flags |= GTK_SOURCE_DRAW_SPACES_TRAILING |
- GTK_SOURCE_DRAW_SPACES_TEXT |
- GTK_SOURCE_DRAW_SPACES_LEADING;
+ flags |= GTK_SOURCE_DRAW_SPACES_TRAILING |
+ GTK_SOURCE_DRAW_SPACES_TEXT |
+ GTK_SOURCE_DRAW_SPACES_LEADING;
- gtk_source_view_set_draw_spaces (view, flags);
+ gtk_source_view_set_draw_spaces (view, flags);
}
#endif
static void
pluma_view_init (PlumaView *view)
{
- PlumaSettings *settings;
- GtkTargetList *tl;
- gboolean use_default_font;
- gboolean display_line_numbers;
- gboolean auto_indent;
- gboolean insert_spaces;
- gboolean display_right_margin;
- gboolean hl_current_line;
- guint tabs_size;
- guint right_margin_position;
- GtkWrapMode wrap_mode;
- GtkSourceSmartHomeEndType smart_home_end;
- GtkStyleContext *context;
-
- pluma_debug (DEBUG_VIEW);
-
- view->priv = pluma_view_get_instance_private (view);
-
- settings = _pluma_settings_get_singleton ();
- view->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
- view->priv->interface_settings = g_settings_new ("org.mate.interface");
-
- view->priv->css_provider = gtk_css_provider_new ();
- context = gtk_widget_get_style_context (GTK_WIDGET (view));
- gtk_style_context_add_class (context, "pluma-view");
-
- gtk_style_context_add_provider (context,
- GTK_STYLE_PROVIDER (view->priv->css_provider),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-
-
- /* Get setting values */
- use_default_font = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_USE_DEFAULT_FONT);
-
- /*
- * Set tab, fonts, wrap mode, colors, etc. according
- * to preferences
- */
- if (!use_default_font)
- {
- gchar *editor_font;
-
- editor_font = g_settings_get_string (view->priv->editor_settings,
- PLUMA_SETTINGS_EDITOR_FONT);
-
-
- pluma_view_set_font (view, FALSE, editor_font);
-
- g_free (editor_font);
- }
- else
- {
- pluma_view_set_font (view, TRUE, NULL);
- }
-
- display_line_numbers = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS);
- auto_indent = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_AUTO_INDENT);
- tabs_size = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_TABS_SIZE);
- insert_spaces = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_INSERT_SPACES);
- display_right_margin = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN);
- right_margin_position = g_settings_get_uint (view->priv->editor_settings,
- PLUMA_SETTINGS_RIGHT_MARGIN_POSITION);
- hl_current_line = g_settings_get_boolean (view->priv->editor_settings,
- PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE);
-
- wrap_mode = pluma_settings_get_wrap_mode (view->priv->editor_settings,
- PLUMA_SETTINGS_WRAP_MODE);
-
- smart_home_end = pluma_settings_get_smart_home_end (settings);
-
- g_object_set (G_OBJECT (view),
- "wrap_mode", wrap_mode,
- "show_line_numbers", display_line_numbers,
- "auto_indent", auto_indent,
- "tab_width", tabs_size,
- "insert_spaces_instead_of_tabs", insert_spaces,
- "show_right_margin", display_right_margin,
- "right_margin_position", right_margin_position,
- "highlight_current_line", hl_current_line,
- "smart_home_end", smart_home_end,
- "indent_on_tab", TRUE,
- NULL);
-
- g_settings_bind (view->priv->editor_settings,
- PLUMA_SETTINGS_BACKGROUND_PATTERN,
- view,
- "background-pattern",
- G_SETTINGS_BIND_DEFAULT);
-
- pluma_set_source_space_drawer (view->priv->editor_settings, GTK_SOURCE_VIEW (view));
-
- view->priv->typeselect_flush_timeout = 0;
- view->priv->wrap_around = TRUE;
-
- /* Drag and drop support */
- tl = gtk_drag_dest_get_target_list (GTK_WIDGET (view));
-
- if (tl != NULL)
- gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
-
- view->priv->extensions =
- peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
- PLUMA_TYPE_VIEW_ACTIVATABLE,
- "view", view,
- NULL);
-
- /* Act on buffer change */
- g_signal_connect (view,
- "notify::buffer",
- G_CALLBACK (on_notify_buffer_cb),
- NULL);
+ PlumaSettings *settings;
+ GtkTargetList *tl;
+ gboolean use_default_font;
+ gboolean display_line_numbers;
+ gboolean auto_indent;
+ gboolean insert_spaces;
+ gboolean display_right_margin;
+ gboolean hl_current_line;
+ guint tabs_size;
+ guint right_margin_position;
+ GtkWrapMode wrap_mode;
+ GtkSourceSmartHomeEndType smart_home_end;
+ GtkStyleContext *context;
+
+ pluma_debug (DEBUG_VIEW);
+
+ view->priv = pluma_view_get_instance_private (view);
+
+ settings = _pluma_settings_get_singleton ();
+ view->priv->editor_settings = g_settings_new (PLUMA_SCHEMA_ID);
+ view->priv->interface_settings = g_settings_new ("org.mate.interface");
+
+ view->priv->css_provider = gtk_css_provider_new ();
+ context = gtk_widget_get_style_context (GTK_WIDGET (view));
+ gtk_style_context_add_class (context, "pluma-view");
+
+ gtk_style_context_add_provider (context,
+ GTK_STYLE_PROVIDER (view->priv->css_provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+
+ /* Get setting values */
+ use_default_font = g_settings_get_boolean (view->priv->editor_settings,
+ PLUMA_SETTINGS_USE_DEFAULT_FONT);
+
+ /*
+ * Set tab, fonts, wrap mode, colors, etc. according
+ * to preferences
+ */
+ if (!use_default_font)
+ {
+ gchar *editor_font;
+
+ editor_font = g_settings_get_string (view->priv->editor_settings,
+ PLUMA_SETTINGS_EDITOR_FONT);
+
+ pluma_view_set_font (view, FALSE, editor_font);
+
+ g_free (editor_font);
+ }
+ else
+ {
+ pluma_view_set_font (view, TRUE, NULL);
+ }
+
+ display_line_numbers = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS);
+ auto_indent = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_AUTO_INDENT);
+ tabs_size = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_TABS_SIZE);
+ insert_spaces = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_INSERT_SPACES);
+ display_right_margin = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_DISPLAY_RIGHT_MARGIN);
+ right_margin_position = g_settings_get_uint (view->priv->editor_settings, PLUMA_SETTINGS_RIGHT_MARGIN_POSITION);
+ hl_current_line = g_settings_get_boolean (view->priv->editor_settings, PLUMA_SETTINGS_HIGHLIGHT_CURRENT_LINE);
+
+ wrap_mode = pluma_settings_get_wrap_mode (view->priv->editor_settings, PLUMA_SETTINGS_WRAP_MODE);
+
+ smart_home_end = pluma_settings_get_smart_home_end (settings);
+
+ g_object_set (G_OBJECT (view),
+ "wrap_mode", wrap_mode,
+ "show_line_numbers", display_line_numbers,
+ "auto_indent", auto_indent,
+ "tab_width", tabs_size,
+ "insert_spaces_instead_of_tabs", insert_spaces,
+ "show_right_margin", display_right_margin,
+ "right_margin_position", right_margin_position,
+ "highlight_current_line", hl_current_line,
+ "smart_home_end", smart_home_end,
+ "indent_on_tab", TRUE,
+ NULL);
+
+ g_settings_bind (view->priv->editor_settings,
+ PLUMA_SETTINGS_BACKGROUND_PATTERN,
+ view,
+ "background-pattern",
+ G_SETTINGS_BIND_DEFAULT);
+
+ pluma_set_source_space_drawer (view->priv->editor_settings, GTK_SOURCE_VIEW (view));
+
+ view->priv->typeselect_flush_timeout = 0;
+ view->priv->wrap_around = TRUE;
+
+ /* Drag and drop support */
+ tl = gtk_drag_dest_get_target_list (GTK_WIDGET (view));
+
+ if (tl != NULL)
+ gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
+
+ view->priv->extensions =
+ peas_extension_set_new (PEAS_ENGINE (pluma_plugins_engine_get_default ()),
+ PLUMA_TYPE_VIEW_ACTIVATABLE,
+ "view", view,
+ NULL);
+
+
+ /* Act on buffer change */
+ g_signal_connect (view,
+ "notify::buffer",
+ G_CALLBACK (on_notify_buffer_cb),
+ NULL);
}
static void
pluma_view_dispose (GObject *object)
{
- PlumaView *view;
+ PlumaView *view;
- view = PLUMA_VIEW (object);
+ view = PLUMA_VIEW (object);
if (view->priv->extensions != NULL)
{
@@ -633,62 +627,62 @@ pluma_view_dispose (GObject *object)
view->priv->extensions = NULL;
}
- if (view->priv->search_window != NULL)
- {
- gtk_widget_destroy (view->priv->search_window);
- view->priv->search_window = NULL;
- view->priv->search_entry = NULL;
+ if (view->priv->search_window != NULL)
+ {
+ gtk_widget_destroy (view->priv->search_window);
+ view->priv->search_window = NULL;
+ view->priv->search_entry = NULL;
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout = 0;
- }
- }
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout = 0;
+ }
+ }
- g_clear_object (&view->priv->editor_settings);
- g_clear_object (&view->priv->interface_settings);
+ g_clear_object (&view->priv->editor_settings);
+ g_clear_object (&view->priv->interface_settings);
- /* Disconnect notify buffer because the destroy of the textview will
- set the buffer to NULL, and we call get_buffer in the notify which
- would reinstate a GtkTextBuffer which we don't want */
- current_buffer_removed (view);
- g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL);
+ /* Disconnect notify buffer because the destroy of the textview will
+ set the buffer to NULL, and we call get_buffer in the notify which
+ would reinstate a GtkTextBuffer which we don't want */
+ current_buffer_removed (view);
+ g_signal_handlers_disconnect_by_func (view, on_notify_buffer_cb, NULL);
- g_clear_object (&view->priv->css_provider);
- g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
+ g_clear_object (&view->priv->css_provider);
+ g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
- (* G_OBJECT_CLASS (pluma_view_parent_class)->dispose) (object);
+ (* G_OBJECT_CLASS (pluma_view_parent_class)->dispose) (object);
}
static void
pluma_view_finalize (GObject *object)
{
- PlumaView *view;
+ PlumaView *view;
- view = PLUMA_VIEW (object);
+ view = PLUMA_VIEW (object);
- current_buffer_removed (view);
+ current_buffer_removed (view);
- g_free (view->priv->old_search_text);
+ g_free (view->priv->old_search_text);
- (* G_OBJECT_CLASS (pluma_view_parent_class)->finalize) (object);
+ (* G_OBJECT_CLASS (pluma_view_parent_class)->finalize) (object);
}
static gint
pluma_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
{
- PlumaView *view = PLUMA_VIEW (widget);
+ PlumaView *view = PLUMA_VIEW (widget);
- gtk_widget_queue_draw (widget);
+ gtk_widget_queue_draw (widget);
- /* hide interactive search dialog */
- if (view->priv->search_window != NULL)
- hide_search_window (view, FALSE);
+ /* hide interactive search dialog */
+ if (view->priv->search_window != NULL)
+ hide_search_window (view, FALSE);
- (* GTK_WIDGET_CLASS (pluma_view_parent_class)->focus_out_event) (widget, event);
+ (* GTK_WIDGET_CLASS (pluma_view_parent_class)->focus_out_event) (widget, event);
- return FALSE;
+ return FALSE;
}
/**
@@ -703,101 +697,97 @@ pluma_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
GtkWidget *
pluma_view_new (PlumaDocument *doc)
{
- GtkWidget *view;
+ GtkWidget *view;
- pluma_debug_message (DEBUG_VIEW, "START");
+ pluma_debug_message (DEBUG_VIEW, "START");
- g_return_val_if_fail (PLUMA_IS_DOCUMENT (doc), NULL);
+ g_return_val_if_fail (PLUMA_IS_DOCUMENT (doc), NULL);
- view = GTK_WIDGET (g_object_new (PLUMA_TYPE_VIEW, "buffer", doc, NULL));
+ view = GTK_WIDGET (g_object_new (PLUMA_TYPE_VIEW, "buffer", doc, NULL));
- pluma_debug_message (DEBUG_VIEW, "END: %d", G_OBJECT (view)->ref_count);
+ pluma_debug_message (DEBUG_VIEW, "END: %d", G_OBJECT (view)->ref_count);
- gtk_widget_show_all (view);
+ gtk_widget_show_all (view);
- return view;
+ return view;
}
void
pluma_view_cut_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
+ GDK_SELECTION_CLIPBOARD);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_cut_clipboard (buffer,
- clipboard,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_cut_clipboard (buffer,
+ clipboard,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
void
pluma_view_copy_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view), GDK_SELECTION_CLIPBOARD);
- gtk_text_buffer_copy_clipboard (buffer, clipboard);
+ gtk_text_buffer_copy_clipboard (buffer, clipboard);
- /* on copy do not scroll, we are already on screen */
+ /* on copy do not scroll, we are already on screen */
}
void
pluma_view_paste_clipboard (PlumaView *view)
{
- GtkTextBuffer *buffer;
- GtkClipboard *clipboard;
+ GtkTextBuffer *buffer;
+ GtkClipboard *clipboard;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view),
- GDK_SELECTION_CLIPBOARD);
+ clipboard = gtk_widget_get_clipboard (GTK_WIDGET (view), GDK_SELECTION_CLIPBOARD);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_paste_clipboard (buffer,
- clipboard,
- NULL,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_paste_clipboard (buffer,
+ clipboard,
+ NULL,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
/**
@@ -810,103 +800,102 @@ pluma_view_paste_clipboard (PlumaView *view)
void
pluma_view_delete_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
+ GtkTextBuffer *buffer = NULL;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- /* FIXME: what is default editability of a buffer? */
- gtk_text_buffer_delete_selection (buffer,
- TRUE,
- !pluma_document_get_readonly (
- PLUMA_DOCUMENT (buffer)));
+ /* FIXME: what is default editability of a buffer? */
+ gtk_text_buffer_delete_selection (buffer,
+ TRUE,
+ !pluma_document_get_readonly (PLUMA_DOCUMENT (buffer)));
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- PLUMA_VIEW_SCROLL_MARGIN,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ PLUMA_VIEW_SCROLL_MARGIN,
+ FALSE,
+ 0.0,
+ 0.0);
}
void
pluma_view_upper_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_UPPER, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_UPPER, &start, &end);
+ }
}
void
pluma_view_lower_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_LOWER, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_LOWER, &start, &end);
+ }
}
void
pluma_view_invert_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TOGGLE, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TOGGLE, &start, &end);
+ }
}
void
pluma_view_title_case_selection (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TITLE, &start, &end);
- }
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_source_buffer_change_case (GTK_SOURCE_BUFFER (buffer), GTK_SOURCE_CHANGE_CASE_TITLE, &start, &end);
+ }
}
/**
@@ -918,18 +907,18 @@ pluma_view_title_case_selection (PlumaView *view)
void
pluma_view_select_all (PlumaView *view)
{
- GtkTextBuffer *buffer = NULL;
- GtkTextIter start, end;
+ GtkTextBuffer *buffer = NULL;
+ GtkTextIter start, end;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- gtk_text_buffer_get_bounds (buffer, &start, &end);
- gtk_text_buffer_select_range (buffer, &start, &end);
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
+ gtk_text_buffer_select_range (buffer, &start, &end);
}
/**
@@ -941,38 +930,38 @@ pluma_view_select_all (PlumaView *view)
void
pluma_view_scroll_to_cursor (PlumaView *view)
{
- GtkTextBuffer* buffer = NULL;
+ GtkTextBuffer* buffer = NULL;
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- g_return_if_fail (buffer != NULL);
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ g_return_if_fail (buffer != NULL);
- gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
- gtk_text_buffer_get_insert (buffer),
- 0.25,
- FALSE,
- 0.0,
- 0.0);
+ gtk_text_view_scroll_to_mark (GTK_TEXT_VIEW (view),
+ gtk_text_buffer_get_insert (buffer),
+ 0.25,
+ FALSE,
+ 0.0,
+ 0.0);
}
static void
update_css_provider (PlumaView *view)
{
- gchar *str;
- gchar *css;
+ gchar *str;
+ gchar *css;
- g_assert (PLUMA_IS_VIEW (view));
- g_assert (view->priv->font_desc != NULL);
+ g_assert (PLUMA_IS_VIEW (view));
+ g_assert (view->priv->font_desc != NULL);
- str = pluma_pango_font_description_to_css (view->priv->font_desc);
- css = g_strdup_printf ("textview { %s }", str ? str : "");
- gtk_css_provider_load_from_data (view->priv->css_provider, css, -1, NULL);
+ str = pluma_pango_font_description_to_css (view->priv->font_desc);
+ css = g_strdup_printf ("textview { %s }", str ? str : "");
+ gtk_css_provider_load_from_data (view->priv->css_provider, css, -1, NULL);
- g_free (css);
- g_free (str);
+ g_free (css);
+ g_free (str);
}
/* FIXME this is an issue for introspection */
@@ -987,1603 +976,1600 @@ update_css_provider (PlumaView *view)
**/
void
pluma_view_set_font (PlumaView *view,
- gboolean def,
- const gchar *font_name)
+ gboolean def,
+ const gchar *font_name)
{
- pluma_debug (DEBUG_VIEW);
+ pluma_debug (DEBUG_VIEW);
- g_return_if_fail (PLUMA_IS_VIEW (view));
+ g_return_if_fail (PLUMA_IS_VIEW (view));
- g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
+ g_clear_pointer (&view->priv->font_desc, pango_font_description_free);
- if (def)
- {
- PlumaSettings *settings;
- gchar *font;
+ if (def)
+ {
+ PlumaSettings *settings;
+ gchar *font;
- settings = _pluma_settings_get_singleton ();
- font = pluma_settings_get_system_font (settings);
- view->priv->font_desc = pango_font_description_from_string (font);
- g_free (font);
- }
- else
- {
- g_return_if_fail (font_name != NULL);
+ settings = _pluma_settings_get_singleton ();
+ font = pluma_settings_get_system_font (settings);
+ view->priv->font_desc = pango_font_description_from_string (font);
+ g_free (font);
+ }
+ else
+ {
+ g_return_if_fail (font_name != NULL);
- view->priv->font_desc = pango_font_description_from_string (font_name);
- }
+ view->priv->font_desc = pango_font_description_from_string (font_name);
+ }
- g_return_if_fail (view->priv->font_desc != NULL);
+ g_return_if_fail (view->priv->font_desc != NULL);
- update_css_provider (view);
+ update_css_provider (view);
}
static void
add_search_completion_entry (const gchar *str)
{
- gchar *text;
- gboolean valid;
- GtkTreeModel *model;
- GtkTreeIter iter;
+ gchar *text;
+ gboolean valid;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
- if (str == NULL)
- return;
+ if (str == NULL)
+ return;
- text = pluma_utils_unescape_search_text (str);
+ text = pluma_utils_unescape_search_text (str);
- if (g_utf8_strlen (text, -1) < MIN_SEARCH_COMPLETION_KEY_LEN)
- {
- g_free (text);
- return;
- }
+ if (g_utf8_strlen (text, -1) < MIN_SEARCH_COMPLETION_KEY_LEN)
+ {
+ g_free (text);
+ return;
+ }
- g_return_if_fail (GTK_IS_TREE_MODEL (search_completion_model));
+ g_return_if_fail (GTK_IS_TREE_MODEL (search_completion_model));
- model = GTK_TREE_MODEL (search_completion_model);
+ model = GTK_TREE_MODEL (search_completion_model);
- /* Get the first iter in the list */
- valid = gtk_tree_model_get_iter_first (model, &iter);
+ /* Get the first iter in the list */
+ valid = gtk_tree_model_get_iter_first (model, &iter);
- while (valid)
- {
- /* Walk through the list, reading each row */
- gchar *str_data;
+ while (valid)
+ {
+ /* Walk through the list, reading each row */
+ gchar *str_data;
- gtk_tree_model_get (model,
- &iter,
- 0,
- &str_data,
- -1);
+ gtk_tree_model_get (model,
+ &iter,
+ 0,
+ &str_data,
+ -1);
- if (strcmp (text, str_data) == 0)
- {
- g_free (text);
- g_free (str_data);
- gtk_list_store_move_after (GTK_LIST_STORE (model),
- &iter,
- NULL);
+ if (strcmp (text, str_data) == 0)
+ {
+ g_free (text);
+ g_free (str_data);
+ gtk_list_store_move_after (GTK_LIST_STORE (model),
+ &iter,
+ NULL);
- return;
- }
+ return;
+ }
- g_free (str_data);
+ g_free (str_data);
- valid = gtk_tree_model_iter_next (model, &iter);
- }
+ valid = gtk_tree_model_iter_next (model, &iter);
+ }
- gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
- gtk_list_store_set (GTK_LIST_STORE (model),
- &iter,
- 0,
- text,
- -1);
+ gtk_list_store_prepend (GTK_LIST_STORE (model), &iter);
+ gtk_list_store_set (GTK_LIST_STORE (model),
+ &iter,
+ 0,
+ text,
+ -1);
- g_free (text);
+ g_free (text);
}
static void
set_entry_state (GtkWidget *entry,
PlumaSearchEntryState state)
{
- GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (entry));
+ GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET (entry));
- if (state == PLUMA_SEARCH_ENTRY_NOT_FOUND)
- {
- gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
- }
- else /* reset */
- {
- gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
- }
+ if (state == PLUMA_SEARCH_ENTRY_NOT_FOUND)
+ {
+ gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
+ }
+ else /* reset */
+ {
+ gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
+ }
}
static gboolean
run_search (PlumaView *view,
const gchar *entry_text,
- gboolean search_backward,
- gboolean wrap_around,
+ gboolean search_backward,
+ gboolean wrap_around,
gboolean typing)
{
- GtkTextIter start_iter;
- GtkTextIter match_start;
- GtkTextIter match_end;
- gboolean found = FALSE;
- PlumaDocument *doc;
-
- g_return_val_if_fail (view->priv->search_mode == SEARCH, FALSE);
-
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
-
- start_iter = view->priv->start_search_iter;
-
- if (*entry_text != '\0')
- {
- if (!search_backward)
- {
- if (!typing)
- {
- /* forward and _NOT_ typing */
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- &match_end);
-
- gtk_text_iter_order (&match_end, &start_iter);
- }
-
- /* run search */
- found = pluma_document_search_forward (doc,
- &start_iter,
- NULL,
- &match_start,
- &match_end);
- }
- else if (!typing)
- {
- /* backward and not typing */
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- &match_end);
-
- /* run search */
- found = pluma_document_search_backward (doc,
- NULL,
- &start_iter,
- &match_start,
- &match_end);
- }
- else
- {
- /* backward (while typing) */
- g_return_val_if_reached (FALSE);
-
- }
-
- if (!found && wrap_around)
- {
- if (!search_backward)
- found = pluma_document_search_forward (doc,
- NULL,
- NULL, /* FIXME: set the end_inter */
- &match_start,
- &match_end);
- else
- found = pluma_document_search_backward (doc,
- NULL, /* FIXME: set the start_inter */
- NULL,
- &match_start,
- &match_end);
- }
- }
- else
- {
- gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &start_iter,
- NULL);
- }
-
- if (found)
- {
- gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
- &match_start);
-
- gtk_text_buffer_move_mark_by_name (GTK_TEXT_BUFFER (doc),
- "selection_bound", &match_end);
- }
- else
- {
- if (typing)
- {
- gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
- &view->priv->start_search_iter);
- }
- }
-
- if (found || (*entry_text == '\0'))
- {
- pluma_view_scroll_to_cursor (view);
-
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NORMAL);
- }
- else
- {
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NOT_FOUND);
- }
-
- return found;
+ GtkTextIter start_iter;
+ GtkTextIter match_start;
+ GtkTextIter match_end;
+ gboolean found = FALSE;
+ PlumaDocument *doc;
+
+ g_return_val_if_fail (view->priv->search_mode == SEARCH, FALSE);
+
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ start_iter = view->priv->start_search_iter;
+
+ if (*entry_text != '\0')
+ {
+ if (!search_backward)
+ {
+ if (!typing)
+ {
+ /* forward and _NOT_ typing */
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ &match_end);
+
+ gtk_text_iter_order (&match_end, &start_iter);
+ }
+
+ /* run search */
+ found = pluma_document_search_forward (doc,
+ &start_iter,
+ NULL,
+ &match_start,
+ &match_end);
+ }
+ else if (!typing)
+ {
+ /* backward and not typing */
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ &match_end);
+
+ /* run search */
+ found = pluma_document_search_backward (doc,
+ NULL,
+ &start_iter,
+ &match_start,
+ &match_end);
+ }
+ else
+ {
+ /* backward (while typing) */
+ g_return_val_if_reached (FALSE);
+
+ }
+
+ if (!found && wrap_around)
+ {
+ if (!search_backward)
+ found = pluma_document_search_forward (doc,
+ NULL,
+ NULL, /* FIXME: set the end_inter */
+ &match_start,
+ &match_end);
+ else
+ found = pluma_document_search_backward (doc,
+ NULL, /* FIXME: set the start_inter */
+ NULL,
+ &match_start,
+ &match_end);
+ }
+ }
+ else
+ {
+ gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start_iter,
+ NULL);
+ }
+
+ if (found)
+ {
+ gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc), &match_start);
+
+ gtk_text_buffer_move_mark_by_name (GTK_TEXT_BUFFER (doc),
+ "selection_bound",
+ &match_end);
+ }
+ else
+ {
+ if (typing)
+ {
+ gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER (doc),
+ &view->priv->start_search_iter);
+ }
+ }
+
+ if (found || (*entry_text == '\0'))
+ {
+ pluma_view_scroll_to_cursor (view);
+
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NORMAL);
+ }
+ else
+ {
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND);
+ }
+
+ return found;
}
/* Cut and paste from gtkwindow.c */
static void
send_focus_change (GtkWidget *widget,
- gboolean in)
+ gboolean in)
{
- GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
+ GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
- g_object_ref (widget);
+ g_object_ref (widget);
- fevent->focus_change.type = GDK_FOCUS_CHANGE;
- fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
- fevent->focus_change.in = in;
+ fevent->focus_change.type = GDK_FOCUS_CHANGE;
+ fevent->focus_change.window = g_object_ref (gtk_widget_get_window (widget));
+ fevent->focus_change.in = in;
- gtk_widget_event (widget, fevent);
+ gtk_widget_event (widget, fevent);
- g_object_notify (G_OBJECT (widget), "has-focus");
+ g_object_notify (G_OBJECT (widget), "has-focus");
- g_object_unref (widget);
- gdk_event_free (fevent);
+ g_object_unref (widget);
+ gdk_event_free (fevent);
}
static void
hide_search_window (PlumaView *view, gboolean cancel)
{
- if (view->priv->disable_popdown)
- return;
+ if (view->priv->disable_popdown)
+ return;
- if (view->priv->search_entry_changed_id != 0)
- {
- g_signal_handler_disconnect (view->priv->search_entry,
- view->priv->search_entry_changed_id);
- view->priv->search_entry_changed_id = 0;
- }
+ if (view->priv->search_entry_changed_id != 0)
+ {
+ g_signal_handler_disconnect (view->priv->search_entry,
+ view->priv->search_entry_changed_id);
+ view->priv->search_entry_changed_id = 0;
+ }
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout = 0;
- }
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout = 0;
+ }
- /* send focus-in event */
- send_focus_change (GTK_WIDGET (view->priv->search_entry), FALSE);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), TRUE);
- gtk_widget_hide (view->priv->search_window);
+ /* send focus-in event */
+ send_focus_change (GTK_WIDGET (view->priv->search_entry), FALSE);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), TRUE);
+ gtk_widget_hide (view->priv->search_window);
- if (cancel)
- {
- GtkTextBuffer *buffer;
+ if (cancel)
+ {
+ GtkTextBuffer *buffer;
- buffer = GTK_TEXT_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
+ buffer = GTK_TEXT_BUFFER (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
- pluma_view_scroll_to_cursor (view);
- }
+ pluma_view_scroll_to_cursor (view);
+ }
- /* make sure a focus event is sent for the edit area */
- send_focus_change (GTK_WIDGET (view), TRUE);
+ /* make sure a focus event is sent for the edit area */
+ send_focus_change (GTK_WIDGET (view), TRUE);
}
static gboolean
search_entry_flush_timeout (PlumaView *view)
{
- view->priv->typeselect_flush_timeout = 0;
- hide_search_window (view, FALSE);
+ view->priv->typeselect_flush_timeout = 0;
+ hide_search_window (view, FALSE);
- return FALSE;
+ return FALSE;
}
static void
update_search_window_position (PlumaView *view)
{
- gint x, y;
- gint view_x, view_y;
- GdkWindow *view_window = gtk_widget_get_window (GTK_WIDGET (view));
+ gint x, y;
+ gint view_x, view_y;
+ GdkWindow *view_window = gtk_widget_get_window (GTK_WIDGET (view));
- gtk_widget_realize (view->priv->search_window);
+ gtk_widget_realize (view->priv->search_window);
- gdk_window_get_origin (view_window, &view_x, &view_y);
+ gdk_window_get_origin (view_window, &view_x, &view_y);
- x = MAX (12, view_x + 12);
- y = MAX (12, view_y - 12);
+ x = MAX (12, view_x + 12);
+ y = MAX (12, view_y - 12);
- gtk_window_move (GTK_WINDOW (view->priv->search_window), x, y);
+ gtk_window_move (GTK_WINDOW (view->priv->search_window), x, y);
}
static gboolean
search_window_delete_event (GtkWidget *widget,
- GdkEventAny *event,
- PlumaView *view)
+ GdkEventAny *event,
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
- return TRUE;
+ return TRUE;
}
static gboolean
search_window_button_press_event (GtkWidget *widget,
- GdkEventButton *event,
- PlumaView *view)
+ GdkEventButton *event,
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
- gtk_propagate_event (GTK_WIDGET (view), (GdkEvent *)event);
+ gtk_propagate_event (GTK_WIDGET (view), (GdkEvent *)event);
- return FALSE;
+ return FALSE;
}
static void
-extension_added (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaView *view)
+search_again (PlumaView *view,
+ gboolean search_backward)
{
- pluma_view_activatable_activate (PLUMA_VIEW_ACTIVATABLE (exten));
-}
+ const gchar *entry_text;
-static void
-extension_removed (PeasExtensionSet *extensions,
- PeasPluginInfo *info,
- PeasExtension *exten,
- PlumaView *view)
-{
- pluma_view_activatable_deactivate (PLUMA_VIEW_ACTIVATABLE (exten));
-}
+ g_return_if_fail (view->priv->search_mode == SEARCH);
-static void
-pluma_view_realize (GtkWidget *widget)
-{
- PlumaView *view = PLUMA_VIEW (widget);
+ /* SEARCH mode */
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
+ }
- GTK_WIDGET_CLASS (pluma_view_parent_class)->realize (widget);
+ entry_text = gtk_entry_get_text (GTK_ENTRY (view->priv->search_entry));
- g_signal_connect (view->priv->extensions,
- "extension-added",
- G_CALLBACK (extension_added),
- view);
- g_signal_connect (view->priv->extensions,
- "extension-removed",
- G_CALLBACK (extension_removed),
- view);
+ add_search_completion_entry (entry_text);
- /* We only activate the extensions when the view is realized,
- * because most plugins will expect this behaviour, and we won't
- * change the buffer later anyway. */
- peas_extension_set_foreach (view->priv->extensions,
- (PeasExtensionSetForeachFunc) extension_added,
- view);
+ run_search (view,
+ entry_text,
+ search_backward,
+ view->priv->wrap_around,
+ FALSE);
}
-static void
-pluma_view_unrealize (GtkWidget *widget)
+static gboolean
+search_window_scroll_event (GtkWidget *widget,
+ GdkEventScroll *event,
+ PlumaView *view)
{
- PlumaView *view = PLUMA_VIEW (widget);
+ gboolean retval = FALSE;
- g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_added, view);
- g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_removed, view);
+ if (view->priv->search_mode == GOTO_LINE)
+ return retval;
- /* We need to deactivate the extension on unrealize because it is not
- mandatory that a view has been realized when we dispose it, leading
- to deactivating the plugin without being activated */
- peas_extension_set_foreach (view->priv->extensions,
- (PeasExtensionSetForeachFunc) extension_removed,
- view);
+ /* SEARCH mode */
+ if (event->direction == GDK_SCROLL_UP)
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
+ else if (event->direction == GDK_SCROLL_DOWN)
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
- GTK_WIDGET_CLASS (pluma_view_parent_class)->unrealize (widget);
+ return retval;
}
-static void
-search_again (PlumaView *view,
- gboolean search_backward)
+static gboolean
+search_window_key_press_event (GtkWidget *widget,
+ GdkEventKey *event,
+ PlumaView *view)
{
- const gchar *entry_text;
+ gboolean retval = FALSE;
+ guint modifiers;
- g_return_if_fail (view->priv->search_mode == SEARCH);
+ modifiers = gtk_accelerator_get_default_mod_mask ();
- /* SEARCH mode */
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
- }
+ /* Close window */
+ if (event->keyval == GDK_KEY_Tab)
+ {
+ hide_search_window (view, FALSE);
+ retval = TRUE;
+ }
- entry_text = gtk_entry_get_text (GTK_ENTRY (view->priv->search_entry));
+ /* Close window and cancel the search */
+ if (event->keyval == GDK_KEY_Escape)
+ {
+ if (view->priv->search_mode == SEARCH)
+ {
+ PlumaDocument *doc;
- add_search_completion_entry (entry_text);
+ /* restore document search so that Find Next does the right thing */
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ pluma_document_set_search_text (doc,
+ view->priv->old_search_text,
+ view->priv->old_search_flags);
- run_search (view,
- entry_text,
- search_backward,
- view->priv->wrap_around,
- FALSE);
-}
+ }
-static gboolean
-search_window_scroll_event (GtkWidget *widget,
- GdkEventScroll *event,
- PlumaView *view)
-{
- gboolean retval = FALSE;
+ hide_search_window (view, TRUE);
+ retval = TRUE;
+ }
- if (view->priv->search_mode == GOTO_LINE)
- return retval;
+ if (view->priv->search_mode == GOTO_LINE)
+ return retval;
- /* SEARCH mode */
- if (event->direction == GDK_SCROLL_UP)
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
- else if (event->direction == GDK_SCROLL_DOWN)
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
+ /* SEARCH mode */
- return retval;
-}
+ /* select previous matching iter */
+ if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up)
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
-static gboolean
-search_window_key_press_event (GtkWidget *widget,
- GdkEventKey *event,
- PlumaView *view)
-{
- gboolean retval = FALSE;
- guint modifiers;
-
- modifiers = gtk_accelerator_get_default_mod_mask ();
-
- /* Close window */
- if (event->keyval == GDK_KEY_Tab)
- {
- hide_search_window (view, FALSE);
- retval = TRUE;
- }
-
- /* Close window and cancel the search */
- if (event->keyval == GDK_KEY_Escape)
- {
- if (view->priv->search_mode == SEARCH)
- {
- PlumaDocument *doc;
-
- /* restore document search so that Find Next does the right thing */
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- pluma_document_set_search_text (doc,
- view->priv->old_search_text,
- view->priv->old_search_flags);
-
- }
-
- hide_search_window (view, TRUE);
- retval = TRUE;
- }
-
- if (view->priv->search_mode == GOTO_LINE)
- return retval;
-
- /* SEARCH mode */
-
- /* select previous matching iter */
- if (event->keyval == GDK_KEY_Up || event->keyval == GDK_KEY_KP_Up)
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
-
- if (((event->state & modifiers) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) &&
- (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
- {
- search_again (view, TRUE);
- retval = TRUE;
- }
-
- /* select next matching iter */
- if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down)
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
-
- if (((event->state & modifiers) == GDK_CONTROL_MASK) &&
- (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
- {
- search_again (view, FALSE);
- retval = TRUE;
- }
-
- return retval;
+ if (((event->state & modifiers) == (GDK_CONTROL_MASK | GDK_SHIFT_MASK)) &&
+ (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
+ {
+ search_again (view, TRUE);
+ retval = TRUE;
+ }
+
+ /* select next matching iter */
+ if (event->keyval == GDK_KEY_Down || event->keyval == GDK_KEY_KP_Down)
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
+
+ if (((event->state & modifiers) == GDK_CONTROL_MASK) &&
+ (event->keyval == GDK_KEY_g || event->keyval == GDK_KEY_G))
+ {
+ search_again (view, FALSE);
+ retval = TRUE;
+ }
+
+ return retval;
}
static void
search_entry_activate (GtkEntry *entry,
- PlumaView *view)
+ PlumaView *view)
{
- hide_search_window (view, FALSE);
+ hide_search_window (view, FALSE);
}
static void
wrap_around_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- view->priv->wrap_around = gtk_check_menu_item_get_active (checkmenuitem);
+ view->priv->wrap_around = gtk_check_menu_item_get_active (checkmenuitem);
}
static void
match_entire_word_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_ENTIRE_WORD (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_ENTIRE_WORD (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static void
match_case_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_CASE_SENSITIVE (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_CASE_SENSITIVE (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static void
parse_escapes_menu_item_toggled (GtkCheckMenuItem *checkmenuitem,
- PlumaView *view)
+ PlumaView *view)
{
- PLUMA_SEARCH_SET_PARSE_ESCAPES (view->priv->search_flags,
- gtk_check_menu_item_get_active (checkmenuitem));
+ PLUMA_SEARCH_SET_PARSE_ESCAPES (view->priv->search_flags,
+ gtk_check_menu_item_get_active (checkmenuitem));
}
static gboolean
real_search_enable_popdown (gpointer data)
{
- PlumaView *view = (PlumaView *)data;
+ PlumaView *view = (PlumaView *)data;
- view->priv->disable_popdown = FALSE;
+ view->priv->disable_popdown = FALSE;
- return FALSE;
+ return FALSE;
}
static void
search_enable_popdown (GtkWidget *widget,
- PlumaView *view)
+ PlumaView *view)
{
- g_timeout_add (200, real_search_enable_popdown, view);
+ g_timeout_add (200, real_search_enable_popdown, view);
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- g_source_remove (view->priv->typeselect_flush_timeout);
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
}
static void
search_entry_populate_popup (GtkEntry *entry,
- GtkMenu *menu,
- PlumaView *view)
-{
- GtkWidget *menu_item;
-
- view->priv->disable_popdown = TRUE;
- g_signal_connect (menu, "hide",
- G_CALLBACK (search_enable_popdown), view);
-
- if (view->priv->search_mode == GOTO_LINE)
- return;
-
- /* separator */
- menu_item = gtk_menu_item_new ();
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_widget_show (menu_item);
-
- /* create "Wrap Around" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Wrap Around"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (wrap_around_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- view->priv->wrap_around);
- gtk_widget_show (menu_item);
-
- /* create "Match Entire Word Only" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("Match _Entire Word Only"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (match_entire_word_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_ENTIRE_WORD (view->priv->search_flags));
- gtk_widget_show (menu_item);
-
- /* create "Match Case" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Match Case"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (match_case_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_CASE_SENSITIVE (view->priv->search_flags));
- gtk_widget_show (menu_item);
-
- /* create "Parse escapes" menu item. */
- menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Parse escape sequences (e.g. \n)"));
- g_signal_connect (G_OBJECT (menu_item), "toggled",
- G_CALLBACK (parse_escapes_menu_item_toggled),
- view);
- gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
- PLUMA_SEARCH_IS_PARSE_ESCAPES (view->priv->search_flags));
- gtk_widget_show (menu_item);
+ GtkMenu *menu,
+ PlumaView *view)
+{
+ GtkWidget *menu_item;
+
+ view->priv->disable_popdown = TRUE;
+ g_signal_connect (menu, "hide",
+ G_CALLBACK (search_enable_popdown), view);
+
+ if (view->priv->search_mode == GOTO_LINE)
+ return;
+
+ /* separator */
+ menu_item = gtk_menu_item_new ();
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_widget_show (menu_item);
+
+ /* create "Wrap Around" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Wrap Around"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (wrap_around_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ view->priv->wrap_around);
+ gtk_widget_show (menu_item);
+
+ /* create "Match Entire Word Only" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("Match _Entire Word Only"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (match_entire_word_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_ENTIRE_WORD (view->priv->search_flags));
+ gtk_widget_show (menu_item);
+
+ /* create "Match Case" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Match Case"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (match_case_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_CASE_SENSITIVE (view->priv->search_flags));
+ gtk_widget_show (menu_item);
+
+ /* create "Parse escapes" menu item. */
+ menu_item = gtk_check_menu_item_new_with_mnemonic (_("_Parse escape sequences (e.g. \n)"));
+ g_signal_connect (G_OBJECT (menu_item), "toggled",
+ G_CALLBACK (parse_escapes_menu_item_toggled),
+ view);
+ gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menu_item);
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item),
+ PLUMA_SEARCH_IS_PARSE_ESCAPES (view->priv->search_flags));
+ gtk_widget_show (menu_item);
}
static void
search_entry_insert_text (GtkEditable *editable,
- const gchar *text,
- gint length,
- gint *position,
- PlumaView *view)
+ const gchar *text,
+ gint length,
+ gint *position,
+ PlumaView *view)
{
- if (view->priv->search_mode == GOTO_LINE)
- {
- gunichar c;
- const gchar *p;
- const gchar *end;
- const gchar *next;
+ if (view->priv->search_mode == GOTO_LINE)
+ {
+ gunichar c;
+ const gchar *p;
+ const gchar *end;
+ const gchar *next;
- p = text;
- end = text + length;
+ p = text;
+ end = text + length;
- if (p == end)
- return;
+ if (p == end)
+ return;
- c = g_utf8_get_char (p);
+ c = g_utf8_get_char (p);
- if (((c == '-' || c == '+') && *position == 0) ||
- (c == ':' && *position != 0))
- {
- gchar *s = NULL;
+ if (((c == '-' || c == '+') && *position == 0) ||
+ (c == ':' && *position != 0))
+ {
+ gchar *s = NULL;
- if (c == ':')
- {
- s = gtk_editable_get_chars (editable, 0, -1);
- s = g_utf8_strchr (s, -1, ':');
- }
+ if (c == ':')
+ {
+ s = gtk_editable_get_chars (editable, 0, -1);
+ s = g_utf8_strchr (s, -1, ':');
+ }
- if (s == NULL || s == p)
- {
- next = g_utf8_next_char (p);
- p = next;
- }
+ if (s == NULL || s == p)
+ {
+ next = g_utf8_next_char (p);
+ p = next;
+ }
- g_free (s);
- }
+ g_free (s);
+ }
- while (p != end)
- {
- next = g_utf8_next_char (p);
+ while (p != end)
+ {
+ next = g_utf8_next_char (p);
- c = g_utf8_get_char (p);
+ c = g_utf8_get_char (p);
- if (!g_unichar_isdigit (c)) {
- g_signal_stop_emission_by_name (editable, "insert_text");
- gtk_widget_error_bell (view->priv->search_entry);
- break;
- }
+ if (!g_unichar_isdigit (c)) {
+ g_signal_stop_emission_by_name (editable, "insert_text");
+ gtk_widget_error_bell (view->priv->search_entry);
+ break;
+ }
- p = next;
- }
- }
- else
- {
- /* SEARCH mode */
- static gboolean insert_text = FALSE;
- gchar *escaped_text;
- gint new_len;
+ p = next;
+ }
+ }
+ else
+ {
+ /* SEARCH mode */
+ static gboolean insert_text = FALSE;
+ gchar *escaped_text;
+ gint new_len;
- pluma_debug_message (DEBUG_SEARCH, "Text: %s", text);
+ pluma_debug_message (DEBUG_SEARCH, "Text: %s", text);
- /* To avoid recursive behavior */
- if (insert_text)
- return;
+ /* To avoid recursive behavior */
+ if (insert_text)
+ return;
- escaped_text = pluma_utils_escape_search_text (text);
+ escaped_text = pluma_utils_escape_search_text (text);
- pluma_debug_message (DEBUG_SEARCH, "Escaped Text: %s", escaped_text);
+ pluma_debug_message (DEBUG_SEARCH, "Escaped Text: %s", escaped_text);
- new_len = strlen (escaped_text);
+ new_len = strlen (escaped_text);
- if (new_len == length)
- {
- g_free (escaped_text);
- return;
- }
+ if (new_len == length)
+ {
+ g_free (escaped_text);
+ return;
+ }
- insert_text = TRUE;
+ insert_text = TRUE;
- g_signal_stop_emission_by_name (editable, "insert_text");
+ g_signal_stop_emission_by_name (editable, "insert_text");
- gtk_editable_insert_text (editable, escaped_text, new_len, position);
+ gtk_editable_insert_text (editable, escaped_text, new_len, position);
- insert_text = FALSE;
+ insert_text = FALSE;
- g_free (escaped_text);
- }
+ g_free (escaped_text);
+ }
}
static void
customize_for_search_mode (PlumaView *view)
{
- if (view->priv->search_mode == SEARCH)
- {
- gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
- GTK_ENTRY_ICON_PRIMARY,
- "edit-find");
+ if (view->priv->search_mode == SEARCH)
+ {
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "edit-find");
- gtk_widget_set_tooltip_text (view->priv->search_entry,
- _("String you want to search for"));
- }
- else
- {
- gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
- GTK_ENTRY_ICON_PRIMARY,
- "go-jump");
+ gtk_widget_set_tooltip_text (view->priv->search_entry,
+ _("String you want to search for"));
+ }
+ else
+ {
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (view->priv->search_entry),
+ GTK_ENTRY_ICON_PRIMARY,
+ "go-jump");
- gtk_widget_set_tooltip_text (view->priv->search_entry,
- _("Line you want to move the cursor to"));
- }
+ gtk_widget_set_tooltip_text (view->priv->search_entry,
+ _("Line you want to move the cursor to"));
+ }
}
static gboolean
completion_func (GtkEntryCompletion *completion,
const char *key,
- GtkTreeIter *iter,
- gpointer data)
+ GtkTreeIter *iter,
+ gpointer data)
{
- gchar *item = NULL;
- gboolean ret = FALSE;
- GtkTreeModel *model;
- PlumaViewPrivate *priv = (PlumaViewPrivate *)data;
- const gchar *real_key;
+ gchar *item = NULL;
+ gboolean ret = FALSE;
+ GtkTreeModel *model;
+ PlumaViewPrivate *priv = (PlumaViewPrivate *)data;
+ const gchar *real_key;
- if (priv->search_mode == GOTO_LINE)
- return FALSE;
+ if (priv->search_mode == GOTO_LINE)
+ return FALSE;
- real_key = gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry (completion)));
+ real_key = gtk_entry_get_text (GTK_ENTRY (gtk_entry_completion_get_entry (completion)));
- if (g_utf8_strlen (real_key, -1) <= MIN_SEARCH_COMPLETION_KEY_LEN)
- return FALSE;
+ if (g_utf8_strlen (real_key, -1) <= MIN_SEARCH_COMPLETION_KEY_LEN)
+ return FALSE;
- model = gtk_entry_completion_get_model (completion);
- g_return_val_if_fail (gtk_tree_model_get_column_type (model, 0) == G_TYPE_STRING,
- FALSE);
+ model = gtk_entry_completion_get_model (completion);
+ g_return_val_if_fail (gtk_tree_model_get_column_type (model, 0) == G_TYPE_STRING,
+ FALSE);
- gtk_tree_model_get (model,
- iter,
- 0,
- &item,
- -1);
+ gtk_tree_model_get (model,
+ iter,
+ 0,
+ &item,
+ -1);
- if (item == NULL)
- return FALSE;
+ if (item == NULL)
+ return FALSE;
- if (PLUMA_SEARCH_IS_CASE_SENSITIVE (priv->search_flags))
- {
- if (!strncmp (real_key, item, strlen (real_key)))
- ret = TRUE;
- }
- else
- {
- gchar *normalized_string;
- gchar *case_normalized_string;
+ if (PLUMA_SEARCH_IS_CASE_SENSITIVE (priv->search_flags))
+ {
+ if (!strncmp (real_key, item, strlen (real_key)))
+ ret = TRUE;
+ }
+ else
+ {
+ gchar *normalized_string;
+ gchar *case_normalized_string;
- normalized_string = g_utf8_normalize (item, -1, G_NORMALIZE_ALL);
- case_normalized_string = g_utf8_casefold (normalized_string, -1);
+ normalized_string = g_utf8_normalize (item, -1, G_NORMALIZE_ALL);
+ case_normalized_string = g_utf8_casefold (normalized_string, -1);
- if (!strncmp (key, case_normalized_string, strlen (key)))
- ret = TRUE;
+ if (!strncmp (key, case_normalized_string, strlen (key)))
+ ret = TRUE;
- g_free (normalized_string);
- g_free (case_normalized_string);
+ g_free (normalized_string);
+ g_free (case_normalized_string);
- }
+ }
- g_free (item);
+ g_free (item);
- return ret;
+ return ret;
}
static void
ensure_search_window (PlumaView *view)
{
- GtkWidget *frame;
- GtkWidget *vbox;
- GtkWidget *toplevel;
- GtkEntryCompletion *completion;
- GtkWindowGroup *group;
- GtkWindowGroup *search_group;
-
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
- group = gtk_window_get_group (GTK_WINDOW (toplevel));
- if (view->priv->search_window != NULL)
- search_group = gtk_window_get_group (GTK_WINDOW (view->priv->search_window));
-
- if (view->priv->search_window != NULL)
- {
- if (group)
- gtk_window_group_add_window (group,
- GTK_WINDOW (view->priv->search_window));
- else if (search_group)
- gtk_window_group_remove_window (search_group,
- GTK_WINDOW (view->priv->search_window));
-
- customize_for_search_mode (view);
-
- return;
- }
-
- view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
-
- if (group)
- gtk_window_group_add_window (group,
- GTK_WINDOW (view->priv->search_window));
-
- gtk_window_set_modal (GTK_WINDOW (view->priv->search_window), TRUE);
-
- g_signal_connect (view->priv->search_window, "delete_event",
- G_CALLBACK (search_window_delete_event),
- view);
- g_signal_connect (view->priv->search_window, "key_press_event",
- G_CALLBACK (search_window_key_press_event),
- view);
- g_signal_connect (view->priv->search_window, "button_press_event",
- G_CALLBACK (search_window_button_press_event),
- view);
- g_signal_connect (view->priv->search_window, "scroll_event",
- G_CALLBACK (search_window_scroll_event),
- view);
-
- frame = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
- gtk_widget_show (frame);
- gtk_container_add (GTK_CONTAINER (view->priv->search_window), frame);
-
- vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_widget_show (vbox);
- gtk_container_add (GTK_CONTAINER (frame), vbox);
- gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
-
- /* add entry */
- view->priv->search_entry = gtk_entry_new ();
- gtk_widget_show (view->priv->search_entry);
-
- g_signal_connect (view->priv->search_entry, "populate_popup",
- G_CALLBACK (search_entry_populate_popup),
- view);
- g_signal_connect (view->priv->search_entry, "activate",
- G_CALLBACK (search_entry_activate),
- view);
- g_signal_connect (view->priv->search_entry,
- "insert_text",
- G_CALLBACK (search_entry_insert_text),
- view);
-
- gtk_container_add (GTK_CONTAINER (vbox),
- view->priv->search_entry);
-
- if (search_completion_model == NULL)
- {
- /* Create a tree model and use it as the completion model */
- search_completion_model = gtk_list_store_new (1, G_TYPE_STRING);
- }
-
- /* Create the completion object for the search entry */
- completion = gtk_entry_completion_new ();
- gtk_entry_completion_set_model (completion,
- GTK_TREE_MODEL (search_completion_model));
-
- /* Use model column 0 as the text column */
- gtk_entry_completion_set_text_column (completion, 0);
-
- gtk_entry_completion_set_minimum_key_length (completion,
- MIN_SEARCH_COMPLETION_KEY_LEN);
-
- gtk_entry_completion_set_popup_completion (completion, FALSE);
- gtk_entry_completion_set_inline_completion (completion, TRUE);
-
- gtk_entry_completion_set_match_func (completion,
- completion_func,
- view->priv,
- NULL);
-
- /* Assign the completion to the entry */
- gtk_entry_set_completion (GTK_ENTRY (view->priv->search_entry),
- completion);
- g_object_unref (completion);
-
- gtk_widget_realize (view->priv->search_entry);
-
- customize_for_search_mode (view);
+ GtkWidget *frame;
+ GtkWidget *vbox;
+ GtkWidget *toplevel;
+ GtkEntryCompletion *completion;
+ GtkWindowGroup *group;
+ GtkWindowGroup *search_group;
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
+ group = gtk_window_get_group (GTK_WINDOW (toplevel));
+ if (view->priv->search_window != NULL)
+ search_group = gtk_window_get_group (GTK_WINDOW (view->priv->search_window));
+
+ if (view->priv->search_window != NULL)
+ {
+ if (group)
+ gtk_window_group_add_window (group,
+ GTK_WINDOW (view->priv->search_window));
+ else if (search_group)
+ gtk_window_group_remove_window (search_group,
+ GTK_WINDOW (view->priv->search_window));
+
+ customize_for_search_mode (view);
+
+ return;
+ }
+
+ view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
+
+ if (group)
+ gtk_window_group_add_window (group,
+ GTK_WINDOW (view->priv->search_window));
+
+ gtk_window_set_modal (GTK_WINDOW (view->priv->search_window), TRUE);
+
+ g_signal_connect (view->priv->search_window, "delete_event",
+ G_CALLBACK (search_window_delete_event),
+ view);
+ g_signal_connect (view->priv->search_window, "key_press_event",
+ G_CALLBACK (search_window_key_press_event),
+ view);
+ g_signal_connect (view->priv->search_window, "button_press_event",
+ G_CALLBACK (search_window_button_press_event),
+ view);
+ g_signal_connect (view->priv->search_window, "scroll_event",
+ G_CALLBACK (search_window_scroll_event),
+ view);
+
+ frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
+ gtk_widget_show (frame);
+ gtk_container_add (GTK_CONTAINER (view->priv->search_window), frame);
+
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
+ gtk_widget_show (vbox);
+ gtk_container_add (GTK_CONTAINER (frame), vbox);
+ gtk_container_set_border_width (GTK_CONTAINER (vbox), 3);
+
+ /* add entry */
+ view->priv->search_entry = gtk_entry_new ();
+ gtk_widget_show (view->priv->search_entry);
+
+ g_signal_connect (view->priv->search_entry, "populate_popup",
+ G_CALLBACK (search_entry_populate_popup),
+ view);
+ g_signal_connect (view->priv->search_entry, "activate",
+ G_CALLBACK (search_entry_activate),
+ view);
+ g_signal_connect (view->priv->search_entry,
+ "insert_text",
+ G_CALLBACK (search_entry_insert_text),
+ view);
+
+ gtk_container_add (GTK_CONTAINER (vbox),
+ view->priv->search_entry);
+
+ if (search_completion_model == NULL)
+ {
+ /* Create a tree model and use it as the completion model */
+ search_completion_model = gtk_list_store_new (1, G_TYPE_STRING);
+ }
+
+ /* Create the completion object for the search entry */
+ completion = gtk_entry_completion_new ();
+ gtk_entry_completion_set_model (completion,
+ GTK_TREE_MODEL (search_completion_model));
+
+ /* Use model column 0 as the text column */
+ gtk_entry_completion_set_text_column (completion, 0);
+
+ gtk_entry_completion_set_minimum_key_length (completion,
+ MIN_SEARCH_COMPLETION_KEY_LEN);
+
+ gtk_entry_completion_set_popup_completion (completion, FALSE);
+ gtk_entry_completion_set_inline_completion (completion, TRUE);
+
+ gtk_entry_completion_set_match_func (completion,
+ completion_func,
+ view->priv,
+ NULL);
+
+ /* Assign the completion to the entry */
+ gtk_entry_set_completion (GTK_ENTRY (view->priv->search_entry),
+ completion);
+ g_object_unref (completion);
+
+ gtk_widget_realize (view->priv->search_entry);
+
+ customize_for_search_mode (view);
}
static gboolean
get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
{
- GtkTextIter start, end;
+ GtkTextIter start, end;
- g_return_val_if_fail (selected_text != NULL, FALSE);
- g_return_val_if_fail (*selected_text == NULL, FALSE);
+ g_return_val_if_fail (selected_text != NULL, FALSE);
+ g_return_val_if_fail (*selected_text == NULL, FALSE);
- if (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
- {
- if (len != NULL)
- len = 0;
+ if (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
+ {
+ if (len != NULL)
+ len = 0;
- return FALSE;
- }
+ return FALSE;
+ }
- *selected_text = gtk_text_buffer_get_slice (doc, &start, &end, TRUE);
+ *selected_text = gtk_text_buffer_get_slice (doc, &start, &end, TRUE);
- if (len != NULL)
- *len = g_utf8_strlen (*selected_text, -1);
+ if (len != NULL)
+ *len = g_utf8_strlen (*selected_text, -1);
- return TRUE;
+ return TRUE;
}
static void
init_search_entry (PlumaView *view)
{
- GtkTextBuffer *buffer;
-
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ GtkTextBuffer *buffer;
- if (view->priv->search_mode == GOTO_LINE)
- {
- gint line;
- gchar *line_str;
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+ if (view->priv->search_mode == GOTO_LINE)
+ {
+ gint line;
+ gchar *line_str;
- line_str = g_strdup_printf ("%d", line + 1);
+ line = gtk_text_iter_get_line (&view->priv->start_search_iter);
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- line_str);
+ line_str = g_strdup_printf ("%d", line + 1);
- g_free (line_str);
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
+ line_str);
- return;
- }
- else
- {
- /* SEARCH mode */
- gboolean selection_exists;
- gchar *find_text = NULL;
- gchar *old_find_text;
- guint old_find_flags = 0;
- gint sel_len = 0;
+ g_free (line_str);
- old_find_text = pluma_document_get_search_text (PLUMA_DOCUMENT (buffer),
- &old_find_flags);
- if (old_find_text != NULL)
- {
- g_free (view->priv->old_search_text);
- view->priv->old_search_text = old_find_text;
- add_search_completion_entry (old_find_text);
- }
+ return;
+ }
+ else
+ {
+ /* SEARCH mode */
+ gboolean selection_exists;
+ gchar *find_text = NULL;
+ gchar *old_find_text;
+ guint old_find_flags = 0;
+ gint sel_len = 0;
+
+ old_find_text = pluma_document_get_search_text (PLUMA_DOCUMENT (buffer),
+ &old_find_flags);
+ if (old_find_text != NULL)
+ {
+ g_free (view->priv->old_search_text);
+ view->priv->old_search_text = old_find_text;
+ add_search_completion_entry (old_find_text);
+ }
- if (old_find_flags != 0)
- {
- view->priv->old_search_flags = old_find_flags;
- }
+ if (old_find_flags != 0)
+ {
+ view->priv->old_search_flags = old_find_flags;
+ }
- selection_exists = get_selected_text (buffer,
- &find_text,
- &sel_len);
+ selection_exists = get_selected_text (buffer,
+ &find_text,
+ &sel_len);
- if (selection_exists && (find_text != NULL) && (sel_len <= 160))
- {
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- find_text);
- }
- else
- {
- gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry),
- "");
- }
+ if (selection_exists && (find_text != NULL) && (sel_len <= 160))
+ {
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry), find_text);
+ }
+ else
+ {
+ gtk_entry_set_text (GTK_ENTRY (view->priv->search_entry), "");
+ }
- g_free (find_text);
- }
+ g_free (find_text);
+ }
}
static void
search_init (GtkWidget *entry,
- PlumaView *view)
-{
- PlumaDocument *doc;
- const gchar *entry_text;
-
- /* renew the flush timeout */
- if (view->priv->typeselect_flush_timeout != 0)
- {
- g_source_remove (view->priv->typeselect_flush_timeout);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc)search_entry_flush_timeout,
- view);
- }
-
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
-
- entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
-
- if (view->priv->search_mode == SEARCH)
- {
- gchar *search_text;
- guint search_flags;
-
- search_text = pluma_document_get_search_text (doc, &search_flags);
-
- if ((search_text == NULL) ||
- (strcmp (search_text, entry_text) != 0) ||
- search_flags != view->priv->search_flags)
- {
- pluma_document_set_search_text (doc,
- entry_text,
- view->priv->search_flags);
- }
-
- g_free (search_text);
-
- run_search (view,
- entry_text,
- FALSE,
- view->priv->wrap_around,
- TRUE);
- }
- else
- {
- if (*entry_text != '\0')
- {
- gboolean moved, moved_offset;
- gint line;
- gint offset_line = 0;
- gint line_offset = 0;
- gchar **split_text = NULL;
- const gchar *text;
-
- split_text = g_strsplit (entry_text, ":", -1);
-
- if (g_strv_length (split_text) > 1)
- {
- text = split_text[0];
- }
- else
- {
- text = entry_text;
- }
-
- if (*text == '-')
- {
- gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
-
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
-
- line = MAX (cur_line - offset_line, 0);
- }
- else if (*entry_text == '+')
- {
- gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
-
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
-
- line = cur_line + offset_line;
- }
- else
- {
- line = MAX (atoi (text) - 1, 0);
- }
-
- if (split_text[1] != NULL)
- {
- line_offset = atoi (split_text[1]);
- }
-
- g_strfreev (split_text);
-
- moved = pluma_document_goto_line (doc, line);
- moved_offset = pluma_document_goto_line_offset (doc, line,
- line_offset);
-
- pluma_view_scroll_to_cursor (view);
-
- if (!moved || !moved_offset)
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NOT_FOUND);
- else
- set_entry_state (view->priv->search_entry,
- PLUMA_SEARCH_ENTRY_NORMAL);
- }
- }
+ PlumaView *view)
+{
+ PlumaDocument *doc;
+ const gchar *entry_text;
+
+ /* renew the flush timeout */
+ if (view->priv->typeselect_flush_timeout != 0)
+ {
+ g_source_remove (view->priv->typeselect_flush_timeout);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc)search_entry_flush_timeout,
+ view);
+ }
+
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+
+ entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
+
+ if (view->priv->search_mode == SEARCH)
+ {
+ gchar *search_text;
+ guint search_flags;
+
+ search_text = pluma_document_get_search_text (doc, &search_flags);
+
+ if ((search_text == NULL) ||
+ (strcmp (search_text, entry_text) != 0) ||
+ search_flags != view->priv->search_flags)
+ {
+ pluma_document_set_search_text (doc,
+ entry_text,
+ view->priv->search_flags);
+ }
+
+ g_free (search_text);
+
+ run_search (view,
+ entry_text,
+ FALSE,
+ view->priv->wrap_around,
+ TRUE);
+ }
+ else
+ {
+ if (*entry_text != '\0')
+ {
+ gboolean moved, moved_offset;
+ gint line;
+ gint offset_line = 0;
+ gint line_offset = 0;
+ gchar **split_text = NULL;
+ const gchar *text;
+
+ split_text = g_strsplit (entry_text, ":", -1);
+
+ if (g_strv_length (split_text) > 1)
+ {
+ text = split_text[0];
+ }
+ else
+ {
+ text = entry_text;
+ }
+
+ if (*text == '-')
+ {
+ gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+
+ if (*(text + 1) != '\0')
+ offset_line = MAX (atoi (text + 1), 0);
+
+ line = MAX (cur_line - offset_line, 0);
+ }
+ else if (*entry_text == '+')
+ {
+ gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
+
+ if (*(text + 1) != '\0')
+ offset_line = MAX (atoi (text + 1), 0);
+
+ line = cur_line + offset_line;
+ }
+ else
+ {
+ line = MAX (atoi (text) - 1, 0);
+ }
+
+ if (split_text[1] != NULL)
+ {
+ line_offset = atoi (split_text[1]);
+ }
+
+ g_strfreev (split_text);
+
+ moved = pluma_document_goto_line (doc, line);
+ moved_offset = pluma_document_goto_line_offset (doc, line, line_offset);
+
+ pluma_view_scroll_to_cursor (view);
+
+ if (!moved || !moved_offset)
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NOT_FOUND);
+ else
+ set_entry_state (view->priv->search_entry,
+ PLUMA_SEARCH_ENTRY_NORMAL);
+ }
+ }
}
static gboolean
start_interactive_search_real (PlumaView *view)
{
- GtkTextBuffer *buffer;
+ GtkTextBuffer *buffer;
- if ((view->priv->search_window != NULL) &&
- gtk_widget_get_visible (view->priv->search_window))
- return TRUE;
+ if ((view->priv->search_window != NULL) &&
+ gtk_widget_get_visible (view->priv->search_window))
+ return TRUE;
- if (!gtk_widget_has_focus (GTK_WIDGET (view)))
- return FALSE;
+ if (!gtk_widget_has_focus (GTK_WIDGET (view)))
+ return FALSE;
- buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
+ buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
- if (view->priv->search_mode == SEARCH)
- gtk_text_buffer_get_selection_bounds (buffer, &view->priv->start_search_iter, NULL);
- else
- gtk_text_buffer_get_iter_at_mark (buffer,
- &view->priv->start_search_iter,
- gtk_text_buffer_get_insert (buffer));
+ if (view->priv->search_mode == SEARCH)
+ gtk_text_buffer_get_selection_bounds (buffer, &view->priv->start_search_iter, NULL);
+ else
+ gtk_text_buffer_get_iter_at_mark (buffer,
+ &view->priv->start_search_iter,
+ gtk_text_buffer_get_insert (buffer));
- ensure_search_window (view);
+ ensure_search_window (view);
- /* done, show it */
- update_search_window_position (view);
- gtk_widget_show (view->priv->search_window);
+ /* done, show it */
+ update_search_window_position (view);
+ gtk_widget_show (view->priv->search_window);
- if (view->priv->search_entry_changed_id == 0)
- {
- view->priv->search_entry_changed_id =
- g_signal_connect (view->priv->search_entry,
- "changed",
- G_CALLBACK (search_init),
- view);
- }
+ if (view->priv->search_entry_changed_id == 0)
+ {
+ view->priv->search_entry_changed_id =
+ g_signal_connect (view->priv->search_entry,
+ "changed",
+ G_CALLBACK (search_init),
+ view);
+ }
- init_search_entry (view);
+ init_search_entry (view);
- view->priv->typeselect_flush_timeout =
- g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
- (GSourceFunc) search_entry_flush_timeout,
- view);
+ view->priv->typeselect_flush_timeout =
+ g_timeout_add (PLUMA_VIEW_SEARCH_DIALOG_TIMEOUT,
+ (GSourceFunc) search_entry_flush_timeout,
+ view);
- gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
- gtk_widget_grab_focus (view->priv->search_entry);
+ gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW (view), FALSE);
+ gtk_widget_grab_focus (view->priv->search_entry);
- send_focus_change (view->priv->search_entry, TRUE);
+ send_focus_change (view->priv->search_entry, TRUE);
- return TRUE;
+ return TRUE;
}
static gboolean
reset_searched_text (PlumaView *view)
{
- PlumaDocument *doc;
+ PlumaDocument *doc;
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
- pluma_document_set_search_text (doc, "", PLUMA_SEARCH_DONT_SET_FLAGS);
+ pluma_document_set_search_text (doc, "", PLUMA_SEARCH_DONT_SET_FLAGS);
- return TRUE;
+ return TRUE;
}
static gboolean
start_interactive_search (PlumaView *view)
{
- view->priv->search_mode = SEARCH;
+ view->priv->search_mode = SEARCH;
- return start_interactive_search_real (view);
+ return start_interactive_search_real (view);
}
static gboolean
start_interactive_goto_line (PlumaView *view)
{
- view->priv->search_mode = GOTO_LINE;
+ view->priv->search_mode = GOTO_LINE;
- return start_interactive_search_real (view);
+ return start_interactive_search_real (view);
}
static gboolean
-pluma_view_draw (GtkWidget *widget,
- cairo_t *cr)
+pluma_view_draw (GtkWidget *widget,
+ cairo_t *cr)
{
- GtkTextView *text_view;
- PlumaDocument *doc;
- GdkWindow *window;
-
- text_view = GTK_TEXT_VIEW (widget);
+ GtkTextView *text_view;
+ PlumaDocument *doc;
+ GdkWindow *window;
- doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view));
- window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
- if (gtk_cairo_should_draw_window (cr, window) &&
- pluma_document_get_enable_search_highlighting (doc))
- {
- GdkRectangle visible_rect;
- GtkTextIter iter1, iter2;
+ text_view = GTK_TEXT_VIEW (widget);
- gtk_text_view_get_visible_rect (text_view, &visible_rect);
- gtk_text_view_get_line_at_y (text_view, &iter1,
- visible_rect.y, NULL);
- gtk_text_view_get_line_at_y (text_view, &iter2,
- visible_rect.y
- + visible_rect.height, NULL);
- gtk_text_iter_forward_line (&iter2);
+ doc = PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view));
+ window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
- _pluma_document_search_region (doc,
- &iter1,
- &iter2);
- }
+ if (gtk_cairo_should_draw_window (cr, window) &&
+ pluma_document_get_enable_search_highlighting (doc))
+ {
+ GdkRectangle visible_rect;
+ GtkTextIter iter1, iter2;
+
+ gtk_text_view_get_visible_rect (text_view, &visible_rect);
+ gtk_text_view_get_line_at_y (text_view, &iter1,
+ visible_rect.y, NULL);
+ gtk_text_view_get_line_at_y (text_view, &iter2,
+ visible_rect.y
+ + visible_rect.height, NULL);
+ gtk_text_iter_forward_line (&iter2);
+
+ _pluma_document_search_region (doc,
+ &iter1,
+ &iter2);
+ }
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->draw (widget, cr);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->draw (widget, cr);
}
static GdkAtom
drag_get_uri_target (GtkWidget *widget,
- GdkDragContext *context)
+ GdkDragContext *context)
{
- GdkAtom target;
- GtkTargetList *tl;
+ GdkAtom target;
+ GtkTargetList *tl;
- tl = gtk_target_list_new (NULL, 0);
- gtk_target_list_add_uri_targets (tl, 0);
+ tl = gtk_target_list_new (NULL, 0);
+ gtk_target_list_add_uri_targets (tl, 0);
- target = gtk_drag_dest_find_target (widget, context, tl);
- gtk_target_list_unref (tl);
+ target = gtk_drag_dest_find_target (widget, context, tl);
+ gtk_target_list_unref (tl);
- return target;
+ return target;
}
static gboolean
pluma_view_drag_motion (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp)
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp)
{
- gboolean result;
+ gboolean result;
- /* Chain up to allow textview to scroll and position dnd mark, note
- * that this needs to be checked if gtksourceview or gtktextview
- * changes drag_motion behaviour */
- result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
+ /* Chain up to allow textview to scroll and position dnd mark, note
+ * that this needs to be checked if gtksourceview or gtktextview
+ * changes drag_motion behaviour */
+ result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
- /* If this is a URL, deal with it here */
- if (drag_get_uri_target (widget, context) != GDK_NONE)
- {
- gdk_drag_status (context,
- gdk_drag_context_get_suggested_action (context),
- timestamp);
- result = TRUE;
- }
+ /* If this is a URL, deal with it here */
+ if (drag_get_uri_target (widget, context) != GDK_NONE)
+ {
+ gdk_drag_status (context,
+ gdk_drag_context_get_suggested_action (context),
+ timestamp);
+ result = TRUE;
+ }
- return result;
+ return result;
}
static void
pluma_view_drag_data_received (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- GtkSelectionData *selection_data,
- guint info,
- guint timestamp)
-{
- gchar **uri_list;
-
- /* If this is an URL emit DROP_URIS, otherwise chain up the signal */
- if (info == TARGET_URI_LIST)
- {
- uri_list = pluma_utils_drop_get_uris (selection_data);
-
- if (uri_list != NULL)
- {
- g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
- g_strfreev (uri_list);
-
- gtk_drag_finish (context, TRUE, FALSE, timestamp);
- }
- }
- else
- {
- GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info, timestamp);
- }
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ GtkSelectionData *selection_data,
+ guint info,
+ guint timestamp)
+{
+ gchar **uri_list;
+
+ /* If this is an URL emit DROP_URIS, otherwise chain up the signal */
+ if (info == TARGET_URI_LIST)
+ {
+ uri_list = pluma_utils_drop_get_uris (selection_data);
+
+ if (uri_list != NULL)
+ {
+ g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
+ g_strfreev (uri_list);
+
+ gtk_drag_finish (context, TRUE, FALSE, timestamp);
+ }
+ }
+ else
+ {
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info, timestamp);
+ }
}
static gboolean
pluma_view_drag_drop (GtkWidget *widget,
- GdkDragContext *context,
- gint x,
- gint y,
- guint timestamp)
+ GdkDragContext *context,
+ gint x,
+ gint y,
+ guint timestamp)
{
- gboolean result;
- GdkAtom target;
+ gboolean result;
+ GdkAtom target;
- /* If this is a URL, just get the drag data */
- target = drag_get_uri_target (widget, context);
+ /* If this is a URL, just get the drag data */
+ target = drag_get_uri_target (widget, context);
- if (target != GDK_NONE)
- {
- gtk_drag_get_data (widget, context, target, timestamp);
- result = TRUE;
- }
- else
- {
- /* Chain up */
- result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
- }
+ if (target != GDK_NONE)
+ {
+ gtk_drag_get_data (widget, context, target, timestamp);
+ result = TRUE;
+ }
+ else
+ {
+ /* Chain up */
+ result = GTK_WIDGET_CLASS (pluma_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
+ }
- return result;
+ return result;
}
static GtkWidget *
create_line_numbers_menu (GtkWidget *view)
{
- GtkWidget *menu;
- GtkWidget *item;
+ GtkWidget *menu;
+ GtkWidget *item;
- menu = gtk_menu_new ();
+ menu = gtk_menu_new ();
- item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
- gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
+ item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+ gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
- g_settings_bind (PLUMA_VIEW (view)->priv->editor_settings,
- PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS,
- item,
- "active",
- G_SETTINGS_BIND_SET);
+ g_settings_bind (PLUMA_VIEW (view)->priv->editor_settings,
+ PLUMA_SETTINGS_DISPLAY_LINE_NUMBERS,
+ item,
+ "active",
+ G_SETTINGS_BIND_SET);
- gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
- gtk_widget_show_all (menu);
+ gtk_widget_show_all (menu);
- return menu;
+ return menu;
}
static void
show_line_numbers_menu (GtkWidget *view,
- GdkEventButton *event)
+ GdkEventButton *event)
+{
+ GtkWidget *menu;
+
+ menu = create_line_numbers_menu (view);
+
+ gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
+}
+
+static void
+extension_added (PeasExtensionSet *extensions,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaView *view)
+{
+ pluma_view_activatable_activate (PLUMA_VIEW_ACTIVATABLE (exten));
+}
+
+static void
+extension_removed (PeasExtensionSet *extensions,
+ PeasPluginInfo *info,
+ PeasExtension *exten,
+ PlumaView *view)
+{
+ pluma_view_activatable_deactivate (PLUMA_VIEW_ACTIVATABLE (exten));
+}
+
+static void
+pluma_view_realize (GtkWidget *widget)
+{
+ PlumaView *view = PLUMA_VIEW (widget);
+
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->realize (widget);
+
+ g_signal_connect (view->priv->extensions, "extension-added",
+ G_CALLBACK (extension_added),
+ view);
+ g_signal_connect (view->priv->extensions, "extension-removed",
+ G_CALLBACK (extension_removed),
+ view);
+
+ /* We only activate the extensions when the view is realized,
+ * because most plugins will expect this behaviour, and we won't
+ * change the buffer later anyway. */
+ peas_extension_set_foreach (view->priv->extensions,
+ (PeasExtensionSetForeachFunc) extension_added,
+ view);
+}
+
+static void
+pluma_view_unrealize (GtkWidget *widget)
{
- GtkWidget *menu;
+ PlumaView *view = PLUMA_VIEW (widget);
- menu = create_line_numbers_menu (view);
+ g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_added, view);
+ g_signal_handlers_disconnect_by_func (view->priv->extensions, extension_removed, view);
- gtk_menu_popup_at_pointer (GTK_MENU (menu), NULL);
+ /* We need to deactivate the extension on unrealize because it is not
+ mandatory that a view has been realized when we dispose it, leading
+ to deactivating the plugin without being activated */
+ peas_extension_set_foreach (view->priv->extensions,
+ (PeasExtensionSetForeachFunc) extension_removed,
+ view);
+
+ GTK_WIDGET_CLASS (pluma_view_parent_class)->unrealize (widget);
}
+
static gboolean
pluma_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
{
- static gchar *primtxt = "";
+ static gchar *primtxt = "";
- gchar *txt_clip = gtk_clipboard_wait_for_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY));
+ gchar *txt_clip = gtk_clipboard_wait_for_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY));
- if (txt_clip)
- {
- primtxt = g_strdup (txt_clip);
- g_free (txt_clip);
- }
- else
- gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY), primtxt, strlen (primtxt));
+ if (txt_clip)
+ {
+ primtxt = g_strdup (txt_clip);
+ g_free (txt_clip);
+ }
+ else
+ gtk_clipboard_set_text (gtk_clipboard_get (GDK_SELECTION_PRIMARY), primtxt, strlen (primtxt));
- if ((event->type == GDK_BUTTON_PRESS) &&
- (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
- GTK_TEXT_WINDOW_LEFT)))
- {
- if (event->button == 3)
- show_line_numbers_menu (widget, event);
+ if ((event->type == GDK_BUTTON_PRESS) &&
+ (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
+ GTK_TEXT_WINDOW_LEFT)))
+ {
+ if (event->button == 3)
+ show_line_numbers_menu (widget, event);
- return TRUE;
- }
+ return TRUE;
+ }
- if ((event->button == 2) || (event->button == 3))
- {
- if (middle_or_right_down)
- {
- middle_or_right_down = FALSE;
- return TRUE;
- }
- else
- middle_or_right_down = TRUE;
- }
+ if ((event->button == 2) || (event->button == 3))
+ {
+ if (middle_or_right_down)
+ {
+ middle_or_right_down = FALSE;
+ return TRUE;
+ }
+ else
+ middle_or_right_down = TRUE;
+ }
- if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1) &&
- (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT)))
- return TRUE;
+ if ((event->type == GDK_2BUTTON_PRESS) && (event->button == 1) &&
+ (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_TEXT)))
+ return TRUE;
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_press_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_press_event (widget, event);
}
static gboolean
pluma_view_button_release_event (GtkWidget *widget, GdkEventButton *event)
{
- if (event->button == 2)
- middle_or_right_down = FALSE;
+ if (event->button == 2)
+ middle_or_right_down = FALSE;
- return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_release_event (widget, event);
+ return GTK_WIDGET_CLASS (pluma_view_parent_class)->button_release_event (widget, event);
}
static void
pluma_view_populate_popup (GtkTextView *text_view, GtkWidget *widget)
{
- middle_or_right_down = FALSE;
+ middle_or_right_down = FALSE;
}
static void
search_highlight_updated_cb (PlumaDocument *doc,
- GtkTextIter *start,
- GtkTextIter *end,
- PlumaView *view)
-{
- GdkRectangle visible_rect;
- GdkRectangle updated_rect;
- GdkRectangle redraw_rect;
- gint y;
- gint height;
- GtkTextView *text_view;
-
- text_view = GTK_TEXT_VIEW (view);
-
- g_return_if_fail (pluma_document_get_enable_search_highlighting (
- PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view))));
-
- /* get visible area */
- gtk_text_view_get_visible_rect (text_view, &visible_rect);
-
- /* get updated rectangle */
- gtk_text_view_get_line_yrange (text_view, start, &y, &height);
- updated_rect.y = y;
- gtk_text_view_get_line_yrange (text_view, end, &y, &height);
- updated_rect.height = y + height - updated_rect.y;
- updated_rect.x = visible_rect.x;
- updated_rect.width = visible_rect.width;
-
- /* intersect both rectangles to see whether we need to queue a redraw */
- if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect))
- {
- GdkRectangle widget_rect;
-
- gtk_text_view_buffer_to_window_coords (text_view,
- GTK_TEXT_WINDOW_WIDGET,
- redraw_rect.x,
- redraw_rect.y,
- &widget_rect.x,
- &widget_rect.y);
-
- widget_rect.width = redraw_rect.width;
- widget_rect.height = redraw_rect.height;
-
- gtk_widget_queue_draw_area (GTK_WIDGET (text_view),
- widget_rect.x,
- widget_rect.y,
- widget_rect.width,
- widget_rect.height);
- }
+ GtkTextIter *start,
+ GtkTextIter *end,
+ PlumaView *view)
+{
+ GdkRectangle visible_rect;
+ GdkRectangle updated_rect;
+ GdkRectangle redraw_rect;
+ gint y;
+ gint height;
+ GtkTextView *text_view;
+
+ text_view = GTK_TEXT_VIEW (view);
+
+ g_return_if_fail (pluma_document_get_enable_search_highlighting (
+ PLUMA_DOCUMENT (gtk_text_view_get_buffer (text_view))));
+
+ /* get visible area */
+ gtk_text_view_get_visible_rect (text_view, &visible_rect);
+
+ /* get updated rectangle */
+ gtk_text_view_get_line_yrange (text_view, start, &y, &height);
+ updated_rect.y = y;
+ gtk_text_view_get_line_yrange (text_view, end, &y, &height);
+ updated_rect.height = y + height - updated_rect.y;
+ updated_rect.x = visible_rect.x;
+ updated_rect.width = visible_rect.width;
+
+ /* intersect both rectangles to see whether we need to queue a redraw */
+ if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect))
+ {
+ GdkRectangle widget_rect;
+
+ gtk_text_view_buffer_to_window_coords (text_view,
+ GTK_TEXT_WINDOW_WIDGET,
+ redraw_rect.x,
+ redraw_rect.y,
+ &widget_rect.x,
+ &widget_rect.y);
+
+ widget_rect.width = redraw_rect.width;
+ widget_rect.height = redraw_rect.height;
+
+ gtk_widget_queue_draw_area (GTK_WIDGET (text_view),
+ widget_rect.x,
+ widget_rect.y,
+ widget_rect.width,
+ widget_rect.height);
+ }
}
static void
delete_line (GtkTextView *text_view,
- gint count)
-{
- GtkTextIter start;
- GtkTextIter end;
- GtkTextBuffer *buffer;
-
- buffer = gtk_text_view_get_buffer (text_view);
-
- gtk_text_view_reset_im_context (text_view);
-
- /* If there is a selection delete the selected lines and
- * ignore count */
- if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
- {
- gtk_text_iter_order (&start, &end);
-
- if (gtk_text_iter_starts_line (&end))
- {
- /* Do no delete the line with the cursor if the cursor
- * is at the beginning of the line */
- count = 0;
- }
- else
- count = 1;
- }
-
- gtk_text_iter_set_line_offset (&start, 0);
-
- if (count > 0)
- {
- gtk_text_iter_forward_lines (&end, count);
-
- if (gtk_text_iter_is_end (&end))
- {
- if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start))
- gtk_text_iter_forward_to_line_end (&start);
- }
- }
- else if (count < 0)
- {
- if (!gtk_text_iter_ends_line (&end))
- gtk_text_iter_forward_to_line_end (&end);
-
- while (count < 0)
- {
- if (!gtk_text_iter_backward_line (&start))
- break;
-
- ++count;
- }
-
- if (count == 0)
- {
- if (!gtk_text_iter_ends_line (&start))
- gtk_text_iter_forward_to_line_end (&start);
- }
- else
- gtk_text_iter_forward_line (&end);
- }
-
- if (!gtk_text_iter_equal (&start, &end))
- {
- GtkTextIter cur = start;
- gtk_text_iter_set_line_offset (&cur, 0);
-
- gtk_text_buffer_begin_user_action (buffer);
-
- gtk_text_buffer_place_cursor (buffer, &cur);
-
- gtk_text_buffer_delete_interactive (buffer,
- &start,
- &end,
- gtk_text_view_get_editable (text_view));
-
- gtk_text_buffer_end_user_action (buffer);
-
- gtk_text_view_scroll_mark_onscreen (text_view,
- gtk_text_buffer_get_insert (buffer));
- }
- else
- {
- gtk_widget_error_bell (GTK_WIDGET (text_view));
- }
+ gint count)
+{
+ GtkTextIter start;
+ GtkTextIter end;
+ GtkTextBuffer *buffer;
+
+ buffer = gtk_text_view_get_buffer (text_view);
+
+ gtk_text_view_reset_im_context (text_view);
+
+ /* If there is a selection delete the selected lines and
+ * ignore count */
+ if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
+ {
+ gtk_text_iter_order (&start, &end);
+
+ if (gtk_text_iter_starts_line (&end))
+ {
+ /* Do no delete the line with the cursor if the cursor
+ * is at the beginning of the line */
+ count = 0;
+ }
+ else
+ count = 1;
+ }
+
+ gtk_text_iter_set_line_offset (&start, 0);
+
+ if (count > 0)
+ {
+ gtk_text_iter_forward_lines (&end, count);
+
+ if (gtk_text_iter_is_end (&end))
+ {
+ if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start))
+ gtk_text_iter_forward_to_line_end (&start);
+ }
+ }
+ else if (count < 0)
+ {
+ if (!gtk_text_iter_ends_line (&end))
+ gtk_text_iter_forward_to_line_end (&end);
+
+ while (count < 0)
+ {
+ if (!gtk_text_iter_backward_line (&start))
+ break;
+
+ ++count;
+ }
+
+ if (count == 0)
+ {
+ if (!gtk_text_iter_ends_line (&start))
+ gtk_text_iter_forward_to_line_end (&start);
+ }
+ else
+ gtk_text_iter_forward_line (&end);
+ }
+
+ if (!gtk_text_iter_equal (&start, &end))
+ {
+ GtkTextIter cur = start;
+ gtk_text_iter_set_line_offset (&cur, 0);
+
+ gtk_text_buffer_begin_user_action (buffer);
+
+ gtk_text_buffer_place_cursor (buffer, &cur);
+
+ gtk_text_buffer_delete_interactive (buffer,
+ &start,
+ &end,
+ gtk_text_view_get_editable (text_view));
+
+ gtk_text_buffer_end_user_action (buffer);
+
+ gtk_text_view_scroll_mark_onscreen (text_view,
+ gtk_text_buffer_get_insert (buffer));
+ }
+ else
+ {
+ gtk_widget_error_bell (GTK_WIDGET (text_view));
+ }
}
static void
pluma_view_delete_from_cursor (GtkTextView *text_view,
- GtkDeleteType type,
- gint count)
-{
- /* We override the standard handler for delete_from_cursor since
- the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
- does not remove the carriage return in the previous line)
- */
- switch (type)
- {
- case GTK_DELETE_PARAGRAPHS:
- delete_line (text_view, count);
- break;
- default:
- GTK_TEXT_VIEW_CLASS (pluma_view_parent_class)->delete_from_cursor(text_view, type, count);
- break;
- }
+ GtkDeleteType type,
+ gint count)
+{
+ /* We override the standard handler for delete_from_cursor since
+ the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
+ does not remove the carriage return in the previous line)
+ */
+ switch (type)
+ {
+ case GTK_DELETE_PARAGRAPHS:
+ delete_line (text_view, count);
+ break;
+ default:
+ GTK_TEXT_VIEW_CLASS (pluma_view_parent_class)->delete_from_cursor(text_view, type, count);
+ break;
+ }
}