SF.net SVN: geany-plugins:[1982] trunk/geany-plugins/devhelp/src
codebrainz at users.sourceforge.net
codebrainz at xxxxx
Sat Mar 12 21:51:05 UTC 2011
Revision: 1982
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1982&view=rev
Author: codebrainz
Date: 2011-03-12 21:51:05 +0000 (Sat, 12 Mar 2011)
Log Message:
-----------
Prevent a segault while Geany closes by temporarily disabling the main notebook.
Modified Paths:
--------------
trunk/geany-plugins/devhelp/src/devhelpplugin.c
trunk/geany-plugins/devhelp/src/main-notebook.c
Modified: trunk/geany-plugins/devhelp/src/devhelpplugin.c
===================================================================
--- trunk/geany-plugins/devhelp/src/devhelpplugin.c 2011-03-12 19:12:47 UTC (rev 1981)
+++ trunk/geany-plugins/devhelp/src/devhelpplugin.c 2011-03-12 21:51:05 UTC (rev 1982)
@@ -27,7 +27,7 @@
#include <devhelp/dh-search.h>
#include <devhelp/dh-link.h>
-#ifdef HAVE_BOOK_MANAGER /* for newer api */
+#ifdef HAVE_BOOK_MANAGER /* for newer api */
#include <devhelp/dh-book-manager.h>
#endif
@@ -43,76 +43,75 @@
struct _DevhelpPluginPrivate
{
- /* add your private declarations here */
- gint tmp;
+ /* add your private declarations here */
+ gint tmp;
};
static void devhelp_plugin_finalize(GObject * object);
G_DEFINE_TYPE(DevhelpPlugin, devhelp_plugin, G_TYPE_OBJECT)
- static void devhelp_plugin_class_init(DevhelpPluginClass * klass)
+static void devhelp_plugin_class_init(DevhelpPluginClass * klass)
{
- GObjectClass *g_object_class;
+ GObjectClass *g_object_class;
- g_object_class = G_OBJECT_CLASS(klass);
- g_object_class->finalize = devhelp_plugin_finalize;
- g_type_class_add_private((gpointer) klass, sizeof(DevhelpPluginPrivate));
+ g_object_class = G_OBJECT_CLASS(klass);
+ g_object_class->finalize = devhelp_plugin_finalize;
+ g_type_class_add_private((gpointer) klass, sizeof(DevhelpPluginPrivate));
}
static void devhelp_plugin_finalize(GObject * object)
{
- DevhelpPlugin *self;
+ DevhelpPlugin *self;
- g_return_if_fail(object != NULL);
- g_return_if_fail(DEVHELP_IS_PLUGIN(object));
+ g_return_if_fail(object != NULL);
+ g_return_if_fail(DEVHELP_IS_PLUGIN(object));
- self = DEVHELP_PLUGIN(object);
+ self = DEVHELP_PLUGIN(object);
- gtk_widget_destroy(self->sb_notebook);
+ gtk_widget_destroy(self->sb_notebook);
- gtk_notebook_remove_page(GTK_NOTEBOOK(self->main_notebook),
- self->webview_tab);
+ gtk_notebook_remove_page(GTK_NOTEBOOK(self->main_notebook),
+ self->webview_tab);
- if (!self->in_message_window)
- main_notebook_destroy();
+ if (!self->in_message_window)
+ main_notebook_destroy();
- gtk_widget_destroy(self->editor_menu_sep);
- gtk_widget_destroy(self->editor_menu_item);
+ gtk_widget_destroy(self->editor_menu_sep);
+ gtk_widget_destroy(self->editor_menu_item);
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- self->orig_sb_tab_pos);
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ self->orig_sb_tab_pos);
- G_OBJECT_CLASS(devhelp_plugin_parent_class)->finalize(object);
+ G_OBJECT_CLASS(devhelp_plugin_parent_class)->finalize(object);
}
static void devhelp_plugin_init(DevhelpPlugin * self)
{
- self->priv =
- G_TYPE_INSTANCE_GET_PRIVATE(self, DEVHELP_TYPE_PLUGIN,
- DevhelpPluginPrivate);
-
+ self->priv =
+ G_TYPE_INSTANCE_GET_PRIVATE(self, DEVHELP_TYPE_PLUGIN,
+ DevhelpPluginPrivate);
}
/* Called when the editor menu item is selected */
static void on_search_help_activate(GtkMenuItem * menuitem,
- gpointer user_data)
+ gpointer user_data)
{
- DevhelpPlugin *dhplug = user_data;
- gchar *current_tag = devhelp_plugin_get_current_tag();
+ DevhelpPlugin *dhplug = user_data;
+ gchar *current_tag = devhelp_plugin_get_current_tag();
- if (current_tag == NULL)
- return;
+ if (current_tag == NULL)
+ return;
- dh_search_set_search_string(DH_SEARCH(dhplug->search), current_tag, NULL);
+ dh_search_set_search_string(DH_SEARCH(dhplug->search), current_tag, NULL);
- /* activate devhelp tabs with search tab active */
- devhelp_plugin_activate_tabs(dhplug, FALSE);
+ /* activate devhelp tabs with search tab active */
+ devhelp_plugin_activate_tabs(dhplug, FALSE);
- g_free(current_tag);
+ g_free(current_tag);
}
/*
@@ -121,36 +120,36 @@
*/
static void on_editor_menu_popup(GtkWidget * widget, gpointer user_data)
{
- gchar *label_tag = NULL;
- gchar *curword = NULL;
- gchar *new_label = NULL;
- DevhelpPlugin *dhplug = user_data;
+ gchar *label_tag = NULL;
+ gchar *curword = NULL;
+ gchar *new_label = NULL;
+ DevhelpPlugin *dhplug = user_data;
- curword = devhelp_plugin_get_current_tag();
+ curword = devhelp_plugin_get_current_tag();
- if (curword == NULL)
- gtk_widget_set_sensitive(dhplug->editor_menu_item, FALSE);
- else {
- if (strlen(curword) > DHPLUG_MAX_LABEL_TAG) {
- label_tag = g_strndup(curword, DHPLUG_MAX_LABEL_TAG - 3);
- new_label =
- g_strdup_printf(_("Search Devhelp for: %s..."),
- g_strstrip(label_tag));
- }
- else {
- label_tag = g_strndup(curword, DHPLUG_MAX_LABEL_TAG);
- new_label =
- g_strdup_printf(_("Search Devhelp for %s"),
- g_strstrip(label_tag));
- }
- gtk_menu_item_set_label(GTK_MENU_ITEM(dhplug->editor_menu_item),
- new_label);
- g_free(new_label);
- g_free(label_tag);
- gtk_widget_set_sensitive(dhplug->editor_menu_item, TRUE);
- }
+ if (curword == NULL)
+ gtk_widget_set_sensitive(dhplug->editor_menu_item, FALSE);
+ else {
+ if (strlen(curword) > DHPLUG_MAX_LABEL_TAG) {
+ label_tag = g_strndup(curword, DHPLUG_MAX_LABEL_TAG - 3);
+ new_label =
+ g_strdup_printf(_("Search Devhelp for: %s..."),
+ g_strstrip(label_tag));
+ }
+ else {
+ label_tag = g_strndup(curword, DHPLUG_MAX_LABEL_TAG);
+ new_label =
+ g_strdup_printf(_("Search Devhelp for %s"),
+ g_strstrip(label_tag));
+ }
+ gtk_menu_item_set_label(GTK_MENU_ITEM(dhplug->editor_menu_item),
+ new_label);
+ g_free(new_label);
+ g_free(label_tag);
+ gtk_widget_set_sensitive(dhplug->editor_menu_item, TRUE);
+ }
- g_free(curword);
+ g_free(curword);
}
/**
@@ -163,44 +162,44 @@
* have a link clicked on, meaning to load that file into the webview.
*/
static void on_link_clicked(GObject * ignored, DhLink * dhlink,
- gpointer user_data)
+ gpointer user_data)
{
- DevhelpPlugin *plug = user_data;
- if (plug->last_uri)
- g_free(plug->last_uri);
- plug->last_uri = dh_link_get_uri(dhlink);
- webkit_web_view_open(WEBKIT_WEB_VIEW(plug->webview), plug->last_uri);
- gtk_notebook_set_current_page(GTK_NOTEBOOK(plug->main_notebook),
- plug->webview_tab);
+ DevhelpPlugin *plug = user_data;
+ if (plug->last_uri)
+ g_free(plug->last_uri);
+ plug->last_uri = dh_link_get_uri(dhlink);
+ webkit_web_view_open(WEBKIT_WEB_VIEW(plug->webview), plug->last_uri);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(plug->main_notebook),
+ plug->webview_tab);
}
static void on_back_button_clicked(GtkToolButton * btn, gpointer user_data)
{
- DevhelpPlugin *plug = user_data;
- webkit_web_view_go_back(WEBKIT_WEB_VIEW(plug->webview));
+ DevhelpPlugin *plug = user_data;
+ webkit_web_view_go_back(WEBKIT_WEB_VIEW(plug->webview));
}
static void on_forward_button_clicked(GtkToolButton * btn, gpointer user_data)
{
- DevhelpPlugin *plug = user_data;
- webkit_web_view_go_forward(WEBKIT_WEB_VIEW(plug->webview));
+ DevhelpPlugin *plug = user_data;
+ webkit_web_view_go_forward(WEBKIT_WEB_VIEW(plug->webview));
}
static void on_zoom_in_button_clicked(GtkToolButton * btn, gpointer user_data)
{
- DevhelpPlugin *plug = user_data;
- WebKitWebView *view = WEBKIT_WEB_VIEW(plug->webview);
- webkit_web_view_zoom_in(view);
- plug->zoom_level = webkit_web_view_get_zoom_level(view);
+ DevhelpPlugin *plug = user_data;
+ WebKitWebView *view = WEBKIT_WEB_VIEW(plug->webview);
+ webkit_web_view_zoom_in(view);
+ plug->zoom_level = webkit_web_view_get_zoom_level(view);
}
static void on_zoom_out_button_clicked(GtkToolButton * btn,
- gpointer user_data)
+ gpointer user_data)
{
- DevhelpPlugin *plug = user_data;
- WebKitWebView *view = WEBKIT_WEB_VIEW(plug->webview);
- webkit_web_view_zoom_out(view);
- plug->zoom_level = webkit_web_view_get_zoom_level(view);
+ DevhelpPlugin *plug = user_data;
+ WebKitWebView *view = WEBKIT_WEB_VIEW(plug->webview);
+ webkit_web_view_zoom_out(view);
+ plug->zoom_level = webkit_web_view_get_zoom_level(view);
}
static void update_history_buttons(DevhelpPlugin *dhplug)
@@ -215,8 +214,8 @@
}
static void on_document_load_finished(WebKitWebView * view,
- WebKitWebFrame * frame,
- DevhelpPlugin *dhplug)
+ WebKitWebFrame * frame,
+ DevhelpPlugin *dhplug)
{
update_history_buttons(dhplug);
}
@@ -246,178 +245,178 @@
* @return A newly allocated DevhelpPlugin struct or null on error.
*/
DevhelpPlugin *devhelp_plugin_new(gboolean sb_tabs_bottom,
- gboolean show_in_msgwin, gchar * last_uri)
+ gboolean show_in_msgwin, gchar * last_uri)
{
- GtkWidget *book_tree_sw;
- GtkWidget *webview_sw;
- GtkWidget *contents_label;
- GtkWidget *search_label;
- GtkWidget *dh_sidebar_label;
- GtkWidget *doc_label;
- GtkWidget *vbox;
- GtkWidget *toolbar;
- GtkToolItem *btn_zoom_in;
- GtkToolItem *btn_zoom_out;
- GtkToolItem *tb_sep;
+ GtkWidget *book_tree_sw;
+ GtkWidget *webview_sw;
+ GtkWidget *contents_label;
+ GtkWidget *search_label;
+ GtkWidget *dh_sidebar_label;
+ GtkWidget *doc_label;
+ GtkWidget *vbox;
+ GtkWidget *toolbar;
+ GtkToolItem *btn_zoom_in;
+ GtkToolItem *btn_zoom_out;
+ GtkToolItem *tb_sep;
- DevhelpPlugin *dhplug;
+ DevhelpPlugin *dhplug;
- dhplug = g_object_new(DEVHELP_TYPE_PLUGIN, NULL);
+ dhplug = g_object_new(DEVHELP_TYPE_PLUGIN, NULL);
- if (dhplug == NULL) {
- g_printerr(_("Cannot create a new Devhelp plugin, out of memory.\n"));
- return NULL;
- }
+ if (dhplug == NULL) {
+ g_printerr(_("Cannot create a new Devhelp plugin, out of memory.\n"));
+ return NULL;
+ }
-#ifdef HAVE_BOOK_MANAGER /* for newer api */
- DhBookManager *book_manager;
+#ifdef HAVE_BOOK_MANAGER /* for newer api */
+ DhBookManager *book_manager;
#else
- GNode *books;
- GList *keywords;
+ GNode *books;
+ GList *keywords;
#endif
- if (dhbase == NULL)
- dhbase = dh_base_new();
+ if (dhbase == NULL)
+ dhbase = dh_base_new();
-#ifdef HAVE_BOOK_MANAGER /* for newer api */
- book_manager = dh_base_get_book_manager(dhbase);
- dhplug->book_tree = dh_book_tree_new(book_manager);
- dhplug->search = dh_search_new(book_manager);
+#ifdef HAVE_BOOK_MANAGER /* for newer api */
+ book_manager = dh_base_get_book_manager(dhbase);
+ dhplug->book_tree = dh_book_tree_new(book_manager);
+ dhplug->search = dh_search_new(book_manager);
#else
- books = dh_base_get_book_tree(dhbase);
- keywords = dh_base_get_keywords(dhbase);
- dhplug->book_tree = dh_book_tree_new(books);
- dhplug->search = dh_search_new(keywords);
+ books = dh_base_get_book_tree(dhbase);
+ keywords = dh_base_get_keywords(dhbase);
+ dhplug->book_tree = dh_book_tree_new(books);
+ dhplug->search = dh_search_new(keywords);
#endif
- dhplug->in_message_window = show_in_msgwin;
+ dhplug->in_message_window = show_in_msgwin;
- /* create/grab notebooks */
- dhplug->sb_notebook = gtk_notebook_new();
- dhplug->doc_notebook = geany->main_widgets->notebook;
+ /* create/grab notebooks */
+ dhplug->sb_notebook = gtk_notebook_new();
+ dhplug->doc_notebook = geany->main_widgets->notebook;
- if (dhplug->in_message_window)
- dhplug->main_notebook = geany->main_widgets->message_window_notebook;
- else
- dhplug->main_notebook = main_notebook_get();
+ if (dhplug->in_message_window)
+ dhplug->main_notebook = geany->main_widgets->message_window_notebook;
+ else
+ dhplug->main_notebook = main_notebook_get();
- /* editor menu items */
- dhplug->editor_menu_sep = gtk_separator_menu_item_new();
- dhplug->editor_menu_item =
- gtk_menu_item_new_with_label(_("Search Documentation for Tag"));
+ /* editor menu items */
+ dhplug->editor_menu_sep = gtk_separator_menu_item_new();
+ dhplug->editor_menu_item =
+ gtk_menu_item_new_with_label(_("Search Documentation for Tag"));
- /* tab labels */
- contents_label = gtk_label_new(_("Contents"));
- search_label = gtk_label_new(_("Search"));
- dh_sidebar_label = gtk_label_new(_("Devhelp"));
- doc_label = gtk_label_new(_("Documentation"));
+ /* tab labels */
+ contents_label = gtk_label_new(_("Contents"));
+ search_label = gtk_label_new(_("Search"));
+ dh_sidebar_label = gtk_label_new(_("Devhelp"));
+ doc_label = gtk_label_new(_("Documentation"));
- dhplug->orig_sb_tab_pos =
- gtk_notebook_get_tab_pos(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook));
- devhelp_plugin_sidebar_tabs_bottom(dhplug, sb_tabs_bottom);
+ dhplug->orig_sb_tab_pos =
+ gtk_notebook_get_tab_pos(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook));
+ devhelp_plugin_sidebar_tabs_bottom(dhplug, sb_tabs_bottom);
- /* sidebar contents/book tree */
- book_tree_sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(book_tree_sw),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_container_set_border_width(GTK_CONTAINER(book_tree_sw), 6);
- gtk_container_add(GTK_CONTAINER(book_tree_sw), dhplug->book_tree);
- gtk_widget_show(dhplug->book_tree);
+ /* sidebar contents/book tree */
+ book_tree_sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(book_tree_sw),
+ GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+ gtk_container_set_border_width(GTK_CONTAINER(book_tree_sw), 6);
+ gtk_container_add(GTK_CONTAINER(book_tree_sw), dhplug->book_tree);
+ gtk_widget_show(dhplug->book_tree);
- /* sidebar search */
- gtk_widget_show(dhplug->search);
+ /* sidebar search */
+ gtk_widget_show(dhplug->search);
- /* webview to display documentation */
- dhplug->webview = webkit_web_view_new();
- webview_sw = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(webview_sw),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- /*gtk_container_set_border_width(GTK_CONTAINER(webview_sw), 6); */
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(webview_sw),
- GTK_SHADOW_ETCHED_IN);
- gtk_container_add(GTK_CONTAINER(webview_sw), dhplug->webview);
- gtk_widget_show_all(webview_sw);
+ /* webview to display documentation */
+ dhplug->webview = webkit_web_view_new();
+ webview_sw = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(webview_sw),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ /*gtk_container_set_border_width(GTK_CONTAINER(webview_sw), 6); */
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(webview_sw),
+ GTK_SHADOW_ETCHED_IN);
+ gtk_container_add(GTK_CONTAINER(webview_sw), dhplug->webview);
+ gtk_widget_show_all(webview_sw);
- /* setup the sidebar notebook */
- gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->sb_notebook), book_tree_sw,
- contents_label);
- gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->sb_notebook),
- dhplug->search, search_label);
- gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook), 0);
+ /* setup the sidebar notebook */
+ gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->sb_notebook), book_tree_sw,
+ contents_label);
+ gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->sb_notebook),
+ dhplug->search, search_label);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook), 0);
- gtk_widget_show_all(dhplug->sb_notebook);
- gtk_notebook_append_page(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- dhplug->sb_notebook, dh_sidebar_label);
- dhplug->sb_notebook_tab =
- gtk_notebook_page_num(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- dhplug->sb_notebook);
+ gtk_widget_show_all(dhplug->sb_notebook);
+ gtk_notebook_append_page(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ dhplug->sb_notebook, dh_sidebar_label);
+ dhplug->sb_notebook_tab =
+ gtk_notebook_page_num(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ dhplug->sb_notebook);
- /* put the webview and toolbar stuff into the main notebook */
- vbox = gtk_vbox_new(FALSE, 0);
- toolbar = gtk_toolbar_new();
- dhplug->btn_back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
- dhplug->btn_forward =
- gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
- btn_zoom_in = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
- btn_zoom_out = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
- tb_sep = gtk_separator_tool_item_new();
-
- gtk_widget_set_tooltip_text(GTK_WIDGET(dhplug->btn_back),
+ /* put the webview and toolbar stuff into the main notebook */
+ vbox = gtk_vbox_new(FALSE, 0);
+ toolbar = gtk_toolbar_new();
+ dhplug->btn_back = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
+ dhplug->btn_forward =
+ gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
+ btn_zoom_in = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
+ btn_zoom_out = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
+ tb_sep = gtk_separator_tool_item_new();
+
+ gtk_widget_set_tooltip_text(GTK_WIDGET(dhplug->btn_back),
_("Go back one page"));
gtk_widget_set_tooltip_text(GTK_WIDGET(dhplug->btn_forward),
_("Go forward one page"));
gtk_widget_set_tooltip_text(GTK_WIDGET(btn_zoom_in), _("Zoom in"));
gtk_widget_set_tooltip_text(GTK_WIDGET(btn_zoom_out), _("Zoom out"));
-
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), dhplug->btn_back, -1);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), dhplug->btn_forward, -1);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tb_sep, -1);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), btn_zoom_in, -1);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), btn_zoom_out, -1);
-
- gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), webview_sw, TRUE, TRUE, 0);
- gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->main_notebook), vbox,
- doc_label);
- dhplug->webview_tab =
- gtk_notebook_page_num(GTK_NOTEBOOK(dhplug->main_notebook), vbox);
- gtk_widget_show_all(vbox);
+
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), dhplug->btn_back, -1);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), dhplug->btn_forward, -1);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), tb_sep, -1);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), btn_zoom_in, -1);
+ gtk_toolbar_insert(GTK_TOOLBAR(toolbar), btn_zoom_out, -1);
+
+ gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), webview_sw, TRUE, TRUE, 0);
+ gtk_notebook_append_page(GTK_NOTEBOOK(dhplug->main_notebook), vbox,
+ doc_label);
+ dhplug->webview_tab =
+ gtk_notebook_page_num(GTK_NOTEBOOK(dhplug->main_notebook), vbox);
+ gtk_widget_show_all(vbox);
- /* add menu item to editor popup menu */
- /* todo: make this an image menu item with devhelp icon */
- gtk_menu_shell_append(GTK_MENU_SHELL(geany->main_widgets->editor_menu),
- dhplug->editor_menu_sep);
- gtk_menu_shell_append(GTK_MENU_SHELL(geany->main_widgets->editor_menu),
- dhplug->editor_menu_item);
- gtk_widget_show(dhplug->editor_menu_sep);
- gtk_widget_show(dhplug->editor_menu_item);
+ /* add menu item to editor popup menu */
+ /* todo: make this an image menu item with devhelp icon */
+ gtk_menu_shell_append(GTK_MENU_SHELL(geany->main_widgets->editor_menu),
+ dhplug->editor_menu_sep);
+ gtk_menu_shell_append(GTK_MENU_SHELL(geany->main_widgets->editor_menu),
+ dhplug->editor_menu_item);
+ gtk_widget_show(dhplug->editor_menu_sep);
+ gtk_widget_show(dhplug->editor_menu_item);
- /* connect signals */
- g_signal_connect(geany->main_widgets->editor_menu, "show",
- G_CALLBACK(on_editor_menu_popup), dhplug);
- g_signal_connect(dhplug->editor_menu_item, "activate",
- G_CALLBACK(on_search_help_activate), dhplug);
- g_signal_connect(dhplug->book_tree, "link-selected",
- G_CALLBACK(on_link_clicked), dhplug);
- g_signal_connect(dhplug->search, "link-selected",
- G_CALLBACK(on_link_clicked), dhplug);
- g_signal_connect(dhplug->btn_back, "clicked",
- G_CALLBACK(on_back_button_clicked), dhplug);
- g_signal_connect(dhplug->btn_forward, "clicked",
- G_CALLBACK(on_forward_button_clicked), dhplug);
- g_signal_connect(btn_zoom_in, "clicked",
- G_CALLBACK(on_zoom_in_button_clicked), dhplug);
- g_signal_connect(btn_zoom_out, "clicked",
- G_CALLBACK(on_zoom_out_button_clicked), dhplug);
+ /* connect signals */
+ g_signal_connect(geany->main_widgets->editor_menu, "show",
+ G_CALLBACK(on_editor_menu_popup), dhplug);
+ g_signal_connect(dhplug->editor_menu_item, "activate",
+ G_CALLBACK(on_search_help_activate), dhplug);
+ g_signal_connect(dhplug->book_tree, "link-selected",
+ G_CALLBACK(on_link_clicked), dhplug);
+ g_signal_connect(dhplug->search, "link-selected",
+ G_CALLBACK(on_link_clicked), dhplug);
+ g_signal_connect(dhplug->btn_back, "clicked",
+ G_CALLBACK(on_back_button_clicked), dhplug);
+ g_signal_connect(dhplug->btn_forward, "clicked",
+ G_CALLBACK(on_forward_button_clicked), dhplug);
+ g_signal_connect(btn_zoom_in, "clicked",
+ G_CALLBACK(on_zoom_in_button_clicked), dhplug);
+ g_signal_connect(btn_zoom_out, "clicked",
+ G_CALLBACK(on_zoom_out_button_clicked), dhplug);
- g_signal_connect(WEBKIT_WEB_VIEW(dhplug->webview),
- "document-load-finished",
- G_CALLBACK(on_document_load_finished), dhplug);
- g_signal_connect(WEBKIT_WEB_VIEW(dhplug->webview),
+ g_signal_connect(WEBKIT_WEB_VIEW(dhplug->webview),
+ "document-load-finished",
+ G_CALLBACK(on_document_load_finished), dhplug);
+ g_signal_connect(WEBKIT_WEB_VIEW(dhplug->webview),
"notify::uri",
G_CALLBACK(on_uri_changed_notify),
dhplug);
@@ -426,28 +425,28 @@
G_CALLBACK(on_load_status_changed_notify),
dhplug);
- /* toggle state tracking */
- dhplug->last_main_tab_id =
- gtk_notebook_get_current_page(GTK_NOTEBOOK(dhplug->main_notebook));
- dhplug->last_sb_tab_id =
- gtk_notebook_get_current_page(GTK_NOTEBOOK
- (geany->main_widgets->
- sidebar_notebook));
- dhplug->tabs_toggled = FALSE;
+ /* toggle state tracking */
+ dhplug->last_main_tab_id =
+ gtk_notebook_get_current_page(GTK_NOTEBOOK(dhplug->main_notebook));
+ dhplug->last_sb_tab_id =
+ gtk_notebook_get_current_page(GTK_NOTEBOOK
+ (geany->main_widgets->
+ sidebar_notebook));
+ dhplug->tabs_toggled = FALSE;
- dhplug->last_uri = last_uri;
- if (dhplug->last_uri)
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(dhplug->webview),
- dhplug->last_uri);
- else {
- dhplug->last_uri =
- g_filename_to_uri(DHPLUG_WEBVIEW_HOME_FILE, NULL, NULL);
- if (dhplug->last_uri)
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(dhplug->webview),
- dhplug->last_uri);
- }
+ dhplug->last_uri = last_uri;
+ if (dhplug->last_uri)
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(dhplug->webview),
+ dhplug->last_uri);
+ else {
+ dhplug->last_uri =
+ g_filename_to_uri(DHPLUG_WEBVIEW_HOME_FILE, NULL, NULL);
+ if (dhplug->last_uri)
+ webkit_web_view_load_uri(WEBKIT_WEB_VIEW(dhplug->webview),
+ dhplug->last_uri);
+ }
- return dhplug;
+ return dhplug;
}
/**
@@ -463,7 +462,7 @@
*/
gchar *devhelp_plugin_clean_word(gchar * str)
{
- return g_strstrip(g_strcanon(str, GEANY_WORDCHARS, ' '));
+ return g_strstrip(g_strcanon(str, GEANY_WORDCHARS, ' '));
}
/**
@@ -475,27 +474,27 @@
*/
gchar *devhelp_plugin_get_current_tag(void)
{
- gint pos;
- gchar *tag = NULL;
- GeanyDocument *doc = document_get_current();
+ gint pos;
+ gchar *tag = NULL;
+ GeanyDocument *doc = document_get_current();
- if (sci_has_selection(doc->editor->sci))
- return
- devhelp_plugin_clean_word(sci_get_selection_contents
- (doc->editor->sci));
+ if (sci_has_selection(doc->editor->sci))
+ return
+ devhelp_plugin_clean_word(sci_get_selection_contents
+ (doc->editor->sci));
- pos = sci_get_current_position(doc->editor->sci);
- tag = editor_get_word_at_pos(doc->editor, pos, GEANY_WORDCHARS);
+ pos = sci_get_current_position(doc->editor->sci);
+ tag = editor_get_word_at_pos(doc->editor, pos, GEANY_WORDCHARS);
- if (tag == NULL)
- return NULL;
+ if (tag == NULL)
+ return NULL;
- if (tag[0] == '\0') {
- g_free(tag);
- return NULL;
- }
+ if (tag[0] == '\0') {
+ g_free(tag);
+ return NULL;
+ }
- return devhelp_plugin_clean_word(tag);
+ return devhelp_plugin_clean_word(tag);
}
@@ -510,37 +509,37 @@
*/
void devhelp_plugin_activate_tabs(DevhelpPlugin * dhplug, gboolean contents)
{
- if (!dhplug->tabs_toggled) {
- /* toggle state tracking */
- dhplug->last_main_tab_id =
- gtk_notebook_get_current_page(GTK_NOTEBOOK
- (dhplug->main_notebook));
- dhplug->last_sb_tab_id =
- gtk_notebook_get_current_page(GTK_NOTEBOOK
- (geany->main_widgets->
- sidebar_notebook));
- dhplug->tabs_toggled = TRUE;
+ if (!dhplug->tabs_toggled) {
+ /* toggle state tracking */
+ dhplug->last_main_tab_id =
+ gtk_notebook_get_current_page(GTK_NOTEBOOK
+ (dhplug->main_notebook));
+ dhplug->last_sb_tab_id =
+ gtk_notebook_get_current_page(GTK_NOTEBOOK
+ (geany->main_widgets->
+ sidebar_notebook));
+ dhplug->tabs_toggled = TRUE;
- gtk_notebook_set_current_page(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- dhplug->sb_notebook_tab);
- gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->main_notebook),
- dhplug->webview_tab);
- if (contents)
- gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook),
- 0);
- else
- gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook),
- 1);
- }
- else {
- gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->main_notebook),
- dhplug->last_main_tab_id);
- gtk_notebook_set_current_page(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- dhplug->last_sb_tab_id);
- dhplug->tabs_toggled = FALSE;
- }
+ gtk_notebook_set_current_page(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ dhplug->sb_notebook_tab);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->main_notebook),
+ dhplug->webview_tab);
+ if (contents)
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook),
+ 0);
+ else
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->sb_notebook),
+ 1);
+ }
+ else {
+ gtk_notebook_set_current_page(GTK_NOTEBOOK(dhplug->main_notebook),
+ dhplug->last_main_tab_id);
+ gtk_notebook_set_current_page(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ dhplug->last_sb_tab_id);
+ dhplug->tabs_toggled = FALSE;
+ }
}
/**
@@ -552,14 +551,14 @@
* vice versa.
*/
void devhelp_plugin_sidebar_tabs_bottom(DevhelpPlugin * dhplug,
- gboolean bottom)
+ gboolean bottom)
{
- if (bottom)
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- GTK_POS_BOTTOM);
- else
- gtk_notebook_set_tab_pos(GTK_NOTEBOOK
- (geany->main_widgets->sidebar_notebook),
- dhplug->orig_sb_tab_pos);
+ if (bottom)
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ GTK_POS_BOTTOM);
+ else
+ gtk_notebook_set_tab_pos(GTK_NOTEBOOK
+ (geany->main_widgets->sidebar_notebook),
+ dhplug->orig_sb_tab_pos);
}
Modified: trunk/geany-plugins/devhelp/src/main-notebook.c
===================================================================
--- trunk/geany-plugins/devhelp/src/main-notebook.c 2011-03-12 19:12:47 UTC (rev 1981)
+++ trunk/geany-plugins/devhelp/src/main-notebook.c 2011-03-12 21:51:05 UTC (rev 1982)
@@ -74,10 +74,16 @@
doc_nb_parent = gtk_widget_get_parent(main_notebook);
+ /* temporarily disable the notebook to prevent a segfault when
+ * on_editor_focus_in() calls editor_check_colorize(). */
+ gtk_widget_set_sensitive(geany->main_widgets->notebook, FALSE);
+
vbox = ui_lookup_widget(geany->main_widgets->window, "vbox1");
gtk_widget_reparent(geany->main_widgets->notebook, vbox);
gtk_widget_destroy(main_notebook);
gtk_widget_reparent(geany->main_widgets->notebook, doc_nb_parent);
+
+ gtk_widget_set_sensitive(geany->main_widgets->notebook, TRUE);
}
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list