small util.c patch
Jared Yanovich <[email protected]>
| Newsgroups | gmane.comp.multimedia.xmms.devel |
|---|---|
| Message-ID | <[email protected]> |
Here is a very small patch for xmms/util.c to let the file browser selection window remember its size. I find it very annoying to resize this window every time I want to add a file to the playlist. Also, my editor removes unnecessary whitespace, so ignore anything not relevant. Index: util.c =================================================================== RCS file: /cvs/xmms/xmms/util.c,v retrieving revision 1.39 diff -u -r1.39 util.c --- util.c 13 Jul 2003 22:30:17 -0000 1.39 +++ util.c 30 Aug 2003 15:50:13 -0000 @@ -1,6 +1,6 @@ /* XMMS - Cross-platform multimedia player * Copyright (C) 1998-2001 Peter Alm, Mikael Alm, Olle Hallnas, - * Thomas Nilsson and 4Front Technologies + * Thomas Nilsson and 4Front Technologies * Copyright (C) 1999-2001 Haavard Kvaalen <[email protected]> * * This program is free software; you can redistribute it and/or modify @@ -27,7 +27,7 @@ #endif static GQuark quark_popup_data; - +static guint fb_win_width = 0, fb_win_height = 0; /* * find_file_recursively() by Jörg Schuler Wed, 17 Feb 1999 23:50:52 @@ -300,7 +300,7 @@ fclose(file); return NULL; } - + buffer = g_malloc(statbuf.st_size); fread(buffer, 1, statbuf.st_size, file); while (!ret_buffer && off < statbuf.st_size) @@ -438,10 +438,10 @@ struct MenuPos *pos = data; gtk_widget_size_request(GTK_WIDGET(menu), &requisition); - + screen_width = gdk_screen_width(); screen_height = gdk_screen_height(); - + *x = CLAMP(pos->x - 2, 0, MAX(0, screen_width - requisition.width)); *y = CLAMP(pos->y - 2, 0, MAX(0, screen_height - requisition.height)); } @@ -541,13 +541,13 @@ GtkWidget* util_create_add_url_window(gchar *caption, GtkSignalFunc ok_func, GtkSignalFunc enqueue_func) { GtkWidget *win, *vbox, *bbox, *ok, *enqueue, *cancel, *combo; - + win = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_title(GTK_WINDOW(win), caption); gtk_window_set_position(GTK_WINDOW(win), GTK_WIN_POS_MOUSE); gtk_window_set_default_size(GTK_WINDOW(win), 400, -1); gtk_container_set_border_width(GTK_CONTAINER(win), 10); - + vbox = gtk_vbox_new(FALSE, 10); gtk_container_add(GTK_CONTAINER(win), vbox); @@ -561,15 +561,15 @@ gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(combo)->entry), ""); gtk_combo_set_use_arrows_always(GTK_COMBO(combo), TRUE); gtk_widget_show(combo); - + bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); - + ok = gtk_button_new_with_label(_("Ok")); gtk_signal_connect(GTK_OBJECT(ok), "clicked", util_add_url_callback, GTK_COMBO(combo)->entry); gtk_signal_connect(GTK_OBJECT(ok), "clicked", ok_func, GTK_COMBO(combo)->entry); - + GTK_WIDGET_SET_FLAGS(ok, GTK_CAN_DEFAULT); gtk_window_set_default(GTK_WINDOW(win), ok); gtk_box_pack_start(GTK_BOX(bbox), ok, FALSE, FALSE, 0); @@ -585,13 +585,13 @@ gtk_box_pack_start(GTK_BOX(bbox), enqueue, FALSE, FALSE, 0); gtk_widget_show(enqueue); } - + cancel = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(win)); GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), cancel, FALSE, FALSE, 0); gtk_widget_show(cancel); - + gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0); gtk_widget_show(bbox); gtk_widget_show(vbox); @@ -624,7 +624,7 @@ gtk_clist_clear(GTK_CLIST(filesel->dir_list)); gtk_clist_append(GTK_CLIST(filesel->dir_list), ¤t); gtk_clist_append(GTK_CLIST(filesel->dir_list), &parent); - + gtk_clist_freeze(GTK_CLIST(filesel->file_list)); gtk_clist_clear(GTK_CLIST(filesel->file_list)); node = list; @@ -668,7 +668,7 @@ char *text; struct stat buf; gboolean retv = FALSE; - + text = g_strdup(gtk_file_selection_get_filename(filesel)); if (stat(text, &buf) == 0 && @@ -722,7 +722,7 @@ sel_list = g_list_sort(sel_list, int_compare_func); node = sel_list; - + if (node) { do { @@ -772,7 +772,7 @@ static void filebrowser_add_selected_files(GtkWidget * w, gpointer data) { GtkFileSelection *filesel = GTK_FILE_SELECTION(data); - + filebrowser_add_files(filesel); gtk_clist_unselect_all(GTK_CLIST(filesel->file_list)); @@ -798,6 +798,12 @@ gtk_entry_set_text(GTK_ENTRY(filesel->selection_entry), ""); } +static void filebrowser_resize(GtkWidget *fb, GdkDragContext *dg, gpointer ud) +{ + fb_win_width = fb->allocation.width; + fb_win_height = fb->allocation.height; +} + GtkWidget * util_create_filebrowser(gboolean play_button) { GtkWidget *filebrowser, *bbox, *add_selected, *add_all, *label, *button; @@ -811,9 +817,20 @@ filebrowser = gtk_file_selection_new(title); fb = GTK_FILE_SELECTION(filebrowser); - + + /* initialize defaults */ + if (fb_win_width == 0) + fb_win_width = 500; + + if (fb_win_height == 0) + fb_win_height = 500; + + gtk_window_set_default_size(GTK_WINDOW(fb), fb_win_width, fb_win_height); + gtk_clist_set_selection_mode(GTK_CLIST(fb->file_list), GTK_SELECTION_EXTENDED); + gtk_signal_connect(GTK_OBJECT(filebrowser), "remove", + GTK_SIGNAL_FUNC(filebrowser_resize), filebrowser); gtk_signal_connect(GTK_OBJECT(fb->selection_entry), "changed", GTK_SIGNAL_FUNC(filebrowser_entry_changed), filebrowser); @@ -847,7 +864,7 @@ /* * Change the Cancel buttons caption to Close. */ - + label = gtk_label_new(_("Close")); gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5); gtk_container_remove(GTK_CONTAINER(fb->cancel_button), @@ -894,7 +911,7 @@ /* First try the prefered way, then just try to get some font */ if (!cfg.use_fontsets) - { + { if ((font = gdk_font_load(name)) == NULL) font = gdk_fontset_load(name); } @@ -909,7 +926,7 @@ g_warning("Failed to open font: \"%s\".", name); font = gdk_font_load("fixed"); } - + return font; } - Jared