static void attach_browser (void) { GwhBrowserPosition position; g_object_get (G_settings, "browser-position", &position, NULL); if (position == GWH_BROWSER_POSITION_SEPARATE_WINDOW) { G_container.type = CONTAINER_WINDOW; G_container.widget = create_separate_window (); /* seems that if a window is shown before it's transient parent, bad stuff * happend. so, show our window a little later. */ g_idle_add (on_idle_widget_show, G_container.widget); } else { G_container.type = CONTAINER_NOTEBOOK; if (position == GWH_BROWSER_POSITION_SIDEBAR) { G_container.widget = geany_data->main_widgets->sidebar_notebook; } else { G_container.widget = geany_data->main_widgets->message_window_notebook; } gtk_notebook_append_page (GTK_NOTEBOOK (G_container.widget), G_browser, gtk_label_new (_("Web preview"))); gwh_browser_set_inspector_transient_for (GWH_BROWSER (G_browser), GTK_WINDOW (geany_data->main_widgets->window)); } }
static void on_separate_window_destroy (GtkWidget *widget, gpointer data) { gwh_browser_set_inspector_transient_for (GWH_BROWSER (G_browser), NULL); gtk_container_remove (GTK_CONTAINER (G_container.widget), G_browser); }
static GtkWidget * create_separate_window (void) { GtkWidget *window; gboolean skips_taskbar; gboolean is_transient; gint window_type; g_object_get (G_settings, "wm-secondary-windows-skip-taskbar", &skips_taskbar, "wm-secondary-windows-are-transient", &is_transient, "wm-secondary-windows-type", &window_type, NULL); window = g_object_new (GTK_TYPE_WINDOW, "type", GTK_WINDOW_TOPLEVEL, "skip-taskbar-hint", skips_taskbar, "title", _("Web view"), "deletable", FALSE, "type-hint", window_type, NULL); g_signal_connect (window, "delete-event", G_CALLBACK (on_separate_window_delete_event), NULL); g_signal_connect (window, "destroy", G_CALLBACK (on_separate_window_destroy), NULL); gtk_container_add (GTK_CONTAINER (window), G_browser); if (is_transient) { gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (geany_data->main_widgets->window)); } else { GList *icons; icons = gtk_window_get_icon_list (GTK_WINDOW (geany_data->main_widgets->window)); gtk_window_set_icon_list (GTK_WINDOW (window), icons); g_list_free (icons); } gwh_browser_set_inspector_transient_for (GWH_BROWSER (G_browser), GTK_WINDOW (window)); return window; }