[Xfce4-commits] <mousepad:master> * mousepad/mousepad-window.c: Fix opening recent files that do not exist. * mousepad/mousepad-window.c, mousepad/mousepad-document.c: Update the window title correctly and remove the unused notify::title signals.
Nick Schermer
noreply at xfce.org
Sat May 5 21:30:15 CEST 2012
Updating branch refs/heads/master
to 7b33a930bf6efc2c879dbb304e6ee0fd4adb2b5a (commit)
from 46e78d17d7e5fc5ae16f9e9ee6ae8103e683af53 (commit)
commit 7b33a930bf6efc2c879dbb304e6ee0fd4adb2b5a
Author: Nick Schermer <nick at xfce.org>
Date: Fri Apr 6 16:36:12 2007 +0000
* mousepad/mousepad-window.c: Fix opening recent files that do not exist.
* mousepad/mousepad-window.c, mousepad/mousepad-document.c: Update the window
title correctly and remove the unused notify::title signals.
(Old svn revision: 25404)
ChangeLog | 6 +++++
mousepad/mousepad-document.c | 29 ++++++++++++---------------
mousepad/mousepad-file.c | 9 ++++---
mousepad/mousepad-window.c | 43 +++++++++++++++++++++--------------------
4 files changed, 46 insertions(+), 41 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3c70f4a..6102442 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
2007-04-06 Nick Schermer <nick at xfce.org>
+ * mousepad/mousepad-window.c: Fix opening recent files that do not exist.
+ * mousepad/mousepad-window.c, mousepad/mousepad-document.c: Update the window
+ title correctly and remove the unused notify::title signals.
+
+
+2007-04-06 Nick Schermer <nick at xfce.org>
* mousepad/mousepad-document.c: Because we don't use invisible characters in
the text buffer, I was able to write a custom iter search function that can
search in both directions, can be case insensitive, no string duplications
diff --git a/mousepad/mousepad-document.c b/mousepad/mousepad-document.c
index 8310f09..f64d418 100644
--- a/mousepad/mousepad-document.c
+++ b/mousepad/mousepad-document.c
@@ -70,9 +70,7 @@ static gboolean mousepad_document_iter_search (const GtkTextIter
GtkTextIter *match_end,
const GtkTextIter *limit,
gboolean forward_search);
-static void mousepad_document_update_tab (MousepadDocument *document,
- GParamSpec *pspec,
- GtkWidget *ebox);
+static void mousepad_document_update_tab (MousepadDocument *document);
static void mousepad_document_tab_button_clicked (GtkWidget *widget,
MousepadDocument *document);
@@ -104,7 +102,8 @@ struct _MousepadDocument
/* the highlight tag */
GtkTextTag *tag;
- /* the tab label */
+ /* the tab label and ebox */
+ GtkWidget *ebox;
GtkWidget *label;
/* absolute path of the file */
@@ -472,6 +471,9 @@ mousepad_document_set_filename (MousepadDocument *document,
/* create the new names */
document->filename = g_strdup (filename);
document->display_name = g_filename_display_basename (filename);
+
+ /* update the tab label and tooltip */
+ mousepad_document_update_tab (document);
}
@@ -1034,7 +1036,6 @@ GtkWidget *
mousepad_document_get_tab_label (MousepadDocument *document)
{
GtkWidget *hbox;
- GtkWidget *ebox;
GtkWidget *button, *image;
/* create the box */
@@ -1042,21 +1043,19 @@ mousepad_document_get_tab_label (MousepadDocument *document)
gtk_widget_show (hbox);
/* the ebox */
- ebox = g_object_new (GTK_TYPE_EVENT_BOX, "border-width", 2, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), ebox, TRUE, TRUE, 0);
- gtk_widget_show (ebox);
+ document->ebox = g_object_new (GTK_TYPE_EVENT_BOX, "border-width", 2, NULL);
+ gtk_box_pack_start (GTK_BOX (hbox), document->ebox, TRUE, TRUE, 0);
+ gtk_widget_show (document->ebox);
/* create the label */
document->label = g_object_new (GTK_TYPE_LABEL,
"selectable", FALSE,
"xalign", 0.0, NULL);
- gtk_container_add (GTK_CONTAINER (ebox), document->label);
+ gtk_container_add (GTK_CONTAINER (document->ebox), document->label);
gtk_widget_show (document->label);
/* update the tab and add signal to the ebox for a title update */
- mousepad_document_update_tab (document, NULL, ebox);
- g_signal_connect (G_OBJECT (document), "notify::title",
- G_CALLBACK (mousepad_document_update_tab), ebox);
+ mousepad_document_update_tab (document);
/* create the button */
button = g_object_new (GTK_TYPE_BUTTON,
@@ -1082,16 +1081,14 @@ mousepad_document_get_tab_label (MousepadDocument *document)
static void
-mousepad_document_update_tab (MousepadDocument *document,
- GParamSpec *pspec,
- GtkWidget *ebox)
+mousepad_document_update_tab (MousepadDocument *document)
{
/* set the tab label */
gtk_label_set_text (GTK_LABEL (document->label),
mousepad_document_get_title (document, FALSE));
/* set the tab tooltip */
- mousepad_gtk_set_tooltip (ebox, document->filename);
+ mousepad_gtk_set_tooltip (document->ebox, document->filename);
}
diff --git a/mousepad/mousepad-file.c b/mousepad/mousepad-file.c
index e0d6a17..8dc18a6 100644
--- a/mousepad/mousepad-file.c
+++ b/mousepad/mousepad-file.c
@@ -246,18 +246,16 @@ mousepad_file_read_to_buffer (const gchar *filename,
_mousepad_return_val_if_fail (error == NULL || *error == NULL, FALSE);
_mousepad_return_val_if_fail (filename != NULL, FALSE);
- /* get the start point in the buffer */
- gtk_text_buffer_get_start_iter (buffer, &start_iter);
-
/* open the file for reading */
fd = open (filename, O_RDONLY);
if (G_UNLIKELY (fd < 0))
{
- /* the file does not exists, so probably the user ran 'mousepad newfile' from the command line */
+ /* the file does not exists, so probably the user ran 'mousepad <new-file-name>' from the command line */
if (G_LIKELY (errno == ENOENT))
{
/* we can write the new file */
*readonly = FALSE;
+
return TRUE;
}
else
@@ -283,6 +281,9 @@ mousepad_file_read_to_buffer (const gchar *filename,
/* check if we're allowed to write the file */
*readonly = !((statb.st_mode & 00222) != 0 && access (filename, W_OK) == 0);
+ /* get the start point in the buffer */
+ gtk_text_buffer_get_start_iter (buffer, &start_iter);
+
#ifdef HAVE_MMAP
/* try mmap() for files not larger than 8MB */
content = (statb.st_size <= 8 * 1024 * 1024)
diff --git a/mousepad/mousepad-window.c b/mousepad/mousepad-window.c
index b223468..8779309 100644
--- a/mousepad/mousepad-window.c
+++ b/mousepad/mousepad-window.c
@@ -107,9 +107,6 @@ static gboolean mousepad_window_tab_popup (GtkNotebo
MousepadWindow *window);
/* document signals */
-static void mousepad_window_notify_title (MousepadDocument *document,
- GParamSpec *pspec,
- MousepadWindow *window);
static void mousepad_window_modified_changed (MousepadDocument *document,
MousepadWindow *window);
static void mousepad_window_cursor_changed (MousepadDocument *document,
@@ -877,6 +874,9 @@ mousepad_window_save (MousepadWindow *window,
/* set the filename */
mousepad_document_set_filename (document, new_filename);
+ /* update the window title */
+ mousepad_window_set_title (window, document);
+
/* add the new document to the recent menu */
mousepad_window_recent_add (window, new_filename);
@@ -953,7 +953,6 @@ mousepad_window_add (MousepadWindow *window,
g_signal_connect (G_OBJECT (document), "modified-changed", G_CALLBACK (mousepad_window_modified_changed), window);
g_signal_connect (G_OBJECT (document), "cursor-changed", G_CALLBACK (mousepad_window_cursor_changed), window);
g_signal_connect (G_OBJECT (document), "overwrite-changed", G_CALLBACK (mousepad_window_overwrite_changed), window);
- g_signal_connect (G_OBJECT (document), "notify::title", G_CALLBACK (mousepad_window_notify_title), window);
/* insert the page right from the active tab */
page = gtk_notebook_get_current_page (GTK_NOTEBOOK (window->notebook));
@@ -1234,16 +1233,6 @@ mousepad_window_tab_popup (GtkNotebook *notebook,
* Document Signals Functions
**/
static void
-mousepad_window_notify_title (MousepadDocument *document,
- GParamSpec *pspec,
- MousepadWindow *window)
-{
- mousepad_window_set_title (window, document);
-}
-
-
-
-static void
mousepad_window_modified_changed (MousepadDocument *document,
MousepadWindow *window)
{
@@ -1265,7 +1254,7 @@ mousepad_window_cursor_changed (MousepadDocument *document,
_mousepad_return_if_fail (MOUSEPAD_IS_DOCUMENT (document));
/* set the new statusbar position */
- if (G_LIKELY (window->statusbar))
+ if (window->statusbar)
mousepad_statusbar_set_cursor_position (MOUSEPAD_STATUSBAR (window->statusbar), line, column);
}
@@ -1280,7 +1269,7 @@ mousepad_window_overwrite_changed (MousepadDocument *document,
_mousepad_return_if_fail (MOUSEPAD_IS_DOCUMENT (document));
/* set the new overwrite mode in the statusbar */
- if (G_LIKELY (window->statusbar))
+ if (window->statusbar)
mousepad_statusbar_set_overwrite (MOUSEPAD_STATUSBAR (window->statusbar), overwrite);
}
@@ -1735,7 +1724,7 @@ mousepad_window_recent_clear (MousepadWindow *window)
if (G_UNLIKELY (error != NULL))
{
mousepad_dialogs_show_error (GTK_WINDOW (window), error,
- _("Failed to remove an item from the recent history"));
+ _("Failed to remove an item from the document history"));
g_error_free (error);
}
}
@@ -1839,6 +1828,7 @@ mousepad_window_action_open_recent (GtkAction *action,
MousepadWindow *window)
{
const gchar *uri;
+ GError *error = NULL;
gchar *filename;
gboolean succeed = FALSE;
GtkRecentInfo *info;
@@ -1856,10 +1846,21 @@ mousepad_window_action_open_recent (GtkAction *action,
if (G_LIKELY (filename != NULL))
{
- /* open a new tab */
- succeed = mousepad_window_open_tab (window, filename);
+ /* open the file in a new tab if it exists */
+ if (g_file_test (filename, G_FILE_TEST_EXISTS))
+ succeed = mousepad_window_open_tab (window, filename);
+ else
+ {
+ /* create a warning */
+ g_set_error (&error, G_FILE_ERROR, G_FILE_ERROR_IO,
+ _("Failed to open \"%s\" for reading. It will be removed from the document history"), filename);
+
+ /* show the warning and cleanup */
+ mousepad_dialogs_show_error (GTK_WINDOW (window), error, _("Failed to open file"));
+ g_error_free (error);
+ }
- /* update the recent history */
+ /* update the document history */
if (G_LIKELY (succeed))
/* update the recent manager count and time */
gtk_recent_manager_add_item (window->recent_manager, uri);
@@ -1885,7 +1886,7 @@ mousepad_window_action_clear_recent (GtkAction *action,
/* avoid updating the menu */
lock_menu_updates = TRUE;
- /* clear the recent history */
+ /* clear the document history */
mousepad_window_recent_clear (window);
/* allow menu updates again */
More information about the Xfce4-commits
mailing list