Move the chart's web view to the UI definition

Fially! Thanks goes to tristan, KaL and ebassi on #gtk for the
guidance.
This commit is contained in:
Gergely Polonkai 2014-10-06 14:49:11 +02:00
parent fa56eb950e
commit 1c3bbdf6cf
2 changed files with 26 additions and 30 deletions

View File

@ -64,6 +64,7 @@ struct _AgWindowPrivate {
AgDisplayTheme *theme; AgDisplayTheme *theme;
GtkListStore *display_theme_model; GtkListStore *display_theme_model;
gulong chart_changed_handler; gulong chart_changed_handler;
WebKitUserContentManager *content_manager;
}; };
enum { enum {
@ -1179,16 +1180,11 @@ ag_window_delete_event_callback(AgWindow *window,
static void static void
ag_window_clear_style_sheets(AgWindow *window) ag_window_clear_style_sheets(AgWindow *window)
{ {
WebKitUserContentManager *manager;
GET_PRIV(window); GET_PRIV(window);
g_debug("Clearing style sheets"); g_debug("Clearing style sheets");
manager = webkit_web_view_get_user_content_manager( webkit_user_content_manager_remove_all_style_sheets(priv->content_manager);
WEBKIT_WEB_VIEW(priv->chart_web_view)
);
webkit_user_content_manager_remove_all_style_sheets(manager);
g_list_free_full( g_list_free_full(
priv->style_sheets, priv->style_sheets,
(GDestroyNotify)webkit_user_style_sheet_unref (GDestroyNotify)webkit_user_style_sheet_unref
@ -1254,21 +1250,16 @@ static void
ag_window_update_style_sheets(AgWindow *window) ag_window_update_style_sheets(AgWindow *window)
{ {
GList *item; GList *item;
WebKitUserContentManager *manager;
GET_PRIV(window); GET_PRIV(window);
g_debug("Updating style sheets"); g_debug("Updating style sheets");
manager = webkit_web_view_get_user_content_manager( webkit_user_content_manager_remove_all_style_sheets(priv->content_manager);
WEBKIT_WEB_VIEW(priv->chart_web_view)
);
webkit_user_content_manager_remove_all_style_sheets(manager);
for (item = priv->style_sheets; item; item = g_list_next(item)) { for (item = priv->style_sheets; item; item = g_list_next(item)) {
WebKitUserStyleSheet *style_sheet = item->data; WebKitUserStyleSheet *style_sheet = item->data;
webkit_user_content_manager_add_style_sheet(manager, style_sheet); webkit_user_content_manager_add_style_sheet(priv->content_manager, style_sheet);
} }
} }
@ -1854,27 +1845,10 @@ ag_window_init(AgWindow *window)
*display_theme_list; *display_theme_list;
GtkCellRenderer *house_system_renderer, GtkCellRenderer *house_system_renderer,
*display_theme_renderer; *display_theme_renderer;
WebKitUserContentManager *manager = webkit_user_content_manager_new();
GET_PRIV(window); GET_PRIV(window);
gtk_widget_init_template(GTK_WIDGET(window)); gtk_widget_init_template(GTK_WIDGET(window));
priv->chart_web_view = WEBKIT_WEB_VIEW(webkit_web_view_new_with_user_content_manager(
manager
));
gtk_box_pack_end(
GTK_BOX(priv->tab_chart),
GTK_WIDGET(priv->chart_web_view),
TRUE, TRUE, 0
);
g_signal_connect(
priv->chart_web_view,
"context-menu",
G_CALLBACK(ag_window_chart_context_cb),
NULL
);
priv->settings = ag_settings_get(); priv->settings = ag_settings_get();
main_settings = ag_settings_peek_main_settings(priv->settings); main_settings = ag_settings_peek_main_settings(priv->settings);
@ -2182,6 +2156,16 @@ ag_window_class_init(AgWindowClass *klass)
AgWindow, AgWindow,
chart_list chart_list
); );
gtk_widget_class_bind_template_child_private(
widget_class,
AgWindow,
chart_web_view
);
gtk_widget_class_bind_template_child_private(
widget_class,
AgWindow,
content_manager
);
gtk_widget_class_bind_template_callback( gtk_widget_class_bind_template_callback(
widget_class, widget_class,
@ -2223,6 +2207,10 @@ ag_window_class_init(AgWindowClass *klass)
widget_class, widget_class,
ag_window_header_bar_mode_change_cb ag_window_header_bar_mode_change_cb
); );
gtk_widget_class_bind_template_callback(
widget_class,
ag_window_chart_context_cb
);
} }
static gboolean static gboolean

View File

@ -73,6 +73,8 @@
<column type="gchararray"/> <column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="WebkitUserContentManager" id="content_manager">
</object>
<template class="AgWindow" parent="GtkApplicationWindow"> <template class="AgWindow" parent="GtkApplicationWindow">
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="has_focus">False</property> <property name="has_focus">False</property>
@ -173,6 +175,12 @@
<property name="pack_type">start</property> <property name="pack_type">start</property>
</packing> </packing>
</child> </child>
<child>
<object class="WebkitWebView" id="chart_web_view">
<property name="user-content-manager">content_manager</property>
<signal name="context-menu" handler="ag_window_chart_context_cb"/>
</object>
</child>
</object> </object>
<packing> <packing>
<property name="name">chart</property> <property name="name">chart</property>