From 24a9f1dd42923442c7a769c0b201c412f7c90528 Mon Sep 17 00:00:00 2001 From: Christian Dywan Date: Sun, 6 Jul 2008 16:13:42 +0200 Subject: [PATCH] Limit trash to contain 10 items --- midori/main.c | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/midori/main.c b/midori/main.c index 4bd1f460..1f941893 100644 --- a/midori/main.c +++ b/midori/main.c @@ -30,7 +30,8 @@ #include #endif -static void stock_items_init(void) +static void +stock_items_init (void) { static GtkStockItem items[] = { @@ -321,6 +322,18 @@ search_engines_save_to_file (MidoriWebList* search_engines, return saved; } +static void +midori_web_list_add_item_cb (MidoriWebList* trash, + GObject* item) +{ + guint n = midori_web_list_get_length (trash); + if (n > 10) + { + GObject* obsolete_item = midori_web_list_get_nth_item (trash, 0); + g_object_unref (obsolete_item); + } +} + int main (int argc, char** argv) @@ -439,7 +452,7 @@ main (int argc, if (!katze_xbel_folder_from_file (xbel_trash, config_file, &error)) { if (error->code != G_FILE_ERROR_NOENT) - g_string_append_printf(error_messages, + g_string_append_printf (error_messages, _("The trash couldn't be loaded. %s\n"), error->message); g_error_free (error); } @@ -448,13 +461,22 @@ main (int argc, /* In case of errors */ if (error_messages->len) { + GdkScreen* screen; + GtkIconTheme* icon_theme; GtkWidget* dialog = gtk_message_dialog_new ( NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE, _("The following errors occured:")); gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), FALSE); gtk_window_set_title (GTK_WINDOW (dialog), g_get_application_name ()); - /* FIXME: Use custom program icon */ - gtk_window_set_icon_name (GTK_WINDOW (dialog), "web-browser"); + screen = gtk_widget_get_screen (dialog); + if (screen) + { + icon_theme = gtk_icon_theme_get_for_screen (screen); + if (gtk_icon_theme_has_icon (icon_theme, "midori")) + gtk_window_set_icon_name (GTK_WINDOW (dialog), "midori"); + else + gtk_window_set_icon_name (GTK_WINDOW (dialog), "web-browser"); + } gtk_message_dialog_format_secondary_text ( GTK_MESSAGE_DIALOG (dialog), "%s", error_messages->str); gtk_dialog_add_buttons (GTK_DIALOG (dialog), @@ -508,7 +530,6 @@ main (int argc, stock_items_init (); - // FIXME: Implement 10 item limit for trash MidoriWebList* trash = midori_web_list_new (); guint n = katze_xbel_folder_get_n_items (xbel_trash); guint i; @@ -517,6 +538,8 @@ main (int argc, KatzeXbelItem* item = katze_xbel_folder_get_nth_item (xbel_trash, i); midori_web_list_add_item (trash, item); } + g_signal_connect_after (trash, "add-item", + G_CALLBACK (midori_web_list_add_item_cb), NULL); MidoriApp* app = g_object_new (MIDORI_TYPE_APP, "settings", settings,