Reformated code to conform to Mint coding style
As discussed within the team.
This commit is contained in:
parent
f4236351ae
commit
26d0ac85a0
|
@ -14,26 +14,30 @@
|
||||||
#include "xed-searchbar.h"
|
#include "xed-searchbar.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
_xed_cmd_search_find (GtkAction *action, XedWindow *window)
|
_xed_cmd_search_find (GtkAction *action,
|
||||||
|
XedWindow *window)
|
||||||
{
|
{
|
||||||
xed_searchbar_show (xed_window_get_searchbar (window), FALSE);
|
xed_searchbar_show (xed_window_get_searchbar (window), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_xed_cmd_search_replace (GtkAction *action, XedWindow *window)
|
_xed_cmd_search_replace (GtkAction *action,
|
||||||
|
XedWindow *window)
|
||||||
{
|
{
|
||||||
xed_searchbar_show (xed_window_get_searchbar (window), TRUE);
|
xed_searchbar_show (xed_window_get_searchbar (window), TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_xed_cmd_search_find_next (GtkAction *action, XedWindow *window)
|
_xed_cmd_search_find_next (GtkAction *action,
|
||||||
|
XedWindow *window)
|
||||||
{
|
{
|
||||||
xed_debug (DEBUG_COMMANDS);
|
xed_debug (DEBUG_COMMANDS);
|
||||||
xed_searchbar_find_again (xed_window_get_searchbar (window), FALSE);
|
xed_searchbar_find_again (xed_window_get_searchbar (window), FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_xed_cmd_search_find_prev (GtkAction *action, XedWindow *window)
|
_xed_cmd_search_find_prev (GtkAction *action,
|
||||||
|
XedWindow *window)
|
||||||
{
|
{
|
||||||
xed_debug (DEBUG_COMMANDS);
|
xed_debug (DEBUG_COMMANDS);
|
||||||
xed_searchbar_find_again (xed_window_get_searchbar (window), TRUE);
|
xed_searchbar_find_again (xed_window_get_searchbar (window), TRUE);
|
||||||
|
@ -45,19 +49,22 @@ _xed_cmd_search_clear_highlight (XedWindow *window)
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
xed_debug (DEBUG_COMMANDS);
|
xed_debug (DEBUG_COMMANDS);
|
||||||
doc = xed_window_get_active_document (window);
|
doc = xed_window_get_active_document (window);
|
||||||
if (doc != NULL) {
|
if (doc != NULL)
|
||||||
|
{
|
||||||
xed_document_set_search_text (XED_DOCUMENT(doc), "", XED_SEARCH_DONT_SET_FLAGS);
|
xed_document_set_search_text (XED_DOCUMENT(doc), "", XED_SEARCH_DONT_SET_FLAGS);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_xed_cmd_search_goto_line (GtkAction *action, XedWindow *window)
|
_xed_cmd_search_goto_line (GtkAction *action,
|
||||||
|
XedWindow *window)
|
||||||
{
|
{
|
||||||
XedView *active_view;
|
XedView *active_view;
|
||||||
xed_debug (DEBUG_COMMANDS);
|
xed_debug (DEBUG_COMMANDS);
|
||||||
|
|
||||||
active_view = xed_window_get_active_view (window);
|
active_view = xed_window_get_active_view (window);
|
||||||
if (active_view == NULL) {
|
if (active_view == NULL)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,7 +72,6 @@ _xed_cmd_search_goto_line (GtkAction *action, XedWindow *window)
|
||||||
activating the binding for goto line has no effect */
|
activating the binding for goto line has no effect */
|
||||||
gtk_widget_grab_focus (GTK_WIDGET(active_view));
|
gtk_widget_grab_focus (GTK_WIDGET(active_view));
|
||||||
|
|
||||||
|
|
||||||
/* Goto line is builtin in XedView, just activate the corresponding binding. */
|
/* Goto line is builtin in XedView, just activate the corresponding binding. */
|
||||||
gtk_bindings_activate (G_OBJECT(active_view), GDK_KEY_i, GDK_CONTROL_MASK);
|
gtk_bindings_activate (G_OBJECT(active_view), GDK_KEY_i, GDK_CONTROL_MASK);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -22,8 +21,7 @@
|
||||||
/* Signals */
|
/* Signals */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
SHOW_REPLACE,
|
SHOW_REPLACE, LAST_SIGNAL
|
||||||
LAST_SIGNAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _XedSearchbarPrivate
|
struct _XedSearchbarPrivate
|
||||||
|
@ -62,45 +60,46 @@ xed_searchbar_class_init (XedSearchbarClass *klass)
|
||||||
|
|
||||||
/* Use occurrences only for Replace All */
|
/* Use occurrences only for Replace All */
|
||||||
static void
|
static void
|
||||||
text_found (XedWindow *window, gint occurrences)
|
text_found (XedWindow *window,
|
||||||
|
gint occurrences)
|
||||||
{
|
{
|
||||||
if (occurrences > 1) {
|
if (occurrences > 1)
|
||||||
xed_statusbar_flash_message (XED_STATUSBAR (window->priv->statusbar),
|
{
|
||||||
window->priv->generic_message_cid,
|
xed_statusbar_flash_message (XED_STATUSBAR(window->priv->statusbar), window->priv->generic_message_cid,
|
||||||
ngettext("Found and replaced %d occurrence",
|
ngettext ("Found and replaced %d occurrence", "Found and replaced %d occurrences", occurrences),
|
||||||
"Found and replaced %d occurrences",
|
|
||||||
occurrences),
|
|
||||||
occurrences);
|
occurrences);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (occurrences == 1) {
|
if (occurrences == 1)
|
||||||
xed_statusbar_flash_message (XED_STATUSBAR (window->priv->statusbar),
|
{
|
||||||
window->priv->generic_message_cid,
|
xed_statusbar_flash_message (XED_STATUSBAR(window->priv->statusbar), window->priv->generic_message_cid,
|
||||||
_("Found and replaced one occurrence"));
|
_("Found and replaced one occurrence"));
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
xed_statusbar_flash_message (XED_STATUSBAR (window->priv->statusbar),
|
{
|
||||||
window->priv->generic_message_cid,
|
xed_statusbar_flash_message (XED_STATUSBAR(window->priv->statusbar), window->priv->generic_message_cid,
|
||||||
" ");
|
" ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
text_not_found (XedWindow *window, const gchar *text)
|
text_not_found (XedWindow *window,
|
||||||
|
const gchar *text)
|
||||||
{
|
{
|
||||||
gchar *searched;
|
gchar *searched;
|
||||||
|
|
||||||
searched = xed_utils_str_end_truncate (text, MAX_MSG_LENGTH);
|
searched = xed_utils_str_end_truncate (text, MAX_MSG_LENGTH);
|
||||||
xed_statusbar_flash_message (XED_STATUSBAR (window->priv->statusbar),
|
xed_statusbar_flash_message (XED_STATUSBAR(window->priv->statusbar), window->priv->generic_message_cid,
|
||||||
window->priv->generic_message_cid,
|
|
||||||
_("\"%s\" not found"), searched);
|
_("\"%s\" not found"), searched);
|
||||||
g_free (searched);
|
g_free (searched);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
run_search (XedView *view, gboolean wrap_around, gboolean search_backwards)
|
run_search (XedView *view,
|
||||||
|
gboolean wrap_around,
|
||||||
|
gboolean search_backwards)
|
||||||
{
|
{
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
GtkTextIter start_iter;
|
GtkTextIter start_iter;
|
||||||
|
@ -110,32 +109,39 @@ run_search (XedView *view, gboolean wrap_around, gboolean search_backwards)
|
||||||
|
|
||||||
doc = XED_DOCUMENT(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
doc = XED_DOCUMENT(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
||||||
|
|
||||||
if (!search_backwards) {
|
if (!search_backwards)
|
||||||
|
{
|
||||||
gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER(doc), NULL, &start_iter);
|
gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER(doc), NULL, &start_iter);
|
||||||
found = xed_document_search_forward (doc, &start_iter, NULL, &match_start, &match_end);
|
found = xed_document_search_forward (doc, &start_iter, NULL, &match_start, &match_end);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER(doc), &start_iter, NULL);
|
gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER(doc), &start_iter, NULL);
|
||||||
found = xed_document_search_backward (doc, NULL, &start_iter, &match_start, &match_end);
|
found = xed_document_search_backward (doc, NULL, &start_iter, &match_start, &match_end);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!found && wrap_around) {
|
if (!found && wrap_around)
|
||||||
if (!search_backwards) {
|
{
|
||||||
found = xed_document_search_forward (doc, NULL, NULL, /* FIXME: set the end_inter */
|
if (!search_backwards)
|
||||||
&match_start, &match_end);
|
{
|
||||||
|
/* FIXME: set the end_inter */
|
||||||
|
found = xed_document_search_forward (doc, NULL, NULL, &match_start, &match_end);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
found = xed_document_search_backward (doc, NULL, /* FIXME: set the start_inter */ NULL,
|
{
|
||||||
&match_start, &match_end);
|
/* FIXME: set the start_inter */
|
||||||
|
found = xed_document_search_backward (doc, NULL, NULL, &match_start, &match_end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (found) {
|
if (found)
|
||||||
|
{
|
||||||
gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER(doc), &match_start);
|
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);
|
gtk_text_buffer_move_mark_by_name (GTK_TEXT_BUFFER(doc), "selection_bound", &match_end);
|
||||||
xed_view_scroll_to_cursor (view);
|
xed_view_scroll_to_cursor (view);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER(doc), &start_iter);
|
gtk_text_buffer_place_cursor (GTK_TEXT_BUFFER(doc), &start_iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,7 +149,8 @@ run_search (XedView *view, gboolean wrap_around, gboolean search_backwards)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_find (XedSearchbar *searchbar, gboolean search_backwards)
|
do_find (XedSearchbar *searchbar,
|
||||||
|
gboolean search_backwards)
|
||||||
{
|
{
|
||||||
XedView *active_view;
|
XedView *active_view;
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
|
@ -159,7 +166,8 @@ do_find (XedSearchbar *searchbar, gboolean search_backwards)
|
||||||
/* TODO: make the searchbar insensitive when all the tabs are closed
|
/* TODO: make the searchbar insensitive when all the tabs are closed
|
||||||
* and assert here that the view is not NULL */
|
* and assert here that the view is not NULL */
|
||||||
active_view = xed_window_get_active_view (searchbar->window);
|
active_view = xed_window_get_active_view (searchbar->window);
|
||||||
if (active_view == NULL) {
|
if (active_view == NULL)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,7 +183,8 @@ do_find (XedSearchbar *searchbar, gboolean search_backwards)
|
||||||
|
|
||||||
search_text = xed_document_get_search_text (doc, &old_flags);
|
search_text = xed_document_get_search_text (doc, &old_flags);
|
||||||
|
|
||||||
if ((search_text == NULL) || (strcmp (search_text, entry_text) != 0) || (flags != old_flags)) {
|
if ((search_text == NULL) || (strcmp (search_text, entry_text) != 0) || (flags != old_flags))
|
||||||
|
{
|
||||||
xed_document_set_search_text (doc, entry_text, flags);
|
xed_document_set_search_text (doc, entry_text, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,16 +192,19 @@ do_find (XedSearchbar *searchbar, gboolean search_backwards)
|
||||||
|
|
||||||
found = run_search (active_view, wrap_around, search_backwards);
|
found = run_search (active_view, wrap_around, search_backwards);
|
||||||
|
|
||||||
if (found) {
|
if (found)
|
||||||
|
{
|
||||||
text_found (searchbar->window, 0);
|
text_found (searchbar->window, 0);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
text_not_found (searchbar->window, entry_text);
|
text_not_found (searchbar->window, entry_text);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_find_again (XedSearchbar *searchbar, gboolean backward)
|
xed_searchbar_find_again (XedSearchbar *searchbar,
|
||||||
|
gboolean backward)
|
||||||
{
|
{
|
||||||
XedView *active_view;
|
XedView *active_view;
|
||||||
gboolean wrap_around = TRUE;
|
gboolean wrap_around = TRUE;
|
||||||
|
@ -203,7 +215,8 @@ xed_searchbar_find_again (XedSearchbar *searchbar, gboolean backward)
|
||||||
|
|
||||||
data = g_object_get_data (G_OBJECT(searchbar->window), XED_SEARCHBAR_KEY);
|
data = g_object_get_data (G_OBJECT(searchbar->window), XED_SEARCHBAR_KEY);
|
||||||
|
|
||||||
if (data != NULL) {
|
if (data != NULL)
|
||||||
|
{
|
||||||
wrap_around = xed_searchbar_get_wrap_around (XED_SEARCHBAR(data));
|
wrap_around = xed_searchbar_get_wrap_around (XED_SEARCHBAR(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -211,7 +224,8 @@ xed_searchbar_find_again (XedSearchbar *searchbar, gboolean backward)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_buttons_set_sensitive (XedSearchbar *searchbar, gboolean sensitive)
|
search_buttons_set_sensitive (XedSearchbar *searchbar,
|
||||||
|
gboolean sensitive)
|
||||||
{
|
{
|
||||||
gtk_widget_set_sensitive (searchbar->priv->find_button, sensitive);
|
gtk_widget_set_sensitive (searchbar->priv->find_button, sensitive);
|
||||||
gtk_widget_set_sensitive (searchbar->priv->find_prev_button, sensitive);
|
gtk_widget_set_sensitive (searchbar->priv->find_prev_button, sensitive);
|
||||||
|
@ -221,15 +235,19 @@ search_buttons_set_sensitive (XedSearchbar *searchbar, gboolean sensitive)
|
||||||
|
|
||||||
/* FIXME: move in xed-document.c and share it with xed-view */
|
/* FIXME: move in xed-document.c and share it with xed-view */
|
||||||
static gboolean
|
static gboolean
|
||||||
get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
|
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 (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
|
||||||
if (len != NULL) {
|
{
|
||||||
|
if (len != NULL)
|
||||||
|
{
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -237,7 +255,8 @@ get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
|
||||||
|
|
||||||
*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) {
|
if (len != NULL)
|
||||||
|
{
|
||||||
*len = g_utf8_strlen (*selected_text, -1);
|
*len = g_utf8_strlen (*selected_text, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +264,8 @@ get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
replace_selected_text (GtkTextBuffer *buffer, const gchar *replace)
|
replace_selected_text (GtkTextBuffer *buffer,
|
||||||
|
const gchar *replace)
|
||||||
{
|
{
|
||||||
g_return_if_fail(gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL));
|
g_return_if_fail(gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL));
|
||||||
g_return_if_fail(replace != NULL);
|
g_return_if_fail(replace != NULL);
|
||||||
|
@ -268,7 +288,8 @@ do_replace (XedSearchbar *searchbar)
|
||||||
gboolean match_case;
|
gboolean match_case;
|
||||||
|
|
||||||
doc = xed_window_get_active_document (searchbar->window);
|
doc = xed_window_get_active_document (searchbar->window);
|
||||||
if (doc == NULL) {
|
if (doc == NULL)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,12 +307,13 @@ do_replace (XedSearchbar *searchbar)
|
||||||
|
|
||||||
match_case = xed_searchbar_get_match_case (searchbar);
|
match_case = xed_searchbar_get_match_case (searchbar);
|
||||||
|
|
||||||
if ((selected_text == NULL) ||
|
if ((selected_text == NULL)
|
||||||
(match_case && (strcmp (selected_text, unescaped_search_text) != 0)) ||
|
|| (match_case && (strcmp (selected_text, unescaped_search_text) != 0))
|
||||||
(!match_case && !g_utf8_caselessnmatch (selected_text,
|
|| (!match_case && !g_utf8_caselessnmatch (selected_text,
|
||||||
unescaped_search_text,
|
unescaped_search_text,
|
||||||
strlen (selected_text),
|
strlen (selected_text),
|
||||||
strlen (unescaped_search_text)) != 0)) {
|
strlen (unescaped_search_text)) != 0))
|
||||||
|
{
|
||||||
do_find (searchbar, FALSE);
|
do_find (searchbar, FALSE);
|
||||||
g_free (unescaped_search_text);
|
g_free (unescaped_search_text);
|
||||||
g_free (selected_text);
|
g_free (selected_text);
|
||||||
|
@ -322,7 +344,8 @@ do_replace_all (XedSearchbar *searchbar)
|
||||||
gint count;
|
gint count;
|
||||||
|
|
||||||
active_view = xed_window_get_active_view (searchbar->window);
|
active_view = xed_window_get_active_view (searchbar->window);
|
||||||
if (active_view == NULL) {
|
if (active_view == NULL)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -344,24 +367,31 @@ do_replace_all (XedSearchbar *searchbar)
|
||||||
|
|
||||||
count = xed_document_replace_all (doc, search_entry_text, replace_entry_text, flags);
|
count = xed_document_replace_all (doc, search_entry_text, replace_entry_text, flags);
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0)
|
||||||
|
{
|
||||||
text_found (searchbar->window, count);
|
text_found (searchbar->window, count);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
text_not_found (searchbar->window, search_entry_text);
|
text_not_found (searchbar->window, search_entry_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
insert_text_handler (GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
|
insert_text_handler (GtkEditable *editable,
|
||||||
|
const gchar *text,
|
||||||
|
gint length,
|
||||||
|
gint *position,
|
||||||
|
gpointer data)
|
||||||
{
|
{
|
||||||
static gboolean insert_text = FALSE;
|
static gboolean insert_text = FALSE;
|
||||||
gchar *escaped_text;
|
gchar *escaped_text;
|
||||||
gint new_len;
|
gint new_len;
|
||||||
|
|
||||||
/* To avoid recursive behavior */
|
/* To avoid recursive behavior */
|
||||||
if (insert_text) {
|
if (insert_text)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,7 +399,8 @@ insert_text_handler (GtkEditable *editable, const gchar *text, gint length, gint
|
||||||
|
|
||||||
new_len = strlen (escaped_text);
|
new_len = strlen (escaped_text);
|
||||||
|
|
||||||
if (new_len == length) {
|
if (new_len == length)
|
||||||
|
{
|
||||||
g_free (escaped_text);
|
g_free (escaped_text);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -386,18 +417,21 @@ insert_text_handler (GtkEditable *editable, const gchar *text, gint length, gint
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_text_entry_changed (GtkEditable *editable, XedSearchbar *searchbar)
|
search_text_entry_changed (GtkEditable *editable,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
const gchar *search_string;
|
const gchar *search_string;
|
||||||
|
|
||||||
search_string = gtk_entry_get_text (GTK_ENTRY(editable));
|
search_string = gtk_entry_get_text (GTK_ENTRY(editable));
|
||||||
g_return_if_fail(search_string != NULL);
|
g_return_if_fail(search_string != NULL);
|
||||||
|
|
||||||
if (*search_string != '\0') {
|
if (*search_string != '\0')
|
||||||
|
{
|
||||||
search_buttons_set_sensitive (searchbar, TRUE);
|
search_buttons_set_sensitive (searchbar, TRUE);
|
||||||
do_find (searchbar, FALSE);
|
do_find (searchbar, FALSE);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
search_buttons_set_sensitive (searchbar, FALSE);
|
search_buttons_set_sensitive (searchbar, FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -407,7 +441,8 @@ remember_search_entry (XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
const gchar *str;
|
const gchar *str;
|
||||||
str = gtk_entry_get_text (GTK_ENTRY(searchbar->priv->search_text_entry));
|
str = gtk_entry_get_text (GTK_ENTRY(searchbar->priv->search_text_entry));
|
||||||
if (*str != '\0') {
|
if (*str != '\0')
|
||||||
|
{
|
||||||
gchar *text;
|
gchar *text;
|
||||||
text = xed_utils_unescape_search_text (str);
|
text = xed_utils_unescape_search_text (str);
|
||||||
xed_history_entry_prepend_text (XED_HISTORY_ENTRY(searchbar->priv->search_entry), text);
|
xed_history_entry_prepend_text (XED_HISTORY_ENTRY(searchbar->priv->search_entry), text);
|
||||||
|
@ -420,7 +455,8 @@ remember_replace_entry (XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
const gchar *str;
|
const gchar *str;
|
||||||
str = gtk_entry_get_text (GTK_ENTRY(searchbar->priv->replace_text_entry));
|
str = gtk_entry_get_text (GTK_ENTRY(searchbar->priv->replace_text_entry));
|
||||||
if (*str != '\0') {
|
if (*str != '\0')
|
||||||
|
{
|
||||||
gchar *text;
|
gchar *text;
|
||||||
text = xed_utils_unescape_search_text (str);
|
text = xed_utils_unescape_search_text (str);
|
||||||
xed_history_entry_prepend_text (XED_HISTORY_ENTRY(searchbar->priv->replace_entry), text);
|
xed_history_entry_prepend_text (XED_HISTORY_ENTRY(searchbar->priv->replace_entry), text);
|
||||||
|
@ -429,21 +465,24 @@ remember_replace_entry (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
find_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
find_button_clicked_callback (GtkWidget *button,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
remember_search_entry (searchbar);
|
remember_search_entry (searchbar);
|
||||||
do_find (searchbar, FALSE);
|
do_find (searchbar, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
find_prev_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
find_prev_button_clicked_callback (GtkWidget *button,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
remember_search_entry (searchbar);
|
remember_search_entry (searchbar);
|
||||||
do_find (searchbar, TRUE);
|
do_find (searchbar, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
replace_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
replace_button_clicked_callback (GtkWidget *button,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
remember_search_entry (searchbar);
|
remember_search_entry (searchbar);
|
||||||
remember_replace_entry (searchbar);
|
remember_replace_entry (searchbar);
|
||||||
|
@ -451,7 +490,8 @@ replace_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
replace_all_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
replace_all_button_clicked_callback (GtkWidget *button,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
remember_search_entry (searchbar);
|
remember_search_entry (searchbar);
|
||||||
remember_replace_entry (searchbar);
|
remember_replace_entry (searchbar);
|
||||||
|
@ -459,7 +499,8 @@ replace_all_button_clicked_callback (GtkWidget *button, XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_search_text_entry_activated (GtkEntry *widget, XedSearchbar *searchbar)
|
on_search_text_entry_activated (GtkEntry *widget,
|
||||||
|
XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
remember_search_entry (searchbar);
|
remember_search_entry (searchbar);
|
||||||
do_find (searchbar, FALSE);
|
do_find (searchbar, FALSE);
|
||||||
|
@ -497,20 +538,17 @@ xed_searchbar_init (XedSearchbar *searchbar)
|
||||||
|
|
||||||
searchbar->priv->search_entry = xed_history_entry_new ("history-search-for", TRUE);
|
searchbar->priv->search_entry = xed_history_entry_new ("history-search-for", TRUE);
|
||||||
gtk_widget_set_hexpand (searchbar->priv->search_entry, TRUE);
|
gtk_widget_set_hexpand (searchbar->priv->search_entry, TRUE);
|
||||||
xed_history_entry_set_escape_func (
|
xed_history_entry_set_escape_func (XED_HISTORY_ENTRY(searchbar->priv->search_entry),
|
||||||
XED_HISTORY_ENTRY (searchbar->priv->search_entry),
|
|
||||||
(XedHistoryEntryEscapeFunc) xed_utils_escape_search_text);
|
(XedHistoryEntryEscapeFunc) xed_utils_escape_search_text);
|
||||||
|
|
||||||
searchbar->priv->search_text_entry = xed_history_entry_get_entry (
|
searchbar->priv->search_text_entry = xed_history_entry_get_entry (XED_HISTORY_ENTRY(searchbar->priv->search_entry));
|
||||||
XED_HISTORY_ENTRY (searchbar->priv->search_entry));
|
|
||||||
gtk_entry_set_activates_default (GTK_ENTRY(searchbar->priv->search_text_entry), TRUE);
|
gtk_entry_set_activates_default (GTK_ENTRY(searchbar->priv->search_text_entry), TRUE);
|
||||||
|
|
||||||
gtk_widget_show (searchbar->priv->search_entry);
|
gtk_widget_show (searchbar->priv->search_entry);
|
||||||
gtk_grid_attach (GTK_GRID(searchbar->priv->grid), searchbar->priv->search_entry, 2, 0, 1, 1);
|
gtk_grid_attach (GTK_GRID(searchbar->priv->grid), searchbar->priv->search_entry, 2, 0, 1, 1);
|
||||||
|
|
||||||
searchbar->priv->replace_entry = xed_history_entry_new ("history-replace-with", TRUE);
|
searchbar->priv->replace_entry = xed_history_entry_new ("history-replace-with", TRUE);
|
||||||
xed_history_entry_set_escape_func (
|
xed_history_entry_set_escape_func (XED_HISTORY_ENTRY(searchbar->priv->replace_entry),
|
||||||
XED_HISTORY_ENTRY (searchbar->priv->replace_entry),
|
|
||||||
(XedHistoryEntryEscapeFunc) xed_utils_escape_search_text);
|
(XedHistoryEntryEscapeFunc) xed_utils_escape_search_text);
|
||||||
|
|
||||||
searchbar->priv->replace_text_entry = xed_history_entry_get_entry (
|
searchbar->priv->replace_text_entry = xed_history_entry_get_entry (
|
||||||
|
@ -565,7 +603,8 @@ xed_searchbar_init (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkWidget *
|
GtkWidget *
|
||||||
xed_searchbar_new (GtkWindow *parent, gboolean show_replace)
|
xed_searchbar_new (GtkWindow *parent,
|
||||||
|
gboolean show_replace)
|
||||||
{
|
{
|
||||||
XedSearchbar *searchbar;
|
XedSearchbar *searchbar;
|
||||||
searchbar = g_object_new (XED_TYPE_SEARCHBAR, NULL);
|
searchbar = g_object_new (XED_TYPE_SEARCHBAR, NULL);
|
||||||
|
@ -573,7 +612,9 @@ xed_searchbar_new (GtkWindow *parent, gboolean show_replace)
|
||||||
return GTK_WIDGET(searchbar);
|
return GTK_WIDGET(searchbar);
|
||||||
}
|
}
|
||||||
|
|
||||||
void xed_searchbar_show (XedSearchbar *searchbar, gboolean show_replace)
|
void
|
||||||
|
xed_searchbar_show (XedSearchbar *searchbar,
|
||||||
|
gboolean show_replace)
|
||||||
{
|
{
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
gboolean selection_exists;
|
gboolean selection_exists;
|
||||||
|
@ -586,7 +627,8 @@ void xed_searchbar_show (XedSearchbar *searchbar, gboolean show_replace)
|
||||||
|
|
||||||
selection_exists = get_selected_text (GTK_TEXT_BUFFER(doc), &find_text, &sel_len);
|
selection_exists = get_selected_text (GTK_TEXT_BUFFER(doc), &find_text, &sel_len);
|
||||||
|
|
||||||
if (selection_exists && find_text != NULL && sel_len < 80) {
|
if (selection_exists && find_text != NULL && sel_len < 80)
|
||||||
|
{
|
||||||
/*
|
/*
|
||||||
* Special case: if the currently selected text
|
* Special case: if the currently selected text
|
||||||
* is the same as the unescaped search text, use the
|
* is the same as the unescaped search text, use the
|
||||||
|
@ -595,25 +637,29 @@ void xed_searchbar_show (XedSearchbar *searchbar, gboolean show_replace)
|
||||||
* you'll get an unprintable single-character literal '\n' in the "search for" box).
|
* you'll get an unprintable single-character literal '\n' in the "search for" box).
|
||||||
*/
|
*/
|
||||||
search_text = xed_searchbar_get_search_text (XED_SEARCHBAR(searchbar));
|
search_text = xed_searchbar_get_search_text (XED_SEARCHBAR(searchbar));
|
||||||
if (!(search_text != NULL && !strcmp(xed_utils_unescape_search_text(search_text), find_text))) {
|
if (!(search_text != NULL && !strcmp (xed_utils_unescape_search_text (search_text), find_text)))
|
||||||
|
{
|
||||||
/* General case */
|
/* General case */
|
||||||
xed_searchbar_set_search_text (XED_SEARCHBAR(searchbar), find_text);
|
xed_searchbar_set_search_text (XED_SEARCHBAR(searchbar), find_text);
|
||||||
}
|
}
|
||||||
g_free (find_text);
|
g_free (find_text);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
g_free (find_text);
|
g_free (find_text);
|
||||||
}
|
}
|
||||||
gtk_revealer_set_transition_type (GTK_REVEALER(searchbar->priv->revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);
|
gtk_revealer_set_transition_type (GTK_REVEALER(searchbar->priv->revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP);
|
||||||
gtk_revealer_set_reveal_child (GTK_REVEALER(searchbar->priv->revealer), TRUE);
|
gtk_revealer_set_reveal_child (GTK_REVEALER(searchbar->priv->revealer), TRUE);
|
||||||
if (show_replace) {
|
if (show_replace)
|
||||||
|
{
|
||||||
gtk_widget_show (searchbar->priv->replace_label);
|
gtk_widget_show (searchbar->priv->replace_label);
|
||||||
gtk_widget_show (searchbar->priv->replace_entry);
|
gtk_widget_show (searchbar->priv->replace_entry);
|
||||||
gtk_widget_show (searchbar->priv->replace_all_button);
|
gtk_widget_show (searchbar->priv->replace_all_button);
|
||||||
gtk_widget_show (searchbar->priv->replace_button);
|
gtk_widget_show (searchbar->priv->replace_button);
|
||||||
gtk_grid_set_row_spacing (GTK_GRID(searchbar->priv->grid), 10);
|
gtk_grid_set_row_spacing (GTK_GRID(searchbar->priv->grid), 10);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_widget_hide (searchbar->priv->replace_label);
|
gtk_widget_hide (searchbar->priv->replace_label);
|
||||||
gtk_widget_hide (searchbar->priv->replace_entry);
|
gtk_widget_hide (searchbar->priv->replace_entry);
|
||||||
gtk_widget_hide (searchbar->priv->replace_all_button);
|
gtk_widget_hide (searchbar->priv->replace_all_button);
|
||||||
|
@ -625,15 +671,16 @@ void xed_searchbar_show (XedSearchbar *searchbar, gboolean show_replace)
|
||||||
gtk_widget_grab_focus (searchbar->priv->search_text_entry);
|
gtk_widget_grab_focus (searchbar->priv->search_text_entry);
|
||||||
}
|
}
|
||||||
|
|
||||||
void xed_searchbar_hide (XedSearchbar *searchbar)
|
void
|
||||||
|
xed_searchbar_hide (XedSearchbar *searchbar)
|
||||||
{
|
{
|
||||||
gtk_revealer_set_transition_type (GTK_REVEALER (searchbar->priv->revealer),
|
gtk_revealer_set_transition_type (GTK_REVEALER(searchbar->priv->revealer), GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
|
||||||
GTK_REVEALER_TRANSITION_TYPE_SLIDE_DOWN);
|
|
||||||
gtk_revealer_set_reveal_child (GTK_REVEALER(searchbar->priv->revealer), FALSE);
|
gtk_revealer_set_reveal_child (GTK_REVEALER(searchbar->priv->revealer), FALSE);
|
||||||
|
|
||||||
// focus document
|
// focus document
|
||||||
XedView *active_view = xed_window_get_active_view (searchbar->window);
|
XedView *active_view = xed_window_get_active_view (searchbar->window);
|
||||||
if (active_view != NULL) {
|
if (active_view != NULL)
|
||||||
|
{
|
||||||
gtk_widget_grab_focus (GTK_WIDGET(active_view));
|
gtk_widget_grab_focus (GTK_WIDGET(active_view));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -642,7 +689,8 @@ void xed_searchbar_hide (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_set_search_text (XedSearchbar *searchbar, const gchar *text)
|
xed_searchbar_set_search_text (XedSearchbar *searchbar,
|
||||||
|
const gchar *text)
|
||||||
{
|
{
|
||||||
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
||||||
g_return_if_fail(text != NULL);
|
g_return_if_fail(text != NULL);
|
||||||
|
@ -661,7 +709,8 @@ xed_searchbar_get_search_text (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_set_replace_text (XedSearchbar *searchbar, const gchar *text)
|
xed_searchbar_set_replace_text (XedSearchbar *searchbar,
|
||||||
|
const gchar *text)
|
||||||
{
|
{
|
||||||
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
||||||
g_return_if_fail(text != NULL);
|
g_return_if_fail(text != NULL);
|
||||||
|
@ -677,7 +726,8 @@ xed_searchbar_get_replace_text (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_set_match_case (XedSearchbar *searchbar, gboolean match_case)
|
xed_searchbar_set_match_case (XedSearchbar *searchbar,
|
||||||
|
gboolean match_case)
|
||||||
{
|
{
|
||||||
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->match_case_checkbutton), match_case);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->match_case_checkbutton), match_case);
|
||||||
|
@ -691,7 +741,8 @@ xed_searchbar_get_match_case (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_set_entire_word (XedSearchbar *searchbar, gboolean entire_word)
|
xed_searchbar_set_entire_word (XedSearchbar *searchbar,
|
||||||
|
gboolean entire_word)
|
||||||
{
|
{
|
||||||
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->entire_word_checkbutton), entire_word);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->entire_word_checkbutton), entire_word);
|
||||||
|
@ -705,7 +756,8 @@ xed_searchbar_get_entire_word (XedSearchbar *searchbar)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
xed_searchbar_set_wrap_around (XedSearchbar *searchbar, gboolean wrap_around)
|
xed_searchbar_set_wrap_around (XedSearchbar *searchbar,
|
||||||
|
gboolean wrap_around)
|
||||||
{
|
{
|
||||||
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
g_return_if_fail(XED_IS_SEARCHBAR (searchbar));
|
||||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->wrap_around_checkbutton), wrap_around);
|
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(searchbar->priv->wrap_around_checkbutton), wrap_around);
|
||||||
|
|
362
xed/xed-view.c
362
xed/xed-view.c
|
@ -55,21 +55,20 @@ G_DEFINE_TYPE(XedView, xed_view, GTK_SOURCE_TYPE_VIEW)
|
||||||
/* Signals */
|
/* Signals */
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
START_INTERACTIVE_GOTO_LINE,
|
START_INTERACTIVE_GOTO_LINE, DROP_URIS, LAST_SIGNAL
|
||||||
DROP_URIS,
|
|
||||||
LAST_SIGNAL
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static guint view_signals[LAST_SIGNAL] = { 0 };
|
static guint view_signals[LAST_SIGNAL] = { 0 };
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
XED_SEARCH_ENTRY_NORMAL,
|
XED_SEARCH_ENTRY_NORMAL, XED_SEARCH_ENTRY_NOT_FOUND
|
||||||
XED_SEARCH_ENTRY_NOT_FOUND
|
|
||||||
} XedSearchEntryState;
|
} XedSearchEntryState;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
document_read_only_notify_handler (XedDocument *document, GParamSpec *pspec, XedView *view)
|
document_read_only_notify_handler (XedDocument *document,
|
||||||
|
GParamSpec *pspec,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
xed_debug (DEBUG_VIEW);
|
xed_debug (DEBUG_VIEW);
|
||||||
gtk_text_view_set_editable (GTK_TEXT_VIEW(view), !xed_document_get_readonly (document));
|
gtk_text_view_set_editable (GTK_TEXT_VIEW(view), !xed_document_get_readonly (document));
|
||||||
|
@ -114,8 +113,8 @@ xed_view_class_init (XedViewClass *klass)
|
||||||
|
|
||||||
view_signals[START_INTERACTIVE_GOTO_LINE] = g_signal_new ("start_interactive_goto_line",
|
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_TYPE_FROM_CLASS(object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
||||||
G_STRUCT_OFFSET (XedViewClass, start_interactive_goto_line), NULL, NULL, xed_marshal_BOOLEAN__NONE,
|
G_STRUCT_OFFSET(XedViewClass, start_interactive_goto_line),
|
||||||
G_TYPE_BOOLEAN, 0);
|
NULL, NULL, xed_marshal_BOOLEAN__NONE, G_TYPE_BOOLEAN, 0);
|
||||||
|
|
||||||
/* A new signal DROP_URIS has been added to allow plugins to intercept
|
/* A new signal DROP_URIS has been added to allow plugins to intercept
|
||||||
* the default dnd behaviour of 'text/uri-list'. XedView now handles
|
* the default dnd behaviour of 'text/uri-list'. XedView now handles
|
||||||
|
@ -127,8 +126,9 @@ xed_view_class_init (XedViewClass *klass)
|
||||||
* will not prevent xed from loading the uri
|
* will not prevent xed from loading the uri
|
||||||
*/
|
*/
|
||||||
view_signals[DROP_URIS] = g_signal_new ("drop_uris", G_TYPE_FROM_CLASS(object_class),
|
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 (XedViewClass, drop_uris),NULL, NULL,
|
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
|
||||||
g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_STRV);
|
G_STRUCT_OFFSET(XedViewClass, drop_uris),
|
||||||
|
NULL, NULL, g_cclosure_marshal_VOID__BOXED, G_TYPE_NONE, 1, G_TYPE_STRV);
|
||||||
|
|
||||||
g_type_class_add_private (klass, sizeof(XedViewPrivate));
|
g_type_class_add_private (klass, sizeof(XedViewPrivate));
|
||||||
|
|
||||||
|
@ -143,7 +143,8 @@ xed_view_class_init (XedViewClass *klass)
|
||||||
static void
|
static void
|
||||||
current_buffer_removed (XedView *view)
|
current_buffer_removed (XedView *view)
|
||||||
{
|
{
|
||||||
if (view->priv->current_buffer) {
|
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, document_read_only_notify_handler, view);
|
||||||
g_signal_handlers_disconnect_by_func(view->priv->current_buffer, search_highlight_updated_cb, view);
|
g_signal_handlers_disconnect_by_func(view->priv->current_buffer, search_highlight_updated_cb, view);
|
||||||
g_object_unref (view->priv->current_buffer);
|
g_object_unref (view->priv->current_buffer);
|
||||||
|
@ -152,14 +153,17 @@ current_buffer_removed (XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
on_notify_buffer_cb (XedView *view, GParamSpec *arg1, gpointer userdata)
|
on_notify_buffer_cb (XedView *view,
|
||||||
|
GParamSpec *arg1,
|
||||||
|
gpointer userdata)
|
||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
|
|
||||||
current_buffer_removed (view);
|
current_buffer_removed (view);
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(view));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(view));
|
||||||
|
|
||||||
if (buffer == NULL || !XED_IS_DOCUMENT (buffer)) {
|
if (buffer == NULL || !XED_IS_DOCUMENT(buffer))
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,13 +188,15 @@ xed_view_init (XedView *view)
|
||||||
* Set tab, fonts, wrap mode, colors, etc. according
|
* Set tab, fonts, wrap mode, colors, etc. according
|
||||||
* to preferences
|
* to preferences
|
||||||
*/
|
*/
|
||||||
if (!xed_prefs_manager_get_use_default_font ()) {
|
if (!xed_prefs_manager_get_use_default_font ())
|
||||||
|
{
|
||||||
gchar *editor_font;
|
gchar *editor_font;
|
||||||
editor_font = xed_prefs_manager_get_editor_font ();
|
editor_font = xed_prefs_manager_get_editor_font ();
|
||||||
xed_view_set_font (view, FALSE, editor_font);
|
xed_view_set_font (view, FALSE, editor_font);
|
||||||
g_free (editor_font);
|
g_free (editor_font);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
xed_view_set_font (view, TRUE, NULL);
|
xed_view_set_font (view, TRUE, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +218,8 @@ xed_view_init (XedView *view)
|
||||||
/* Drag and drop support */
|
/* Drag and drop support */
|
||||||
tl = gtk_drag_dest_get_target_list (GTK_WIDGET(view));
|
tl = gtk_drag_dest_get_target_list (GTK_WIDGET(view));
|
||||||
|
|
||||||
if (tl != NULL) {
|
if (tl != NULL)
|
||||||
|
{
|
||||||
gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
|
gtk_target_list_add_uri_targets (tl, TARGET_URI_LIST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,11 +234,13 @@ xed_view_dispose (GObject *object)
|
||||||
|
|
||||||
view = XED_VIEW(object);
|
view = XED_VIEW(object);
|
||||||
|
|
||||||
if (view->priv->search_window != NULL) {
|
if (view->priv->search_window != NULL)
|
||||||
|
{
|
||||||
gtk_widget_destroy (view->priv->search_window);
|
gtk_widget_destroy (view->priv->search_window);
|
||||||
view->priv->search_window = NULL;
|
view->priv->search_window = NULL;
|
||||||
view->priv->search_entry = NULL;
|
view->priv->search_entry = NULL;
|
||||||
if (view->priv->typeselect_flush_timeout != 0) {
|
if (view->priv->typeselect_flush_timeout != 0)
|
||||||
|
{
|
||||||
g_source_remove (view->priv->typeselect_flush_timeout);
|
g_source_remove (view->priv->typeselect_flush_timeout);
|
||||||
view->priv->typeselect_flush_timeout = 0;
|
view->priv->typeselect_flush_timeout = 0;
|
||||||
}
|
}
|
||||||
|
@ -256,14 +265,16 @@ xed_view_finalize (GObject *object)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gint
|
static gint
|
||||||
xed_view_focus_out (GtkWidget *widget, GdkEventFocus *event)
|
xed_view_focus_out (GtkWidget *widget,
|
||||||
|
GdkEventFocus *event)
|
||||||
{
|
{
|
||||||
XedView *view = XED_VIEW(widget);
|
XedView *view = XED_VIEW(widget);
|
||||||
|
|
||||||
gtk_widget_queue_draw (widget);
|
gtk_widget_queue_draw (widget);
|
||||||
|
|
||||||
/* hide interactive search dialog */
|
/* hide interactive search dialog */
|
||||||
if (view->priv->search_window != NULL) {
|
if (view->priv->search_window != NULL)
|
||||||
|
{
|
||||||
hide_search_window (view, FALSE);
|
hide_search_window (view, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -434,7 +445,9 @@ xed_view_scroll_to_cursor (XedView *view)
|
||||||
* otherwise sets it to @font_name.
|
* otherwise sets it to @font_name.
|
||||||
**/
|
**/
|
||||||
void
|
void
|
||||||
xed_view_set_font (XedView *view, gboolean def, const gchar *font_name)
|
xed_view_set_font (XedView *view,
|
||||||
|
gboolean def,
|
||||||
|
const gchar *font_name)
|
||||||
{
|
{
|
||||||
PangoFontDescription *font_desc = NULL;
|
PangoFontDescription *font_desc = NULL;
|
||||||
|
|
||||||
|
@ -442,13 +455,15 @@ xed_view_set_font (XedView *view, gboolean def, const gchar *font_name)
|
||||||
|
|
||||||
g_return_if_fail(XED_IS_VIEW (view));
|
g_return_if_fail(XED_IS_VIEW (view));
|
||||||
|
|
||||||
if (def) {
|
if (def)
|
||||||
|
{
|
||||||
gchar *font;
|
gchar *font;
|
||||||
font = xed_prefs_manager_get_system_font ();
|
font = xed_prefs_manager_get_system_font ();
|
||||||
font_desc = pango_font_description_from_string (font);
|
font_desc = pango_font_description_from_string (font);
|
||||||
g_free (font);
|
g_free (font);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
g_return_if_fail(font_name != NULL);
|
g_return_if_fail(font_name != NULL);
|
||||||
font_desc = pango_font_description_from_string (font_name);
|
font_desc = pango_font_description_from_string (font_name);
|
||||||
}
|
}
|
||||||
|
@ -459,21 +474,25 @@ xed_view_set_font (XedView *view, gboolean def, const gchar *font_name)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
set_entry_state (GtkWidget *entry, XedSearchEntryState state)
|
set_entry_state (GtkWidget *entry,
|
||||||
|
XedSearchEntryState state)
|
||||||
{
|
{
|
||||||
GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(entry));
|
GtkStyleContext *context = gtk_widget_get_style_context (GTK_WIDGET(entry));
|
||||||
|
|
||||||
if (state == XED_SEARCH_ENTRY_NOT_FOUND) {
|
if (state == XED_SEARCH_ENTRY_NOT_FOUND)
|
||||||
|
{
|
||||||
gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
|
gtk_style_context_add_class (context, GTK_STYLE_CLASS_ERROR);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
|
gtk_style_context_remove_class (context, GTK_STYLE_CLASS_ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cut and paste from gtkwindow.c */
|
/* Cut and paste from gtkwindow.c */
|
||||||
static void
|
static void
|
||||||
send_focus_change (GtkWidget *widget, gboolean in)
|
send_focus_change (GtkWidget *widget,
|
||||||
|
gboolean in)
|
||||||
{
|
{
|
||||||
GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
|
GdkEvent *fevent = gdk_event_new (GDK_FOCUS_CHANGE);
|
||||||
|
|
||||||
|
@ -492,18 +511,22 @@ send_focus_change (GtkWidget *widget, gboolean in)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
hide_search_window (XedView *view, gboolean cancel)
|
hide_search_window (XedView *view,
|
||||||
|
gboolean cancel)
|
||||||
|
{
|
||||||
|
if (view->priv->disable_popdown)
|
||||||
{
|
{
|
||||||
if (view->priv->disable_popdown) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (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);
|
g_signal_handler_disconnect (view->priv->search_entry, view->priv->search_entry_changed_id);
|
||||||
view->priv->search_entry_changed_id = 0;
|
view->priv->search_entry_changed_id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->priv->typeselect_flush_timeout != 0) {
|
if (view->priv->typeselect_flush_timeout != 0)
|
||||||
|
{
|
||||||
g_source_remove (view->priv->typeselect_flush_timeout);
|
g_source_remove (view->priv->typeselect_flush_timeout);
|
||||||
view->priv->typeselect_flush_timeout = 0;
|
view->priv->typeselect_flush_timeout = 0;
|
||||||
}
|
}
|
||||||
|
@ -513,7 +536,8 @@ hide_search_window (XedView *view, gboolean cancel)
|
||||||
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view), TRUE);
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view), TRUE);
|
||||||
gtk_widget_hide (view->priv->search_window);
|
gtk_widget_hide (view->priv->search_window);
|
||||||
|
|
||||||
if (cancel) {
|
if (cancel)
|
||||||
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
buffer = GTK_TEXT_BUFFER(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
buffer = GTK_TEXT_BUFFER(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
||||||
gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
|
gtk_text_buffer_place_cursor (buffer, &view->priv->start_search_iter);
|
||||||
|
@ -550,14 +574,18 @@ update_search_window_position (XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
search_window_deleted (GtkWidget *widget, GdkEventAny *event, XedView *view)
|
search_window_deleted (GtkWidget *widget,
|
||||||
|
GdkEventAny *event,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
hide_search_window (view, FALSE);
|
hide_search_window (view, FALSE);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
search_window_button_pressed (GtkWidget *widget, GdkEventButton *event, XedView *view)
|
search_window_button_pressed (GtkWidget *widget,
|
||||||
|
GdkEventButton *event,
|
||||||
|
XedView *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);
|
||||||
|
@ -565,7 +593,9 @@ search_window_button_pressed (GtkWidget *widget, GdkEventButton *event, XedView
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
search_window_key_pressed (GtkWidget *widget, GdkEventKey *event, XedView *view)
|
search_window_key_pressed (GtkWidget *widget,
|
||||||
|
GdkEventKey *event,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
gboolean retval = FALSE;
|
gboolean retval = FALSE;
|
||||||
guint modifiers;
|
guint modifiers;
|
||||||
|
@ -573,13 +603,15 @@ search_window_key_pressed (GtkWidget *widget, GdkEventKey *event, XedView *view)
|
||||||
modifiers = gtk_accelerator_get_default_mod_mask ();
|
modifiers = gtk_accelerator_get_default_mod_mask ();
|
||||||
|
|
||||||
/* Close window */
|
/* Close window */
|
||||||
if (event->keyval == GDK_KEY_Tab) {
|
if (event->keyval == GDK_KEY_Tab)
|
||||||
|
{
|
||||||
hide_search_window (view, FALSE);
|
hide_search_window (view, FALSE);
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Close window and cancel the search */
|
/* Close window and cancel the search */
|
||||||
if (event->keyval == GDK_KEY_Escape) {
|
if (event->keyval == GDK_KEY_Escape)
|
||||||
|
{
|
||||||
hide_search_window (view, TRUE);
|
hide_search_window (view, TRUE);
|
||||||
retval = TRUE;
|
retval = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -588,7 +620,8 @@ search_window_key_pressed (GtkWidget *widget, GdkEventKey *event, XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_entry_activate (GtkEntry *entry, XedView *view)
|
search_entry_activate (GtkEntry *entry,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
hide_search_window (view, FALSE);
|
hide_search_window (view, FALSE);
|
||||||
}
|
}
|
||||||
|
@ -602,21 +635,25 @@ real_search_enable_popdown (gpointer data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_enable_popdown (GtkWidget *widget, XedView *view)
|
search_enable_popdown (GtkWidget *widget,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
g_timeout_add (200, real_search_enable_popdown, view);
|
g_timeout_add (200, real_search_enable_popdown, view);
|
||||||
|
|
||||||
/* renew the flush timeout */
|
/* renew the flush timeout */
|
||||||
if (view->priv->typeselect_flush_timeout != 0) {
|
if (view->priv->typeselect_flush_timeout != 0)
|
||||||
|
{
|
||||||
g_source_remove (view->priv->typeselect_flush_timeout);
|
g_source_remove (view->priv->typeselect_flush_timeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
view->priv->typeselect_flush_timeout =
|
view->priv->typeselect_flush_timeout = g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT,
|
||||||
g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT, (GSourceFunc)search_entry_flush_timeout, view);
|
(GSourceFunc) search_entry_flush_timeout, view);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_entry_populate_popup (GtkEntry *entry, GtkMenu *menu, XedView *view)
|
search_entry_populate_popup (GtkEntry *entry,
|
||||||
|
GtkMenu *menu,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
GtkWidget *menu_item;
|
GtkWidget *menu_item;
|
||||||
view->priv->disable_popdown = TRUE;
|
view->priv->disable_popdown = TRUE;
|
||||||
|
@ -624,7 +661,11 @@ search_entry_populate_popup (GtkEntry *entry, GtkMenu *menu, XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_entry_insert_text (GtkEditable *editable, const gchar *text, gint length, gint *position, XedView *view)
|
search_entry_insert_text (GtkEditable *editable,
|
||||||
|
const gchar *text,
|
||||||
|
gint length,
|
||||||
|
gint *position,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
gunichar c;
|
gunichar c;
|
||||||
const gchar *p;
|
const gchar *p;
|
||||||
|
@ -634,29 +675,35 @@ search_entry_insert_text (GtkEditable *editable, const gchar *text, gint length,
|
||||||
p = text;
|
p = text;
|
||||||
end = text + length;
|
end = text + length;
|
||||||
|
|
||||||
if (p == end) {
|
if (p == end)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
c = g_utf8_get_char (p);
|
c = g_utf8_get_char (p);
|
||||||
|
|
||||||
if (((c == '-' || c == '+') && *position == 0) || (c == ':' && *position != 0)) {
|
if (((c == '-' || c == '+') && *position == 0) || (c == ':' && *position != 0))
|
||||||
|
{
|
||||||
gchar *s = NULL;
|
gchar *s = NULL;
|
||||||
if (c == ':') {
|
if (c == ':')
|
||||||
|
{
|
||||||
s = gtk_editable_get_chars (editable, 0, -1);
|
s = gtk_editable_get_chars (editable, 0, -1);
|
||||||
s = g_utf8_strchr (s, -1, ':');
|
s = g_utf8_strchr (s, -1, ':');
|
||||||
}
|
}
|
||||||
if (s == NULL || s == p) {
|
if (s == NULL || s == p)
|
||||||
|
{
|
||||||
next = g_utf8_next_char(p);
|
next = g_utf8_next_char(p);
|
||||||
p = next;
|
p = next;
|
||||||
}
|
}
|
||||||
g_free (s);
|
g_free (s);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (p != end) {
|
while (p != end)
|
||||||
|
{
|
||||||
next = g_utf8_next_char(p);
|
next = g_utf8_next_char(p);
|
||||||
c = g_utf8_get_char (p);
|
c = g_utf8_get_char (p);
|
||||||
if (!g_unichar_isdigit (c)) {
|
if (!g_unichar_isdigit (c))
|
||||||
|
{
|
||||||
g_signal_stop_emission_by_name (editable, "insert_text");
|
g_signal_stop_emission_by_name (editable, "insert_text");
|
||||||
gtk_widget_error_bell (view->priv->search_entry);
|
gtk_widget_error_bell (view->priv->search_entry);
|
||||||
break;
|
break;
|
||||||
|
@ -683,15 +730,19 @@ ensure_search_window (XedView *view)
|
||||||
|
|
||||||
toplevel = gtk_widget_get_toplevel (GTK_WIDGET(view));
|
toplevel = gtk_widget_get_toplevel (GTK_WIDGET(view));
|
||||||
group = gtk_window_get_group (GTK_WINDOW(toplevel));
|
group = gtk_window_get_group (GTK_WINDOW(toplevel));
|
||||||
if (view->priv->search_window != NULL) {
|
if (view->priv->search_window != NULL)
|
||||||
|
{
|
||||||
search_group = gtk_window_get_group (GTK_WINDOW(view->priv->search_window));
|
search_group = gtk_window_get_group (GTK_WINDOW(view->priv->search_window));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (view->priv->search_window != NULL) {
|
if (view->priv->search_window != NULL)
|
||||||
if (group) {
|
{
|
||||||
|
if (group)
|
||||||
|
{
|
||||||
gtk_window_group_add_window (group, GTK_WINDOW(view->priv->search_window));
|
gtk_window_group_add_window (group, GTK_WINDOW(view->priv->search_window));
|
||||||
}
|
}
|
||||||
else if (search_group) {
|
else if (search_group)
|
||||||
|
{
|
||||||
gtk_window_group_remove_window (search_group, GTK_WINDOW(view->priv->search_window));
|
gtk_window_group_remove_window (search_group, GTK_WINDOW(view->priv->search_window));
|
||||||
}
|
}
|
||||||
customize_for_search_mode (view);
|
customize_for_search_mode (view);
|
||||||
|
@ -700,7 +751,8 @@ ensure_search_window (XedView *view)
|
||||||
|
|
||||||
view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
|
view->priv->search_window = gtk_window_new (GTK_WINDOW_POPUP);
|
||||||
|
|
||||||
if (group) {
|
if (group)
|
||||||
|
{
|
||||||
gtk_window_group_add_window (group, GTK_WINDOW(view->priv->search_window));
|
gtk_window_group_add_window (group, GTK_WINDOW(view->priv->search_window));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -735,15 +787,19 @@ ensure_search_window (XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
|
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 (!gtk_text_buffer_get_selection_bounds (doc, &start, &end))
|
||||||
if (len != NULL) {
|
{
|
||||||
|
if (len != NULL)
|
||||||
|
{
|
||||||
len = 0;
|
len = 0;
|
||||||
}
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -751,7 +807,8 @@ get_selected_text (GtkTextBuffer *doc, gchar **selected_text, gint *len)
|
||||||
|
|
||||||
*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) {
|
if (len != NULL)
|
||||||
|
{
|
||||||
*len = g_utf8_strlen (*selected_text, -1);
|
*len = g_utf8_strlen (*selected_text, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -773,22 +830,25 @@ init_search_entry (XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_init (GtkWidget *entry, XedView *view)
|
search_init (GtkWidget *entry,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
const gchar *entry_text;
|
const gchar *entry_text;
|
||||||
|
|
||||||
/* renew the flush timeout */
|
/* renew the flush timeout */
|
||||||
if (view->priv->typeselect_flush_timeout != 0) {
|
if (view->priv->typeselect_flush_timeout != 0)
|
||||||
|
{
|
||||||
g_source_remove (view->priv->typeselect_flush_timeout);
|
g_source_remove (view->priv->typeselect_flush_timeout);
|
||||||
view->priv->typeselect_flush_timeout =
|
view->priv->typeselect_flush_timeout = g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT,
|
||||||
g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT, (GSourceFunc)search_entry_flush_timeout, view);
|
(GSourceFunc) search_entry_flush_timeout, view);
|
||||||
}
|
}
|
||||||
doc = XED_DOCUMENT(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
doc = XED_DOCUMENT(gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)));
|
||||||
|
|
||||||
entry_text = gtk_entry_get_text (GTK_ENTRY(entry));
|
entry_text = gtk_entry_get_text (GTK_ENTRY(entry));
|
||||||
|
|
||||||
if (*entry_text != '\0') {
|
if (*entry_text != '\0')
|
||||||
|
{
|
||||||
gboolean moved, moved_offset;
|
gboolean moved, moved_offset;
|
||||||
gint line;
|
gint line;
|
||||||
gint offset_line = 0;
|
gint offset_line = 0;
|
||||||
|
@ -798,32 +858,39 @@ search_init (GtkWidget *entry, XedView *view)
|
||||||
|
|
||||||
split_text = g_strsplit (entry_text, ":", -1);
|
split_text = g_strsplit (entry_text, ":", -1);
|
||||||
|
|
||||||
if (g_strv_length (split_text) > 1) {
|
if (g_strv_length (split_text) > 1)
|
||||||
|
{
|
||||||
text = split_text[0];
|
text = split_text[0];
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
text = entry_text;
|
text = entry_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*text == '-') {
|
if (*text == '-')
|
||||||
|
{
|
||||||
gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
|
gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
|
||||||
|
|
||||||
if (*(text + 1) != '\0') {
|
if (*(text + 1) != '\0')
|
||||||
|
{
|
||||||
offset_line = MAX(atoi (text + 1), 0);
|
offset_line = MAX(atoi (text + 1), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
line = MAX(cur_line - offset_line, 0);
|
line = MAX(cur_line - offset_line, 0);
|
||||||
}
|
}
|
||||||
else if (*entry_text == '+') {
|
else if (*entry_text == '+')
|
||||||
|
{
|
||||||
gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
|
gint cur_line = gtk_text_iter_get_line (&view->priv->start_search_iter);
|
||||||
|
|
||||||
if (*(text + 1) != '\0') {
|
if (*(text + 1) != '\0')
|
||||||
|
{
|
||||||
offset_line = MAX(atoi (text + 1), 0);
|
offset_line = MAX(atoi (text + 1), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
line = cur_line + offset_line;
|
line = cur_line + offset_line;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
line = MAX(atoi (text) - 1, 0);
|
line = MAX(atoi (text) - 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -839,10 +906,12 @@ search_init (GtkWidget *entry, XedView *view)
|
||||||
|
|
||||||
xed_view_scroll_to_cursor (view);
|
xed_view_scroll_to_cursor (view);
|
||||||
|
|
||||||
if (!moved || !moved_offset) {
|
if (!moved || !moved_offset)
|
||||||
|
{
|
||||||
set_entry_state (view->priv->search_entry, XED_SEARCH_ENTRY_NOT_FOUND);
|
set_entry_state (view->priv->search_entry, XED_SEARCH_ENTRY_NOT_FOUND);
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
set_entry_state (view->priv->search_entry, XED_SEARCH_ENTRY_NORMAL);
|
set_entry_state (view->priv->search_entry, XED_SEARCH_ENTRY_NORMAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -853,11 +922,13 @@ start_interactive_goto_line (XedView *view)
|
||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
|
|
||||||
if ((view->priv->search_window != NULL) && gtk_widget_get_visible (view->priv->search_window)) {
|
if ((view->priv->search_window != NULL) && gtk_widget_get_visible (view->priv->search_window))
|
||||||
|
{
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_widget_has_focus (GTK_WIDGET (view))) {
|
if (!gtk_widget_has_focus (GTK_WIDGET(view)))
|
||||||
|
{
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -871,15 +942,16 @@ start_interactive_goto_line (XedView *view)
|
||||||
update_search_window_position (view);
|
update_search_window_position (view);
|
||||||
gtk_widget_show (view->priv->search_window);
|
gtk_widget_show (view->priv->search_window);
|
||||||
|
|
||||||
if (view->priv->search_entry_changed_id == 0) {
|
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);
|
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 =
|
view->priv->typeselect_flush_timeout = g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT,
|
||||||
g_timeout_add (XED_VIEW_SEARCH_DIALOG_TIMEOUT, (GSourceFunc) search_entry_flush_timeout, view);
|
(GSourceFunc) search_entry_flush_timeout, view);
|
||||||
|
|
||||||
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view), FALSE);
|
gtk_text_view_set_cursor_visible (GTK_TEXT_VIEW(view), FALSE);
|
||||||
gtk_widget_grab_focus (view->priv->search_entry);
|
gtk_widget_grab_focus (view->priv->search_entry);
|
||||||
|
@ -890,7 +962,8 @@ start_interactive_goto_line (XedView *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
xed_view_draw (GtkWidget *widget, cairo_t *cr)
|
xed_view_draw (GtkWidget *widget,
|
||||||
|
cairo_t *cr)
|
||||||
{
|
{
|
||||||
GtkTextView *text_view;
|
GtkTextView *text_view;
|
||||||
XedDocument *doc;
|
XedDocument *doc;
|
||||||
|
@ -900,7 +973,8 @@ xed_view_draw (GtkWidget *widget, cairo_t *cr)
|
||||||
|
|
||||||
doc = XED_DOCUMENT(gtk_text_view_get_buffer (text_view));
|
doc = XED_DOCUMENT(gtk_text_view_get_buffer (text_view));
|
||||||
window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
|
window = gtk_text_view_get_window (text_view, GTK_TEXT_WINDOW_TEXT);
|
||||||
if (gtk_cairo_should_draw_window (cr, window) && xed_document_get_enable_search_highlighting (doc)) {
|
if (gtk_cairo_should_draw_window (cr, window) && xed_document_get_enable_search_highlighting (doc))
|
||||||
|
{
|
||||||
GdkRectangle visible_rect;
|
GdkRectangle visible_rect;
|
||||||
GtkTextIter iter1, iter2;
|
GtkTextIter iter1, iter2;
|
||||||
|
|
||||||
|
@ -916,7 +990,8 @@ xed_view_draw (GtkWidget *widget, cairo_t *cr)
|
||||||
}
|
}
|
||||||
|
|
||||||
static GdkAtom
|
static GdkAtom
|
||||||
drag_get_uri_target (GtkWidget *widget, GdkDragContext *context)
|
drag_get_uri_target (GtkWidget *widget,
|
||||||
|
GdkDragContext *context)
|
||||||
{
|
{
|
||||||
GdkAtom target;
|
GdkAtom target;
|
||||||
GtkTargetList *tl;
|
GtkTargetList *tl;
|
||||||
|
@ -930,7 +1005,11 @@ drag_get_uri_target (GtkWidget *widget, GdkDragContext *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
xed_view_drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint timestamp)
|
xed_view_drag_motion (GtkWidget *widget,
|
||||||
|
GdkDragContext *context,
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
guint timestamp)
|
||||||
{
|
{
|
||||||
gboolean result;
|
gboolean result;
|
||||||
|
|
||||||
|
@ -940,7 +1019,8 @@ xed_view_drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y
|
||||||
result = GTK_WIDGET_CLASS (xed_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
|
result = GTK_WIDGET_CLASS (xed_view_parent_class)->drag_motion (widget, context, x, y, timestamp);
|
||||||
|
|
||||||
/* If this is a URL, deal with it here */
|
/* If this is a URL, deal with it here */
|
||||||
if (drag_get_uri_target (widget, context) != GDK_NONE) {
|
if (drag_get_uri_target (widget, context) != GDK_NONE)
|
||||||
|
{
|
||||||
gdk_drag_status (context, gdk_drag_context_get_suggested_action (context), timestamp);
|
gdk_drag_status (context, gdk_drag_context_get_suggested_action (context), timestamp);
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
}
|
}
|
||||||
|
@ -949,29 +1029,41 @@ xed_view_drag_motion (GtkWidget *widget, GdkDragContext *context, gint x, gint y
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xed_view_drag_data_received (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
|
xed_view_drag_data_received (GtkWidget *widget,
|
||||||
GtkSelectionData *selection_data, guint info, guint timestamp)
|
GdkDragContext *context,
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
GtkSelectionData *selection_data,
|
||||||
|
guint info,
|
||||||
|
guint timestamp)
|
||||||
{
|
{
|
||||||
gchar **uri_list;
|
gchar **uri_list;
|
||||||
|
|
||||||
/* If this is an URL emit DROP_URIS, otherwise chain up the signal */
|
/* If this is an URL emit DROP_URIS, otherwise chain up the signal */
|
||||||
if (info == TARGET_URI_LIST) {
|
if (info == TARGET_URI_LIST)
|
||||||
|
{
|
||||||
uri_list = xed_utils_drop_get_uris (selection_data);
|
uri_list = xed_utils_drop_get_uris (selection_data);
|
||||||
|
|
||||||
if (uri_list != NULL) {
|
if (uri_list != NULL)
|
||||||
|
{
|
||||||
g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
|
g_signal_emit (widget, view_signals[DROP_URIS], 0, uri_list);
|
||||||
g_strfreev (uri_list);
|
g_strfreev (uri_list);
|
||||||
gtk_drag_finish (context, TRUE, FALSE, timestamp);
|
gtk_drag_finish (context, TRUE, FALSE, timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
GTK_WIDGET_CLASS (xed_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info,
|
GTK_WIDGET_CLASS (xed_view_parent_class)->drag_data_received (widget, context, x, y, selection_data, info,
|
||||||
timestamp);
|
timestamp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
xed_view_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y, guint timestamp)
|
xed_view_drag_drop (GtkWidget *widget,
|
||||||
|
GdkDragContext *context,
|
||||||
|
gint x,
|
||||||
|
gint y,
|
||||||
|
guint timestamp)
|
||||||
{
|
{
|
||||||
gboolean result;
|
gboolean result;
|
||||||
GdkAtom target;
|
GdkAtom target;
|
||||||
|
@ -979,11 +1071,13 @@ xed_view_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
|
||||||
/* If this is a URL, just get the drag data */
|
/* If this is a URL, just get the drag data */
|
||||||
target = drag_get_uri_target (widget, context);
|
target = drag_get_uri_target (widget, context);
|
||||||
|
|
||||||
if (target != GDK_NONE) {
|
if (target != GDK_NONE)
|
||||||
|
{
|
||||||
gtk_drag_get_data (widget, context, target, timestamp);
|
gtk_drag_get_data (widget, context, target, timestamp);
|
||||||
result = TRUE;
|
result = TRUE;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
/* Chain up */
|
/* Chain up */
|
||||||
result = GTK_WIDGET_CLASS (xed_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
|
result = GTK_WIDGET_CLASS (xed_view_parent_class)->drag_drop (widget, context, x, y, timestamp);
|
||||||
}
|
}
|
||||||
|
@ -992,7 +1086,8 @@ xed_view_drag_drop (GtkWidget *widget, GdkDragContext *context, gint x, gint y,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_line_numbers_toggled (GtkMenu *menu, XedView *view)
|
show_line_numbers_toggled (GtkMenu *menu,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
gboolean show;
|
gboolean show;
|
||||||
|
|
||||||
|
@ -1009,8 +1104,8 @@ create_line_numbers_menu (GtkWidget *view)
|
||||||
menu = gtk_menu_new ();
|
menu = gtk_menu_new ();
|
||||||
|
|
||||||
item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
|
item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
|
||||||
gtk_check_menu_item_set_active (
|
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM(item),
|
||||||
GTK_CHECK_MENU_ITEM (item), gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
|
gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW(view)));
|
||||||
g_signal_connect(item, "toggled", G_CALLBACK (show_line_numbers_toggled), view);
|
g_signal_connect(item, "toggled", G_CALLBACK (show_line_numbers_toggled), view);
|
||||||
gtk_menu_shell_append (GTK_MENU_SHELL(menu), item);
|
gtk_menu_shell_append (GTK_MENU_SHELL(menu), item);
|
||||||
|
|
||||||
|
@ -1020,7 +1115,8 @@ create_line_numbers_menu (GtkWidget *view)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
show_line_numbers_menu (GtkWidget *view, GdkEventButton *event)
|
show_line_numbers_menu (GtkWidget *view,
|
||||||
|
GdkEventButton *event)
|
||||||
{
|
{
|
||||||
GtkWidget *menu;
|
GtkWidget *menu;
|
||||||
|
|
||||||
|
@ -1029,10 +1125,13 @@ show_line_numbers_menu (GtkWidget *view, GdkEventButton *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean
|
static gboolean
|
||||||
xed_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
|
xed_view_button_press_event (GtkWidget *widget,
|
||||||
|
GdkEventButton *event)
|
||||||
|
{
|
||||||
|
if ((event->type == GDK_BUTTON_PRESS)
|
||||||
|
&& (event->button == 3)
|
||||||
|
&& (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW(widget), GTK_TEXT_WINDOW_LEFT)))
|
||||||
{
|
{
|
||||||
if ((event->type == GDK_BUTTON_PRESS) && (event->button == 3) &&
|
|
||||||
(event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget), GTK_TEXT_WINDOW_LEFT))) {
|
|
||||||
|
|
||||||
show_line_numbers_menu (widget, event);
|
show_line_numbers_menu (widget, event);
|
||||||
|
|
||||||
|
@ -1043,7 +1142,10 @@ xed_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
search_highlight_updated_cb (XedDocument *doc, GtkTextIter *start, GtkTextIter *end, XedView *view)
|
search_highlight_updated_cb (XedDocument *doc,
|
||||||
|
GtkTextIter *start,
|
||||||
|
GtkTextIter *end,
|
||||||
|
XedView *view)
|
||||||
{
|
{
|
||||||
GdkRectangle visible_rect;
|
GdkRectangle visible_rect;
|
||||||
GdkRectangle updated_rect;
|
GdkRectangle updated_rect;
|
||||||
|
@ -1054,8 +1156,7 @@ search_highlight_updated_cb (XedDocument *doc, GtkTextIter *start, GtkTextIter *
|
||||||
|
|
||||||
text_view = GTK_TEXT_VIEW(view);
|
text_view = GTK_TEXT_VIEW(view);
|
||||||
|
|
||||||
g_return_if_fail (
|
g_return_if_fail(xed_document_get_enable_search_highlighting (XED_DOCUMENT (gtk_text_view_get_buffer (text_view))));
|
||||||
xed_document_get_enable_search_highlighting (XED_DOCUMENT (gtk_text_view_get_buffer (text_view))));
|
|
||||||
|
|
||||||
/* get visible area */
|
/* get visible area */
|
||||||
gtk_text_view_get_visible_rect (text_view, &visible_rect);
|
gtk_text_view_get_visible_rect (text_view, &visible_rect);
|
||||||
|
@ -1069,7 +1170,8 @@ search_highlight_updated_cb (XedDocument *doc, GtkTextIter *start, GtkTextIter *
|
||||||
updated_rect.width = visible_rect.width;
|
updated_rect.width = visible_rect.width;
|
||||||
|
|
||||||
/* intersect both rectangles to see whether we need to queue a redraw */
|
/* intersect both rectangles to see whether we need to queue a redraw */
|
||||||
if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect)) {
|
if (gdk_rectangle_intersect (&updated_rect, &visible_rect, &redraw_rect))
|
||||||
|
{
|
||||||
GdkRectangle widget_rect;
|
GdkRectangle widget_rect;
|
||||||
gtk_text_view_buffer_to_window_coords (text_view, GTK_TEXT_WINDOW_WIDGET, redraw_rect.x, redraw_rect.y,
|
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.x, &widget_rect.y);
|
||||||
|
@ -1096,51 +1198,65 @@ delete_line (GtkTextView *text_view,
|
||||||
|
|
||||||
/* If there is a selection delete the selected lines and
|
/* If there is a selection delete the selected lines and
|
||||||
* ignore count */
|
* ignore count */
|
||||||
if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end)) {
|
if (gtk_text_buffer_get_selection_bounds (buffer, &start, &end))
|
||||||
|
{
|
||||||
gtk_text_iter_order (&start, &end);
|
gtk_text_iter_order (&start, &end);
|
||||||
if (gtk_text_iter_starts_line (&end)) {
|
if (gtk_text_iter_starts_line (&end))
|
||||||
|
{
|
||||||
/* Do no delete the line with the cursor if the cursor
|
/* Do no delete the line with the cursor if the cursor
|
||||||
* is at the beginning of the line */
|
* is at the beginning of the line */
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
count = 1;
|
count = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
gtk_text_iter_set_line_offset (&start, 0);
|
gtk_text_iter_set_line_offset (&start, 0);
|
||||||
|
|
||||||
if (count > 0) {
|
if (count > 0)
|
||||||
|
{
|
||||||
gtk_text_iter_forward_lines (&end, count);
|
gtk_text_iter_forward_lines (&end, count);
|
||||||
if (gtk_text_iter_is_end (&end)) {
|
if (gtk_text_iter_is_end (&end))
|
||||||
if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start)) {
|
{
|
||||||
|
if (gtk_text_iter_backward_line (&start) && !gtk_text_iter_ends_line (&start))
|
||||||
|
{
|
||||||
gtk_text_iter_forward_to_line_end (&start);
|
gtk_text_iter_forward_to_line_end (&start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (count < 0) {
|
else if (count < 0)
|
||||||
if (!gtk_text_iter_ends_line (&end)) {
|
{
|
||||||
|
if (!gtk_text_iter_ends_line (&end))
|
||||||
|
{
|
||||||
gtk_text_iter_forward_to_line_end (&end);
|
gtk_text_iter_forward_to_line_end (&end);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (count < 0) {
|
while (count < 0)
|
||||||
if (!gtk_text_iter_backward_line (&start)) {
|
{
|
||||||
|
if (!gtk_text_iter_backward_line (&start))
|
||||||
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
++count;
|
++count;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count == 0) {
|
if (count == 0)
|
||||||
if (!gtk_text_iter_ends_line (&start)) {
|
{
|
||||||
|
if (!gtk_text_iter_ends_line (&start))
|
||||||
|
{
|
||||||
gtk_text_iter_forward_to_line_end (&start);
|
gtk_text_iter_forward_to_line_end (&start);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_text_iter_forward_line (&end);
|
gtk_text_iter_forward_line (&end);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!gtk_text_iter_equal (&start, &end)) {
|
if (!gtk_text_iter_equal (&start, &end))
|
||||||
|
{
|
||||||
GtkTextIter cur = start;
|
GtkTextIter cur = start;
|
||||||
gtk_text_iter_set_line_offset (&cur, 0);
|
gtk_text_iter_set_line_offset (&cur, 0);
|
||||||
gtk_text_buffer_begin_user_action (buffer);
|
gtk_text_buffer_begin_user_action (buffer);
|
||||||
|
@ -1149,19 +1265,23 @@ delete_line (GtkTextView *text_view,
|
||||||
gtk_text_buffer_end_user_action (buffer);
|
gtk_text_buffer_end_user_action (buffer);
|
||||||
gtk_text_view_scroll_mark_onscreen (text_view, gtk_text_buffer_get_insert (buffer));
|
gtk_text_view_scroll_mark_onscreen (text_view, gtk_text_buffer_get_insert (buffer));
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
gtk_widget_error_bell (GTK_WIDGET(text_view));
|
gtk_widget_error_bell (GTK_WIDGET(text_view));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
xed_view_delete_from_cursor (GtkTextView *text_view, GtkDeleteType type, gint count)
|
xed_view_delete_from_cursor (GtkTextView *text_view,
|
||||||
|
GtkDeleteType type,
|
||||||
|
gint count)
|
||||||
{
|
{
|
||||||
/* We override the standard handler for delete_from_cursor since
|
/* We override the standard handler for delete_from_cursor since
|
||||||
the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
|
the GTK_DELETE_PARAGRAPHS case is not implemented as we like (i.e. it
|
||||||
does not remove the carriage return in the previous line)
|
does not remove the carriage return in the previous line)
|
||||||
*/
|
*/
|
||||||
switch (type) {
|
switch (type)
|
||||||
|
{
|
||||||
case GTK_DELETE_PARAGRAPHS:
|
case GTK_DELETE_PARAGRAPHS:
|
||||||
delete_line (text_view, count);
|
delete_line (text_view, count);
|
||||||
break;
|
break;
|
||||||
|
|
1229
xed/xed-window.c
1229
xed/xed-window.c
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue