From 2db0d1ed3d15012d2d9c80d8d9499160e1f535dc Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Thu, 23 Jan 2003 13:22:17 +0000 Subject: Reimplement encoding menus. Work around eggmenu finalization problems. Fix 2003-01-23 Marco Pesenti Gritti * TODO: * data/ui/epiphany-ui.xml.in: * embed/ephy-embed-utils.c: (ephy_embed_utils_build_charsets_submenu): * lib/egg/egg-menu-merge.c: (egg_menu_merge_finalize), (egg_menu_merge_class_init), (egg_menu_merge_init), (egg_menu_merge_node_prepend_uierence), (egg_menu_merge_node_remove_uierence), (start_element_handler), (cleanup), (remove_ui), (update_node): * src/Makefile.am: * src/ephy-encoding-menu.c: (ephy_encoding_menu_class_init), (ephy_encoding_menu_init), (ephy_encoding_menu_finalize_impl), (ephy_encoding_menu_set_property), (ephy_encoding_menu_get_property), (ephy_encoding_menu_new), (ephy_encoding_menu_verb_cb), (build_group), (build_charset), (ephy_encoding_menu_rebuild): * src/ephy-encoding-menu.h: * src/ephy-favorites-menu.c: (ephy_favorites_menu_finalize_impl), (ephy_favorites_menu_verb_cb): * src/ephy-favorites-menu.h: * src/ephy-window.c: (ephy_window_init), (ephy_window_finalize): * src/ppview-toolbar.c: (ppview_toolbar_finalize): Reimplement encoding menus. Work around eggmenu finalization problems. Fix ppvtoolbar/favorites menu to correctly remove action group on finalize. --- src/Makefile.am | 2 ++ src/ephy-favorites-menu.c | 13 ++++++++++--- src/ephy-favorites-menu.h | 2 -- src/ephy-window.c | 18 +++++------------- src/ppview-toolbar.c | 7 +++---- 5 files changed, 20 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 875926c3b..bf4fdb8a2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -46,6 +46,8 @@ epiphany_SOURCES = \ appearance-prefs.h \ ephy-automation.c \ ephy-automation.h \ + ephy-encoding-menu.c \ + ephy-encoding-menu.h \ ephy-favicon-action.c \ ephy-favicon-action.h \ ephy-favorites-menu.c \ diff --git a/src/ephy-favorites-menu.c b/src/ephy-favorites-menu.c index 4c13072c8..c8be1e816 100644 --- a/src/ephy-favorites-menu.c +++ b/src/ephy-favorites-menu.c @@ -138,6 +138,14 @@ ephy_favorites_menu_finalize_impl (GObject *o) EphyFavoritesMenu *wrhm = EPHY_FAVORITES_MENU (o); EphyFavoritesMenuPrivate *p = wrhm->priv; + if (p->action_group != NULL) + { + egg_menu_merge_remove_action_group + (EGG_MENU_MERGE (p->window->ui_merge), + p->action_group); + g_object_unref (p->action_group); + } + g_free (p); G_OBJECT_CLASS (g_object_class)->finalize (o); @@ -186,9 +194,8 @@ ephy_favorites_menu_new (EphyWindow *window) } static void -ephy_favorites_menu_verb_cb (BonoboUIComponent *uic, - FavoriteData *data, - const char *cname) +ephy_favorites_menu_verb_cb (EggMenuMerge *merge, + FavoriteData *data) { ephy_window_load_url (data->window, data->url); } diff --git a/src/ephy-favorites-menu.h b/src/ephy-favorites-menu.h index 228cbcef8..78bd74193 100644 --- a/src/ephy-favorites-menu.h +++ b/src/ephy-favorites-menu.h @@ -21,8 +21,6 @@ #include "ephy-window.h" -#include - /* object forward declarations */ typedef struct _EphyFavoritesMenu EphyFavoritesMenu; diff --git a/src/ephy-window.c b/src/ephy-window.c index 1da8cc949..ec023ff83 100644 --- a/src/ephy-window.c +++ b/src/ephy-window.c @@ -31,13 +31,13 @@ #include "ephy-shell.h" #include "eel-gconf-extensions.h" #include "ephy-prefs.h" -#include "ephy-embed-utils.h" #include "ephy-debug.h" #include "ephy-file-helpers.h" #include "statusbar.h" #include "toolbar.h" #include "popup-commands.h" #include "egg-toggle-action.h" +#include "ephy-encoding-menu.h" #include #include @@ -51,18 +51,6 @@ #include "egg-action-group.h" #include "egg-menu-merge.h" -#define CHARSET_MENU_PATH "/menu/View/EncodingMenuPlaceholder" -#define GO_FAVORITES_PATH "/menu/Go/Favorites" - -#define GO_BACK_ACTION "GoBack" -#define GO_FORWARD_ACTION "GoForward" -#define GO_UP_ACTION "GoUp" -#define EDIT_FIND_NEXT_ACTION "EditFindNext" -#define EDIT_FIND_PREV_ACTION "EditFindPrev" -#define VIEW_STATUSBAR_ACTION "ViewStatusbar" -#define VIEW_TOOLBAR_ACTION "ViewToolbar" -#define VIEW_FULLSCREEN_ACTION "ViewFullscreen" - static EggActionGroupEntry ephy_menu_entries [] = { /* Toplevel */ @@ -159,6 +147,7 @@ static EggActionGroupEntry ephy_menu_entries [] = { { "ViewZoomNormal", N_("_Normal Size"), GTK_STOCK_ZOOM_100, NULL, N_("Show the contents at the normal size"), G_CALLBACK (window_cmd_view_zoom_normal), NULL }, + { "ViewEncoding", N_("_Encoding"), NULL, NULL, NULL, NULL, NULL }, { "ViewPageSource", N_("_Page Source"), NULL, NULL, N_("View the source code of the page"), G_CALLBACK (window_cmd_view_page_source), NULL }, @@ -271,6 +260,7 @@ struct EphyWindowPrivate EggActionGroup *action_group; EggActionGroup *popups_action_group; EphyFavoritesMenu *fav_menu; + EphyEncodingMenu *enc_menu; PPViewToolbar *ppview_toolbar; GtkNotebook *notebook; EphyTab *active_tab; @@ -556,6 +546,7 @@ ephy_window_init (EphyWindow *window) setup_window (window); window->priv->fav_menu = ephy_favorites_menu_new (window); + window->priv->enc_menu = ephy_encoding_menu_new (window); /* Setup window contents */ window->priv->notebook = setup_notebook (window); @@ -639,6 +630,7 @@ ephy_window_finalize (GObject *object) } g_object_unref (window->priv->fav_menu); + g_object_unref (window->priv->enc_menu); if (window->priv->toolbar) { diff --git a/src/ppview-toolbar.c b/src/ppview-toolbar.c index 78b3b33d9..a97765930 100755 --- a/src/ppview-toolbar.c +++ b/src/ppview-toolbar.c @@ -26,10 +26,6 @@ #include #include -#include -#include -#include -#include #include #include @@ -275,7 +271,10 @@ ppview_toolbar_finalize (GObject *object) t = PPVIEW_TOOLBAR (object); g_return_if_fail (t->priv != NULL); + egg_menu_merge_remove_ui (t->priv->ui_merge, t->priv->ui_id); + egg_menu_merge_remove_action_group (t->priv->ui_merge, + t->priv->action_group); g_object_unref (t->priv->action_group); g_free (t->priv); -- cgit v1.2.3