Check for settings and views more properly

These improvements were assisted by a test case that is
going to follow soon.
This commit is contained in:
Christian Dywan 2009-02-28 14:05:01 +01:00
parent 5b2380433b
commit 8ec0e53441

View file

@ -80,6 +80,11 @@ struct _MidoriBrowser
KatzeArray* history; KatzeArray* history;
KatzeNet* net; KatzeNet* net;
gboolean show_navigationbar;
gboolean show_statusbar;
gboolean progress_in_location;
gboolean remember_last_visited_pages;
}; };
#if HAVE_HILDON #if HAVE_HILDON
@ -205,6 +210,17 @@ _midori_browser_update_actions (MidoriBrowser* browser)
} }
} }
static gboolean
midori_browser_view_can_set_encoding (MidoriView* view)
{
static GParamSpec* pspec = NULL;
if (G_UNLIKELY (!pspec))
pspec = g_object_class_find_property (
g_type_class_peek (WEBKIT_TYPE_WEB_VIEW), "custom-encoding");
/* Web views and zoom, source views can't, so zoom means encoding */
return pspec && midori_view_can_zoom_in (view);
}
static void static void
_midori_browser_update_interface (MidoriBrowser* browser) _midori_browser_update_interface (MidoriBrowser* browser)
{ {
@ -238,9 +254,7 @@ _midori_browser_update_interface (MidoriBrowser* browser)
_action_set_sensitive (browser, "ZoomNormal", _action_set_sensitive (browser, "ZoomNormal",
midori_view_get_zoom_level (MIDORI_VIEW (view)) != 1.0); midori_view_get_zoom_level (MIDORI_VIEW (view)) != 1.0);
_action_set_sensitive (browser, "Encoding", _action_set_sensitive (browser, "Encoding",
midori_view_can_zoom_in (MIDORI_VIEW (view)) midori_browser_view_can_set_encoding (MIDORI_VIEW (view)));
&& g_object_class_find_property (
g_type_class_peek (WEBKIT_TYPE_WEB_VIEW), "custom-encoding"));
_action_set_sensitive (browser, "SourceView", _action_set_sensitive (browser, "SourceView",
midori_view_can_view_source (MIDORI_VIEW (view))); midori_view_can_view_source (MIDORI_VIEW (view)));
_action_set_sensitive (browser, "Find", _action_set_sensitive (browser, "Find",
@ -263,8 +277,7 @@ _midori_browser_update_interface (MidoriBrowser* browser)
"tooltip", _("Reload the current page"), "tooltip", _("Reload the current page"),
"sensitive", can_reload, NULL); "sensitive", can_reload, NULL);
gtk_widget_hide (browser->progressbar); gtk_widget_hide (browser->progressbar);
if (!katze_object_get_boolean (browser->settings, "show-navigationbar") if (!browser->show_navigationbar && !browser->show_statusbar)
&& !katze_object_get_boolean (browser->settings, "show-statusbar"))
gtk_widget_hide (browser->navigationbar); gtk_widget_hide (browser->navigationbar);
} }
else else
@ -276,9 +289,9 @@ _midori_browser_update_interface (MidoriBrowser* browser)
gtk_widget_show (browser->progressbar); gtk_widget_show (browser->progressbar);
if (!GTK_WIDGET_VISIBLE (browser->statusbar) && if (!GTK_WIDGET_VISIBLE (browser->statusbar) &&
!GTK_WIDGET_VISIBLE (browser->navigationbar) && !GTK_WIDGET_VISIBLE (browser->navigationbar) &&
katze_object_get_boolean (browser->settings, "progress-in-location")) browser->progress_in_location)
gtk_widget_show (browser->navigationbar); gtk_widget_show (browser->navigationbar);
if (katze_object_get_boolean (browser->settings, "progress-in-location")) if (browser->progress_in_location)
{ {
action = _action_by_name (browser, "Location"); action = _action_by_name (browser, "Location");
midori_location_action_set_progress (MIDORI_LOCATION_ACTION (action), midori_location_action_set_progress (MIDORI_LOCATION_ACTION (action),
@ -338,7 +351,7 @@ _midori_browser_update_progress (MidoriBrowser* browser,
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (browser->progressbar), gtk_progress_bar_set_text (GTK_PROGRESS_BAR (browser->progressbar),
message); message);
g_free (message); g_free (message);
if (!katze_object_get_boolean (browser->settings, "progress-in-location")) if (!browser->progress_in_location)
progress = 0.0; progress = 0.0;
midori_location_action_set_progress (action, progress); midori_location_action_set_progress (action, progress);
} }
@ -372,7 +385,7 @@ midori_view_notify_icon_cb (MidoriView* view,
uri = midori_view_get_display_uri (MIDORI_VIEW (view)); uri = midori_view_get_display_uri (MIDORI_VIEW (view));
action = _action_by_name (browser, "Location"); action = _action_by_name (browser, "Location");
if (katze_object_get_boolean (browser->settings, "remember-last-visited-pages")) if (browser->remember_last_visited_pages)
midori_location_action_set_icon_for_uri ( midori_location_action_set_icon_for_uri (
MIDORI_LOCATION_ACTION (action), midori_view_get_icon (view), uri); MIDORI_LOCATION_ACTION (action), midori_view_get_icon (view), uri);
} }
@ -391,8 +404,7 @@ midori_view_notify_load_status_cb (GtkWidget* view,
if (midori_view_get_load_status (MIDORI_VIEW (view)) if (midori_view_get_load_status (MIDORI_VIEW (view))
== MIDORI_LOAD_COMMITTED) == MIDORI_LOAD_COMMITTED)
{ {
if (katze_object_get_boolean (browser->settings, if (browser->remember_last_visited_pages)
"remember-last-visited-pages"))
midori_location_action_add_uri (MIDORI_LOCATION_ACTION (action), uri); midori_location_action_add_uri (MIDORI_LOCATION_ACTION (action), uri);
} }
@ -459,7 +471,7 @@ midori_view_notify_title_cb (GtkWidget* view,
uri = midori_view_get_display_uri (MIDORI_VIEW (view)); uri = midori_view_get_display_uri (MIDORI_VIEW (view));
title = midori_view_get_display_title (MIDORI_VIEW (view)); title = midori_view_get_display_title (MIDORI_VIEW (view));
action = _action_by_name (browser, "Location"); action = _action_by_name (browser, "Location");
if (katze_object_get_boolean (browser->settings, "remember-last-visited-pages")) if (browser->remember_last_visited_pages)
midori_location_action_set_title_for_uri ( midori_location_action_set_title_for_uri (
MIDORI_LOCATION_ACTION (action), title, uri); MIDORI_LOCATION_ACTION (action), title, uri);
if (midori_view_get_load_status (MIDORI_VIEW (view)) == MIDORI_LOAD_COMMITTED) if (midori_view_get_load_status (MIDORI_VIEW (view)) == MIDORI_LOAD_COMMITTED)
@ -467,8 +479,7 @@ midori_view_notify_title_cb (GtkWidget* view,
KatzeItem* item; KatzeItem* item;
KatzeItem* proxy; KatzeItem* proxy;
if (browser->history && if (browser->history && browser->remember_last_visited_pages)
katze_object_get_boolean (browser->settings, "remember-last-visited-pages"))
{ {
item = g_object_get_data (G_OBJECT (view), "history-item-added"); item = g_object_get_data (G_OBJECT (view), "history-item-added");
proxy = midori_view_get_proxy_item (MIDORI_VIEW (view)); proxy = midori_view_get_proxy_item (MIDORI_VIEW (view));
@ -534,6 +545,9 @@ midori_browser_edit_bookmark_dialog_new (MidoriBrowser* browser,
GtkWidget* entry_uri; GtkWidget* entry_uri;
GtkWidget* combo_folder; GtkWidget* combo_folder;
if (!browser->bookmarks || !GTK_WIDGET_VISIBLE (browser))
return;
if (is_folder) if (is_folder)
title = new_bookmark ? _("New folder") : _("Edit folder"); title = new_bookmark ? _("New folder") : _("Edit folder");
else else
@ -740,6 +754,9 @@ midori_browser_save_uri (MidoriBrowser* browser,
gchar* last_slash; gchar* last_slash;
gchar* folder; gchar* folder;
if (!GTK_WIDGET_VISIBLE (browser))
return;
dialog = gtk_file_chooser_dialog_new ( dialog = gtk_file_chooser_dialog_new (
_("Save file as"), GTK_WINDOW (browser), _("Save file as"), GTK_WINDOW (browser),
GTK_FILE_CHOOSER_ACTION_SAVE, GTK_FILE_CHOOSER_ACTION_SAVE,
@ -1011,7 +1028,8 @@ _midori_browser_add_tab (MidoriBrowser* browser,
midori_browser_tab_leave_notify_event_cb, browser, midori_browser_tab_leave_notify_event_cb, browser,
NULL); NULL);
if (katze_object_get_boolean (browser->settings, "open-tabs-next-to-current")) if (browser->settings &&
katze_object_get_boolean (browser->settings, "open-tabs-next-to-current"))
{ {
n = gtk_notebook_get_current_page (GTK_NOTEBOOK (browser->notebook)); n = gtk_notebook_get_current_page (GTK_NOTEBOOK (browser->notebook));
gtk_notebook_insert_page (GTK_NOTEBOOK (browser->notebook), view, gtk_notebook_insert_page (GTK_NOTEBOOK (browser->notebook), view,
@ -1347,6 +1365,9 @@ _action_open_activate (GtkAction* action,
gboolean folder_set = FALSE; gboolean folder_set = FALSE;
GtkWidget* dialog; GtkWidget* dialog;
if (!GTK_WIDGET_VISIBLE (browser))
return;
dialog = gtk_file_chooser_dialog_new ( dialog = gtk_file_chooser_dialog_new (
_("Open file"), GTK_WINDOW (browser), _("Open file"), GTK_WINDOW (browser),
GTK_FILE_CHOOSER_ACTION_OPEN, GTK_FILE_CHOOSER_ACTION_OPEN,
@ -1479,7 +1500,7 @@ _action_cut_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser)); GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
if (G_LIKELY (widget)) if (G_LIKELY (widget) && g_signal_lookup ("cut-clipboard", G_OBJECT_TYPE (widget)))
g_signal_emit_by_name (widget, "cut-clipboard"); g_signal_emit_by_name (widget, "cut-clipboard");
} }
@ -1488,7 +1509,7 @@ _action_copy_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser)); GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
if (G_LIKELY (widget)) if (G_LIKELY (widget) && g_signal_lookup ("copy-clipboard", G_OBJECT_TYPE (widget)))
g_signal_emit_by_name (widget, "copy-clipboard"); g_signal_emit_by_name (widget, "copy-clipboard");
} }
@ -1497,7 +1518,7 @@ _action_paste_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser)); GtkWidget* widget = gtk_window_get_focus (GTK_WINDOW (browser));
if (G_LIKELY (widget)) if (G_LIKELY (widget) && g_signal_lookup ("paste-clipboard", G_OBJECT_TYPE (widget)))
g_signal_emit_by_name (widget, "paste-clipboard"); g_signal_emit_by_name (widget, "paste-clipboard");
} }
@ -1527,7 +1548,7 @@ _action_select_all_activate (GtkAction* action,
{ {
if (GTK_IS_EDITABLE (widget)) if (GTK_IS_EDITABLE (widget))
gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1); gtk_editable_select_region (GTK_EDITABLE (widget), 0, -1);
else else if (g_signal_lookup ("select-all", G_OBJECT_TYPE (widget)))
g_signal_emit_by_name (widget, "select-all", TRUE); g_signal_emit_by_name (widget, "select-all", TRUE);
} }
} }
@ -1558,10 +1579,12 @@ _midori_browser_find (MidoriBrowser* browser,
gboolean case_sensitive; gboolean case_sensitive;
GtkWidget* view; GtkWidget* view;
if (!(view = midori_browser_get_current_tab (browser)))
return;
text = gtk_entry_get_text (GTK_ENTRY (browser->find_text)); text = gtk_entry_get_text (GTK_ENTRY (browser->find_text));
case_sensitive = gtk_toggle_tool_button_get_active ( case_sensitive = gtk_toggle_tool_button_get_active (
GTK_TOGGLE_TOOL_BUTTON (browser->find_case)); GTK_TOGGLE_TOOL_BUTTON (browser->find_case));
view = midori_browser_get_current_tab (browser);
midori_view_search_text (MIDORI_VIEW (view), text, case_sensitive, forward); midori_view_search_text (MIDORI_VIEW (view), text, case_sensitive, forward);
} }
@ -1947,18 +1970,23 @@ static void
_action_preferences_activate (GtkAction* action, _action_preferences_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
/* Show the preferences dialog. Create it if necessary. */
static GtkWidget* dialog = NULL; static GtkWidget* dialog = NULL;
if (GTK_IS_DIALOG (dialog))
gtk_window_present (GTK_WINDOW (dialog)); if (!browser->settings || !GTK_WIDGET_VISIBLE (browser))
else return;
if (!dialog)
{ {
dialog = midori_preferences_new (GTK_WINDOW (browser), dialog = midori_preferences_new (GTK_WINDOW (browser),
browser->settings); browser->settings);
g_signal_connect (dialog, "response", g_signal_connect (dialog, "response",
G_CALLBACK (midori_preferences_response_help_cb), browser); G_CALLBACK (midori_preferences_response_help_cb), browser);
g_signal_connect (dialog, "destroy",
G_CALLBACK (gtk_widget_destroyed), &dialog);
gtk_widget_show (dialog); gtk_widget_show (dialog);
} }
else
gtk_window_present (GTK_WINDOW (dialog));
} }
static void static void
@ -1966,7 +1994,8 @@ _action_menubar_activate (GtkToggleAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
gboolean active = gtk_toggle_action_get_active (action); gboolean active = gtk_toggle_action_get_active (action);
g_object_set (browser->settings, "show-menubar", active, NULL); if (browser->settings)
g_object_set (browser->settings, "show-menubar", active, NULL);
#if !HAVE_HILDON #if !HAVE_HILDON
sokoke_widget_set_visible (browser->menubar, active); sokoke_widget_set_visible (browser->menubar, active);
#endif #endif
@ -1977,7 +2006,8 @@ _action_navigationbar_activate (GtkToggleAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
gboolean active = gtk_toggle_action_get_active (action); gboolean active = gtk_toggle_action_get_active (action);
g_object_set (browser->settings, "show-navigationbar", active, NULL); if (browser->settings)
g_object_set (browser->settings, "show-navigationbar", active, NULL);
sokoke_widget_set_visible (browser->navigationbar, active); sokoke_widget_set_visible (browser->navigationbar, active);
} }
@ -1986,7 +2016,8 @@ _action_bookmarkbar_activate (GtkToggleAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
gboolean active = gtk_toggle_action_get_active (action); gboolean active = gtk_toggle_action_get_active (action);
g_object_set (browser->settings, "show-bookmarkbar", active, NULL); if (browser->settings)
g_object_set (browser->settings, "show-bookmarkbar", active, NULL);
sokoke_widget_set_visible (browser->bookmarkbar, active); sokoke_widget_set_visible (browser->bookmarkbar, active);
} }
@ -1995,7 +2026,8 @@ _action_statusbar_activate (GtkToggleAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
gboolean active = gtk_toggle_action_get_active (action); gboolean active = gtk_toggle_action_get_active (action);
g_object_set (browser->settings, "show-statusbar", active, NULL); if (browser->settings)
g_object_set (browser->settings, "show-statusbar", active, NULL);
#if !HAVE_HILDON #if !HAVE_HILDON
sokoke_widget_set_visible (browser->statusbar, active); sokoke_widget_set_visible (browser->statusbar, active);
#endif #endif
@ -2011,8 +2043,10 @@ _action_reload_stop_activate (GtkAction* action,
gint x, y; gint x, y;
gboolean from_cache; gboolean from_cache;
if (!(view = midori_browser_get_current_tab (browser)))
return;
g_object_get (action, "stock-id", &stock_id, NULL); g_object_get (action, "stock-id", &stock_id, NULL);
view = midori_browser_get_current_tab (browser);
/* Refresh or stop, depending on the stock id */ /* Refresh or stop, depending on the stock id */
if (!strcmp (stock_id, GTK_STOCK_REFRESH)) if (!strcmp (stock_id, GTK_STOCK_REFRESH))
@ -2060,7 +2094,7 @@ _action_view_encoding_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
GtkWidget* view = midori_browser_get_current_tab (browser); GtkWidget* view = midori_browser_get_current_tab (browser);
if (view) if (view && midori_browser_view_can_set_encoding (MIDORI_VIEW (view)))
{ {
const gchar* name; const gchar* name;
GtkWidget* web_view; GtkWidget* web_view;
@ -2183,7 +2217,11 @@ _action_source_view_activate (GtkAction* action,
if (!(view = midori_browser_get_current_tab (browser))) if (!(view = midori_browser_get_current_tab (browser)))
return; return;
g_object_get (browser->settings, "text-editor", &text_editor, NULL); if (browser->settings)
g_object_get (browser->settings, "text-editor", &text_editor, NULL);
else
text_editor = NULL;
if (text_editor && *text_editor) if (text_editor && *text_editor)
{ {
katze_net_load_uri (browser->net, katze_net_load_uri (browser->net,
@ -2212,6 +2250,9 @@ static void
_action_fullscreen_activate (GtkAction* action, _action_fullscreen_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
if (!GTK_WIDGET (browser)->window)
return;
GdkWindowState state = gdk_window_get_state (GTK_WIDGET (browser)->window); GdkWindowState state = gdk_window_get_state (GTK_WIDGET (browser)->window);
if (state & GDK_WINDOW_STATE_FULLSCREEN) if (state & GDK_WINDOW_STATE_FULLSCREEN)
gtk_window_unfullscreen (GTK_WINDOW (browser)); gtk_window_unfullscreen (GTK_WINDOW (browser));
@ -2243,6 +2284,9 @@ _action_homepage_activate (GtkAction* action,
{ {
gchar* homepage; gchar* homepage;
if (!browser->settings)
return;
g_object_get (browser->settings, "homepage", &homepage, NULL); g_object_get (browser->settings, "homepage", &homepage, NULL);
midori_browser_set_current_uri (browser, homepage); midori_browser_set_current_uri (browser, homepage);
g_free (homepage); g_free (homepage);
@ -2252,7 +2296,7 @@ static void
_action_location_activate (GtkAction* action, _action_location_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
if (!katze_object_get_boolean (browser->settings, "show-navigationbar")) if (!browser->show_navigationbar)
gtk_widget_show (browser->navigationbar); gtk_widget_show (browser->navigationbar);
} }
@ -2274,7 +2318,7 @@ static void
_action_location_focus_out (GtkAction* action, _action_location_focus_out (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
if (!katze_object_get_boolean (browser->settings, "show-navigationbar")) if (!browser->show_navigationbar)
gtk_widget_hide (browser->navigationbar); gtk_widget_hide (browser->navigationbar);
} }
@ -2447,8 +2491,7 @@ static void
_action_search_focus_out (GtkAction* action, _action_search_focus_out (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
if (GTK_WIDGET_VISIBLE (browser->statusbar) && if (GTK_WIDGET_VISIBLE (browser->statusbar) && !browser->show_navigationbar)
!katze_object_get_boolean (browser->settings, "show-navigationbar"))
gtk_widget_hide (browser->navigationbar); gtk_widget_hide (browser->navigationbar);
} }
@ -2666,14 +2709,21 @@ static void
_action_manage_search_engines_activate (GtkAction* action, _action_manage_search_engines_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
GtkWidget* dialog; static GtkWidget* dialog = NULL;
dialog = midori_search_action_get_dialog ( if (!GTK_WIDGET_VISIBLE (browser))
MIDORI_SEARCH_ACTION (_action_by_name (browser, "Search"))); return;
if (GTK_WIDGET_VISIBLE (dialog))
gtk_window_present (GTK_WINDOW (dialog)); if (!dialog)
else {
dialog = midori_search_action_get_dialog (
MIDORI_SEARCH_ACTION (_action_by_name (browser, "Search")));
g_signal_connect (dialog, "destroy",
G_CALLBACK (gtk_widget_destroyed), &dialog);
gtk_widget_show (dialog); gtk_widget_show (dialog);
}
else
gtk_window_present (GTK_WINDOW (dialog));
} }
static void static void
@ -2790,7 +2840,8 @@ _action_panel_activate (GtkToggleAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
gboolean active = gtk_toggle_action_get_active (action); gboolean active = gtk_toggle_action_get_active (action);
g_object_set (browser->settings, "show-panel", active, NULL); if (browser->settings)
g_object_set (browser->settings, "show-panel", active, NULL);
sokoke_widget_set_visible (browser->panel, active); sokoke_widget_set_visible (browser->panel, active);
} }
@ -2799,7 +2850,8 @@ midori_browser_panel_timeout (GtkWidget* hpaned)
{ {
gboolean position = gtk_paned_get_position (GTK_PANED (hpaned)); gboolean position = gtk_paned_get_position (GTK_PANED (hpaned));
MidoriBrowser* browser = MIDORI_BROWSER (gtk_widget_get_toplevel (hpaned)); MidoriBrowser* browser = MIDORI_BROWSER (gtk_widget_get_toplevel (hpaned));
g_object_set (browser->settings, "last-panel-position", position, NULL); if (browser->settings)
g_object_set (browser->settings, "last-panel-position", position, NULL);
browser->panel_timeout = 0; browser->panel_timeout = 0;
return FALSE; return FALSE;
} }
@ -2823,7 +2875,9 @@ midori_panel_notify_right_aligned_cb (MidoriPanel* panel,
GtkWidget* hpaned = gtk_widget_get_parent (browser->panel); GtkWidget* hpaned = gtk_widget_get_parent (browser->panel);
GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook); GtkWidget* vpaned = gtk_widget_get_parent (browser->notebook);
g_object_set (browser->settings, "right-align-sidepanel", right_aligned, NULL); if (browser->settings)
g_object_set (browser->settings, "right-align-sidepanel",
right_aligned, NULL);
g_object_ref (browser->panel); g_object_ref (browser->panel);
g_object_ref (vpaned); g_object_ref (vpaned);
@ -2908,6 +2962,9 @@ _action_undo_tab_close_activate (GtkAction* action,
KatzeItem* item; KatzeItem* item;
guint n; guint n;
if (!browser->trash)
return;
/* Reopen the most recent trash item */ /* Reopen the most recent trash item */
last = katze_array_get_length (browser->trash) - 1; last = katze_array_get_length (browser->trash) - 1;
item = katze_array_get_nth_item (browser->trash, last); item = katze_array_get_nth_item (browser->trash, last);
@ -2921,8 +2978,11 @@ static void
_action_trash_empty_activate (GtkAction* action, _action_trash_empty_activate (GtkAction* action,
MidoriBrowser* browser) MidoriBrowser* browser)
{ {
katze_array_clear (browser->trash); if (browser->trash)
_midori_browser_update_actions (browser); {
katze_array_clear (browser->trash);
_midori_browser_update_actions (browser);
}
} }
static const GtkActionEntry entries[] = { static const GtkActionEntry entries[] = {
@ -4028,8 +4088,8 @@ _midori_browser_update_settings (MidoriBrowser* browser)
MidoriWindowState last_window_state; MidoriWindowState last_window_state;
gboolean compact_sidepanel, right_align_sidepanel; gboolean compact_sidepanel, right_align_sidepanel;
gint last_panel_position, last_panel_page; gint last_panel_position, last_panel_page;
gboolean show_menubar, show_navigationbar, show_bookmarkbar; gboolean show_menubar, show_bookmarkbar;
gboolean show_panel, show_statusbar; gboolean show_panel;
MidoriToolbarStyle toolbar_style; MidoriToolbarStyle toolbar_style;
gchar* toolbar_items; gchar* toolbar_items;
gint last_web_search; gint last_web_search;
@ -4048,14 +4108,16 @@ _midori_browser_update_settings (MidoriBrowser* browser)
"last-panel-position", &last_panel_position, "last-panel-position", &last_panel_position,
"last-panel-page", &last_panel_page, "last-panel-page", &last_panel_page,
"show-menubar", &show_menubar, "show-menubar", &show_menubar,
"show-navigationbar", &show_navigationbar, "show-navigationbar", &browser->show_navigationbar,
"show-bookmarkbar", &show_bookmarkbar, "show-bookmarkbar", &show_bookmarkbar,
"show-panel", &show_panel, "show-panel", &show_panel,
"show-statusbar", &show_statusbar, "show-statusbar", &browser->show_statusbar,
"toolbar-style", &toolbar_style, "toolbar-style", &toolbar_style,
"toolbar-items", &toolbar_items, "toolbar-items", &toolbar_items,
"last-web-search", &last_web_search, "last-web-search", &last_web_search,
"close-buttons-on-tabs", &close_buttons_on_tabs, "close-buttons-on-tabs", &close_buttons_on_tabs,
"progress-in-location", &browser->progress_in_location,
"remember-last-visited-pages", &browser->remember_last_visited_pages,
NULL); NULL);
screen = gtk_window_get_screen (GTK_WINDOW (browser)); screen = gtk_window_get_screen (GTK_WINDOW (browser));
@ -4107,10 +4169,10 @@ _midori_browser_update_settings (MidoriBrowser* browser)
midori_panel_set_current_page (MIDORI_PANEL (browser->panel), last_panel_page); midori_panel_set_current_page (MIDORI_PANEL (browser->panel), last_panel_page);
_action_set_active (browser, "Menubar", show_menubar); _action_set_active (browser, "Menubar", show_menubar);
_action_set_active (browser, "Navigationbar", show_navigationbar); _action_set_active (browser, "Navigationbar", browser->show_navigationbar);
_action_set_active (browser, "Bookmarkbar", show_bookmarkbar); _action_set_active (browser, "Bookmarkbar", show_bookmarkbar);
_action_set_active (browser, "Panel", show_panel); _action_set_active (browser, "Panel", show_panel);
_action_set_active (browser, "Statusbar", show_statusbar); _action_set_active (browser, "Statusbar", browser->show_statusbar);
g_free (toolbar_items); g_free (toolbar_items);
} }
@ -4136,6 +4198,14 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
g_value_get_boolean (&value)); g_value_get_boolean (&value));
else if (name == g_intern_string ("always-show-tabbar")) else if (name == g_intern_string ("always-show-tabbar"))
_toggle_tabbar_smartly (browser); _toggle_tabbar_smartly (browser);
else if (name == g_intern_string ("show-navigationbar"))
browser->show_navigationbar = g_value_get_boolean (&value);
else if (name == g_intern_string ("show-statusbar"))
browser->show_statusbar = g_value_get_boolean (&value);
else if (name == g_intern_string ("progress-in-location"))
browser->progress_in_location = g_value_get_boolean (&value);
else if (name == g_intern_string ("remember-last-visited-pages"))
browser->remember_last_visited_pages = g_value_get_boolean (&value);
else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings), else if (!g_object_class_find_property (G_OBJECT_GET_CLASS (web_settings),
name)) name))
g_warning (_("Unexpected setting '%s'"), name); g_warning (_("Unexpected setting '%s'"), name);
@ -4481,9 +4551,11 @@ midori_browser_add_uri (MidoriBrowser* browser,
g_return_val_if_fail (MIDORI_IS_BROWSER (browser), -1); g_return_val_if_fail (MIDORI_IS_BROWSER (browser), -1);
g_return_val_if_fail (uri != NULL, -1); g_return_val_if_fail (uri != NULL, -1);
view = g_object_new (MIDORI_TYPE_VIEW, if (browser->settings)
"settings", browser->settings, view = g_object_new (MIDORI_TYPE_VIEW, "settings", browser->settings,
NULL); "net", browser->net, NULL);
else
view = midori_view_new (browser->net);
midori_view_set_uri (MIDORI_VIEW (view), uri); midori_view_set_uri (MIDORI_VIEW (view), uri);
gtk_widget_show (view); gtk_widget_show (view);