}
static char *existing_filename;
+static gboolean need_icon = TRUE;
static void on_info_bar_response(GtkWidget *widget, gint response,
gpointer data)
{
const char *logo_property = NULL;
GdkPixbuf *logo = NULL;
- GtkWidget *image = gtk_image_new_from_file("icon.svg");
- if (image) {
- logo = gtk_image_get_pixbuf(GTK_IMAGE(image));
- logo_property = "logo";
+ if (need_icon) {
+ GtkWidget *image = gtk_image_new_from_file("subsurface.svg");
+
+ if (image) {
+ logo = gtk_image_get_pixbuf(GTK_IMAGE(image));
+ logo_property = "logo";
+ }
}
gtk_show_about_dialog(NULL,
"license", "GPLv2",
"version", VERSION_STRING,
"copyright", "Linus Torvalds 2011",
+ "logo-icon-name", "subsurface",
/* Must be last: */
logo_property, logo,
NULL);
{
GtkWidget *win, *notebook, *vbox;
notebook_data_t *nbdp;
+ GtkAllocation allocation;
/* pick the right notebook page data and return if both are detached */
if (nbd[0].widget == NULL)
/* disallow drop events */
gtk_drag_dest_set(notebook, 0, NULL, 0, 0);
gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 6);
- gtk_widget_set_size_request(notebook, 450, 350);
+ gtk_widget_get_allocation(page, &allocation);
+ gtk_widget_set_size_request(notebook, allocation.width, allocation.height);
gtk_widget_show_all(win);
return GTK_NOTEBOOK(notebook);
GtkWidget *equipment;
GtkWidget *menubar;
GtkWidget *vbox;
+ GdkScreen *screen;
+ GtkIconTheme *icon_theme=NULL;
GtkSettings *settings;
static const GtkTargetEntry notebook_target = {
"GTK_NOTEBOOK_TAB", GTK_TARGET_SAME_APP, 0
error_info_bar = NULL;
win = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_icon_from_file(GTK_WINDOW(win), "icon.svg", NULL);
+ g_set_application_name ("subsurface");
+ /* Let's check if the subsurface icon has been installed or if
+ * we need to try to load it from the current directory */
+ screen = gdk_screen_get_default();
+ if (screen)
+ icon_theme = gtk_icon_theme_get_for_screen(screen);
+ if (icon_theme) {
+ if (gtk_icon_theme_has_icon(icon_theme, "subsurface")) {
+ need_icon = FALSE;
+ gtk_window_set_default_icon_name ("subsurface");
+ }
+ }
+ if (need_icon)
+ gtk_window_set_icon_from_file(GTK_WINDOW(win), "subsurface.svg", NULL);
g_signal_connect(G_OBJECT(win), "delete-event", G_CALLBACK(on_delete), NULL);
g_signal_connect(G_OBJECT(win), "destroy", G_CALLBACK(on_destroy), NULL);
main_window = win;
void set_filename(const char *filename)
{
- if (filename)
+ if (!existing_filename && filename)
existing_filename = strdup(filename);
return;
}