[Xfce4-commits] r23758 - xarchiver/branches/xarchiver-psybsd/src
Stephan Arts
stephan at xfce.org
Mon Nov 6 14:09:24 CET 2006
Author: stephan
Date: 2006-11-06 13:09:24 +0000 (Mon, 06 Nov 2006)
New Revision: 23758
Modified:
xarchiver/branches/xarchiver-psybsd/src/application.c
xarchiver/branches/xarchiver-psybsd/src/application.h
xarchiver/branches/xarchiver-psybsd/src/main.c
xarchiver/branches/xarchiver-psybsd/src/main_window.c
xarchiver/branches/xarchiver-psybsd/src/main_window.h
xarchiver/branches/xarchiver-psybsd/src/notebook.c
Log:
Implemented application object
Modified: xarchiver/branches/xarchiver-psybsd/src/application.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/application.c 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/application.c 2006-11-06 13:09:24 UTC (rev 23758)
@@ -21,11 +21,18 @@
#include <glib.h>
#include <gtk/gtk.h>
#include <libxarchiver/libxarchiver.h>
+
+#include <gettext.h>
+
+#include "new_dialog.h"
+#include "add_dialog.h"
+#include "extract_dialog.h"
+
#include "settings.h"
#include "archive_store.h"
#include "navigation_bar.h"
+#include "application.h"
#include "main_window.h"
-#include "application.h"
static void
xa_application_class_init(XAApplicationClass *archive_class);
@@ -34,11 +41,10 @@
xa_application_init(XAApplication *archive);
static void
xa_application_finalize(GObject *object);
+static void
+xa_application_dispose(GObject *object);
-/* properties */
-enum {
- XA_APPLICATION_NAV_HISTORY = 1
-};
+static gint xa_application_signals[1];
GType
xa_application_get_type ()
@@ -61,26 +67,51 @@
NULL
};
- xa_application_type = g_type_register_static (GTK_TYPE_CONTAINER, "XAApplication", &xa_application_info, 0);
+ xa_application_type = g_type_register_static (G_TYPE_OBJECT, "XAApplication", &xa_application_info, 0);
}
return xa_application_type;
}
+/* Destroy code was copied from gtk+-2.8.16 */
static void
xa_application_class_init(XAApplicationClass *application_class)
{
GObjectClass *object_class = G_OBJECT_CLASS (application_class);
object_class->finalize = xa_application_finalize;
+ object_class->dispose = xa_application_dispose;
+
+ xa_application_signals[0] = g_signal_new("destroy",
+ G_TYPE_FROM_CLASS(application_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0);
}
static void
xa_application_init(XAApplication *application)
{
+ application->settings = xa_settings_new();
+ xa_settings_set_group(application->settings, "Global");
+
+ application->props._tabs = xa_settings_read_bool_entry(application->settings, "UseTabs", TRUE);
}
static void
+xa_application_dispose(GObject *object)
+{
+ g_signal_emit(object, xa_application_signals[0], 0, object);
+}
+
+static void
xa_application_finalize(GObject *object)
{
+#ifdef DEBUG
+ g_debug("Application Destroyed");
+#endif
}
XAApplication *
@@ -98,5 +129,134 @@
GtkWidget *
xa_application_new_window(XAApplication *app)
{
- return xa_main_window_new(app->icon_theme);
+ GtkWidget *window = xa_main_window_new(app, app->icon_theme);
+ gtk_widget_set_size_request(window, 500, 300);
+ return window;
}
+
+void
+cb_xa_application_archive_status_changed(LXAArchive *archive, gpointer data)
+{
+ XAApplication *app = XA_APPLICATION(data);
+
+ switch(archive->status)
+ {
+ case LXA_ARCHIVESTATUS_IDLE:
+ lxa_close_archive(archive);
+ case LXA_ARCHIVESTATUS_ERROR:
+ case LXA_ARCHIVESTATUS_USERBREAK:
+ g_object_unref(app);
+ break;
+ default:
+ break;
+ }
+}
+
+gint
+xa_application_extract_archive(XAApplication *app, gchar *archive_path, gchar *dest_path)
+{
+ GtkWidget *dialog = NULL;
+ gint result = 0;
+ LXAArchive *lp_archive = NULL;
+ LXAArchiveSupport *lp_support = NULL;
+
+ if(!lxa_open_archive(archive_path, &lp_archive))
+ {
+ g_signal_connect(G_OBJECT(lp_archive), "lxa_status_changed", G_CALLBACK(cb_xa_application_archive_status_changed), app);
+ lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
+ if(!dest_path)
+ {
+ dialog = xa_extract_archive_dialog_new(lp_support, lp_archive, FALSE);
+ result = gtk_dialog_run (GTK_DIALOG (dialog) );
+ if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
+ {
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ lxa_close_archive(lp_archive);
+ }
+ if(result == GTK_RESPONSE_OK)
+ {
+ dest_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ lxa_archive_support_extract(lp_support, lp_archive, dest_path, NULL);
+ g_free(dest_path);
+ dest_path = NULL;
+ }
+ }
+ else
+ lxa_archive_support_extract(lp_support, lp_archive, dest_path, NULL);
+ }
+ g_object_ref(app);
+ return 0;
+}
+
+gint
+xa_application_new_archive(XAApplication *app, gchar *archive_path, GSList *files)
+{
+ GtkWidget *dialog = NULL;
+ gint result = 0;
+ LXAArchive *lp_archive = NULL;
+ LXAArchiveSupport *lp_support = NULL;
+
+ if(!archive_path)
+ {
+ dialog = xa_new_archive_dialog_new();
+ result = gtk_dialog_run (GTK_DIALOG (dialog) );
+ if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
+ {
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ return 2;
+ }
+ if(result == GTK_RESPONSE_OK)
+ {
+ archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ }
+ if(lxa_new_archive(archive_path, TRUE, NULL, &lp_archive))
+ {
+ /*
+ * Could not create archive (mime type unsupported)
+ */
+ dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Could not create archive, MIME-type unsupported"));
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
+ gtk_dialog_run (GTK_DIALOG (dialog) );
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ return 1;
+ }
+ g_free(archive_path);
+ archive_path = NULL;
+ }
+ else
+ {
+ if(lxa_open_archive(archive_path, &lp_archive))
+ {
+ /*
+ * Could not open archive (mime type not supported or file did not exist)
+ * Should be a more specific error message.
+ */
+ dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Could not open archive, MIME-type unsupported or file did not exist"));
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
+ gtk_dialog_run (GTK_DIALOG (dialog) );
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ return 1;
+ }
+ }
+ g_signal_connect(G_OBJECT(lp_archive), "lxa_status_changed", G_CALLBACK(cb_xa_application_archive_status_changed), NULL);
+ lp_support = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
+ lxa_archive_support_add(lp_support, lp_archive, files);
+ g_object_ref(app);
+ return 0;
+}
+
+gint
+xa_application_open_archive(XAApplication *app, GtkWidget *window, gchar *path)
+{
+ if(!window)
+ {
+ window = xa_application_new_window(app);
+ }
+ if(app->props._tabs)
+ xa_main_window_open_archive(XA_MAIN_WINDOW(window), path, -1);
+ else
+ xa_main_window_open_archive(XA_MAIN_WINDOW(window), path, 0);
+ gtk_widget_show_all(window);
+ return 0;
+}
Modified: xarchiver/branches/xarchiver-psybsd/src/application.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/application.h 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/application.h 2006-11-06 13:09:24 UTC (rev 23758)
@@ -47,6 +47,9 @@
GObject parent;
GtkIconTheme *icon_theme;
XASettings *settings;
+ struct {
+ gboolean _tabs;
+ } props;
};
typedef struct _XAApplicationClass XAApplicationClass;
@@ -61,5 +64,10 @@
GtkWidget *xa_application_new_window(XAApplication *);
+gint xa_application_extract_archive(XAApplication *, gchar *, gchar *);
+gint xa_application_new_archive(XAApplication *, gchar *, GSList *);
+
+gint xa_application_open_archive(XAApplication *, GtkWidget *, gchar *);
+
G_END_DECLS
#endif /* __XARCHIVER_APPLICATION_H__*/
Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c 2006-11-06 13:09:24 UTC (rev 23758)
@@ -1,4 +1,5 @@
-/* * Copyright (c) 2006 Stephan Arts <psybsd at gmail.com>
+/*
+ * Copyright (c) 2006 Stephan Arts <psybsd at gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -24,13 +25,11 @@
#include <gettext.h>
#include "settings.h"
-#include "new_dialog.h"
-#include "add_dialog.h"
-#include "extract_dialog.h"
#include "main.h"
#include "archive_store.h"
#include "navigation_bar.h"
#include "notebook.h"
+#include "application.h"
#include "main_window.h"
gboolean version = FALSE;
@@ -99,11 +98,8 @@
int main(int argc, char **argv)
{
- gint result = 0;
- GtkWidget *dialog = NULL;
GtkWidget *main_window = NULL;
- LXAArchive *lp_archive;
- LXAArchiveSupport *lpSupport;
+ XAApplication *xa_app;
GtkIconTheme *xa_icon_theme;
GError *cli_error = NULL;
gint i = 0;
@@ -136,6 +132,11 @@
return 0;
}
+ xa_icon_theme = gtk_icon_theme_get_default();
+ xa_app = xa_application_new(xa_icon_theme);
+
+ g_signal_connect(G_OBJECT(xa_app), "destroy", G_CALLBACK(gtk_main_quit), NULL);
+
if(extract_archive_path || extract_archive)
{
if(argc == 1)
@@ -144,119 +145,38 @@
}
for(i = 1; i < argc; i++)
{
- if(!lxa_open_archive(argv[i], &lp_archive))
- {
- g_signal_connect(G_OBJECT(lp_archive), "lxa_status_changed", G_CALLBACK(xa_archive_status_changed), NULL);
- opened_archives++;
- lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
- if(!extract_archive_path)
- {
- dialog = xa_extract_archive_dialog_new(lpSupport, lp_archive, FALSE);
- result = gtk_dialog_run (GTK_DIALOG (dialog) );
- if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
- {
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- lxa_close_archive(lp_archive);
- opened_archives--;
- }
- if(result == GTK_RESPONSE_OK)
- {
- extract_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- lxa_archive_support_extract(lpSupport, lp_archive, extract_archive_path, NULL);
- g_free(extract_archive_path);
- extract_archive_path = NULL;
- }
- }
- else
- lxa_archive_support_extract(lpSupport, lp_archive, extract_archive_path, NULL);
- }
+ xa_application_extract_archive(xa_app, argv[i], extract_archive_path);
}
}
if(new_archive || add_archive_path)
{
- if(!add_archive_path)
- {
- dialog = xa_new_archive_dialog_new();
- result = gtk_dialog_run (GTK_DIALOG (dialog) );
- if(result == GTK_RESPONSE_CANCEL || result == GTK_RESPONSE_DELETE_EVENT)
- {
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- return 2;
- }
- if(result == GTK_RESPONSE_OK)
- {
- add_archive_path = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- }
- if(lxa_new_archive(add_archive_path, TRUE, NULL, &lp_archive))
- {
- /*
- * Could not create archive (mime type unsupported)
- */
- dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Could not create archive, MIME-type unsupported"));
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- gtk_dialog_run (GTK_DIALOG (dialog) );
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- return 1;
- }
- else
- opened_archives++;
- }
- else
- {
- if(lxa_open_archive(add_archive_path, &lp_archive))
- {
- /*
- * Could not open archive (mime type not supported or file did not exist)
- * Should be a more specific error message.
- */
- dialog = gtk_message_dialog_new (NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Could not open archive, MIME-type unsupported or file did not exist"));
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- gtk_dialog_run (GTK_DIALOG (dialog) );
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- return 1;
- }
- else
- opened_archives++;
- }
- g_signal_connect(G_OBJECT(lp_archive), "lxa_status_changed", G_CALLBACK(xa_archive_status_changed), NULL);
GSList *files = NULL;
for(i = 1; i < argc; i++)
{
files = g_slist_prepend(files, argv[i]);
}
- lpSupport = lxa_get_support_for_mime(lxa_mime_info_get_name(lp_archive->mime_info));
- lxa_archive_support_add(lpSupport, lp_archive, files);
+ xa_application_new_archive(xa_app, add_archive_path, files);
}
if(!new_archive && !add_archive_path && !extract_archive && !extract_archive_path)
{
- xa_icon_theme = gtk_icon_theme_get_default();
if(argc > 1)
{
- opened_archives++;
+ if(xa_app->props._tabs)
+ main_window = xa_application_new_window(xa_app);
for(i = 1; i < argc; i++)
{
- /* Show main window */
- main_window = xa_main_window_new(xa_icon_theme);
- g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(cb_main_window_destroy), NULL);
-
+ xa_application_open_archive(xa_app, main_window, argv[i]);
}
- opened_archives--;
- if(opened_archives <= 0)
- return 1;
} else
{
- /* Show main window */
- main_window = xa_main_window_new(xa_icon_theme);
- g_signal_connect(G_OBJECT(main_window), "destroy", G_CALLBACK(cb_main_window_destroy), NULL);
- gtk_widget_set_size_request(main_window, 500, 350);
- gtk_widget_show_all(main_window);
+ main_window = xa_application_new_window(xa_app);
+ gtk_widget_show(GTK_WIDGET(main_window));
}
- } else
- if(!opened_archives)
- return 0;
+ }
+
+ g_object_unref(xa_app);
gtk_main();
lxa_destroy();
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.c 2006-11-06 13:09:24 UTC (rev 23758)
@@ -37,6 +37,7 @@
#endif /* ENABLE_TOOLBAR */
#include "notebook.h"
+#include "application.h"
#include "main_window.h"
#include "new_dialog.h"
@@ -138,6 +139,7 @@
xa_settings_save(window->settings);
gtk_widget_unref(GTK_WIDGET(window->navigationbar));
+ g_object_unref(G_OBJECT(window->app));
}
static void
@@ -153,7 +155,7 @@
gboolean sort_case = TRUE;
gboolean sort_folders = TRUE;
- window->settings = xa_settings_new(NULL);
+ window->settings = xa_settings_new();
main_vbox = gtk_vbox_new(FALSE, 0);
@@ -244,7 +246,10 @@
gtk_box_pack_start(GTK_BOX(main_vbox), toolbar, FALSE, FALSE, 0);
if(window->navigationbar)
+ {
gtk_box_pack_start(GTK_BOX(main_vbox), GTK_WIDGET(window->navigationbar), FALSE, FALSE, 0);
+ gtk_widget_show_all(GTK_WIDGET(window->navigationbar));
+ }
gtk_box_pack_start(GTK_BOX(main_vbox), window->notebook, TRUE, TRUE, 0);
gtk_box_pack_end(GTK_BOX(main_vbox), window->statusbar, FALSE, FALSE, 0);
@@ -258,24 +263,27 @@
}
GtkWidget *
-xa_main_window_new(GtkIconTheme *icon_theme)
+xa_main_window_new(XAApplication *app, GtkIconTheme *icon_theme)
{
- GtkWidget *window;
+ XAMainWindow *window;
GdkPixbuf *icon;
window = g_object_new(xa_main_window_get_type(),
"title", "Xarchiver " PACKAGE_VERSION,
NULL);
- XA_MAIN_WINDOW(window)->icon_theme = icon_theme;
+ window->icon_theme = icon_theme;
- xa_notebook_set_icon_theme(XA_NOTEBOOK(XA_MAIN_WINDOW(window)->notebook), icon_theme);
+ xa_notebook_set_icon_theme(XA_NOTEBOOK(window->notebook), icon_theme);
icon = gtk_icon_theme_load_icon(icon_theme, "xarchiver", 24, 0, NULL);
+ g_object_ref(app);
+ window->app = app;
+
gtk_window_set_icon(GTK_WINDOW(window), icon);
- return window;
+ return GTK_WIDGET(window);
}
static void
@@ -483,7 +491,8 @@
support = lxa_get_support_for_mime(lxa_mime_info_get_name(archive->mime_info));
if(replace < 0)
xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
- /* else */
+ else
+ xa_notebook_add_archive(XA_NOTEBOOK(window->notebook), archive, support);
return 0;
}
return 1;
Modified: xarchiver/branches/xarchiver-psybsd/src/main_window.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/main_window.h 2006-11-06 13:09:24 UTC (rev 23758)
@@ -97,6 +97,7 @@
XANavigationBar *navigationbar;
GtkWidget *notebook;
GtkWidget *statusbar;
+ XAApplication *app;
};
typedef struct _XAMainWindowClass XAMainWindowClass;
@@ -106,7 +107,7 @@
GtkWindowClass parent;
};
-GtkWidget *xa_main_window_new(GtkIconTheme *icon_theme);
+GtkWidget *xa_main_window_new(XAApplication *, GtkIconTheme *icon_theme);
GtkWidget *xa_main_window_find_image(gchar *, GtkIconSize);
GType xa_main_window_get_type ();
Modified: xarchiver/branches/xarchiver-psybsd/src/notebook.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/notebook.c 2006-11-06 12:52:57 UTC (rev 23757)
+++ xarchiver/branches/xarchiver-psybsd/src/notebook.c 2006-11-06 13:09:24 UTC (rev 23758)
@@ -197,7 +197,10 @@
GtkWidget *archive_image = gtk_image_new_from_icon_name(lxa_mime_info_get_icon_name(archive->mime_info, notebook->icon_theme), GTK_ICON_SIZE_MENU);
GtkWidget *close_button = gtk_button_new();
GtkWidget *close_image = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
+ GtkWidget *scroll_window = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
gtk_button_set_image(GTK_BUTTON(close_button), close_image);
gtk_button_set_relief(GTK_BUTTON(close_button), GTK_RELIEF_NONE);
@@ -215,6 +218,7 @@
gtk_box_pack_start(GTK_BOX(lbl_hbox), close_button, FALSE, FALSE, 0);
gtk_widget_show_all(lbl_hbox);
gtk_widget_show_all(tree_view);
+ gtk_widget_show(scroll_window);
g_signal_connect(G_OBJECT(archive), "lxa_status_changed", G_CALLBACK(cb_notebook_archive_status_changed), notebook);
g_signal_connect(G_OBJECT(archive), "lxa_refreshed", G_CALLBACK(cb_notebook_archive_refreshed), tree_view);
@@ -231,7 +235,10 @@
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), TRUE);
else
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook), FALSE);
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook), tree_view, lbl_hbox);
+
+ gtk_container_add(GTK_CONTAINER(scroll_window), tree_view);
+
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), scroll_window, lbl_hbox);
}
void
@@ -331,7 +338,8 @@
static void
cb_xa_notebook_page_switched(XANotebook *notebook, GtkNotebookPage *page, guint page_nr, gpointer data)
{
- GtkWidget *treeview = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_nr);
+ GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), page_nr);
+ GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
xa_navigation_bar_set_store(notebook->navigation_bar, XA_ARCHIVE_STORE(archive_store));
}
@@ -348,7 +356,8 @@
{
gint n = gtk_notebook_get_current_page(GTK_NOTEBOOK(notebook));
- GtkWidget *treeview = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
+ GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
+ GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
GtkTreeModel *archive_store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
(*lp_archive) = xa_archive_store_get_archive(XA_ARCHIVE_STORE(archive_store));
@@ -366,7 +375,8 @@
void
xa_notebook_page_set_archive(XANotebook *notebook, LXAArchive *archive, LXAArchiveSupport *support, gint n)
{
- GtkWidget *treeview = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
+ GtkWidget *scrolledwindow = gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), n);
+ GtkWidget *treeview = gtk_bin_get_child(GTK_BIN(scrolledwindow));
GtkTreeModel *store = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview));
xa_archive_store_set_archive(XA_ARCHIVE_STORE(store), archive);
More information about the Xfce4-commits
mailing list