diff -uNr ../wmdropzone-0.2/ChangeLog ./ChangeLog --- ../wmdropzone-0.2/ChangeLog Tue Oct 3 14:44:22 2000 +++ ./ChangeLog Sat Oct 7 16:50:29 2000 @@ -1,3 +1,8 @@ +2000 10 07 - v0.3 + - FIXED: CPU hog when killing the dockapp process explicitly + - FIXED: destruction of window (and usablility), when hiding + was requested + - minor, minor, _very_ minor code cleanup 2000 10 03 - v0.2 - 'persistent' URL List; upon Quit the current URLs diff -uNr ../wmdropzone-0.2/README ./README --- ../wmdropzone-0.2/README Tue Oct 3 14:45:42 2000 +++ ./README Sat Oct 7 16:49:13 2000 @@ -1,5 +1,5 @@ -wmdropzone v0.2 http://www.azzit.de/wmdropzone/ +wmdropzone v0.3 http://www.azzit.de/wmdropzone/ =============================================================== wmdropzone is a simple download manager, that allows you to drag'n'drop diff -uNr ../wmdropzone-0.2/configure ./configure --- ../wmdropzone-0.2/configure Tue Oct 3 14:46:04 2000 +++ ./configure Sat Oct 7 16:47:59 2000 @@ -808,7 +808,7 @@ PACKAGE=wmdropzone -VERSION=0.2 +VERSION=0.3 if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; } diff -uNr ../wmdropzone-0.2/configure.in ./configure.in --- ../wmdropzone-0.2/configure.in Tue Oct 3 00:18:02 2000 +++ ./configure.in Sat Oct 7 16:47:47 2000 @@ -3,7 +3,7 @@ AC_CANONICAL_SYSTEM AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(wmdropzone, 0.2) +AM_INIT_AUTOMAKE(wmdropzone, 0.3) AC_PROG_CC AM_PROG_LIBTOOL diff -uNr ../wmdropzone-0.2/doc/configuration.txt ./doc/configuration.txt --- ../wmdropzone-0.2/doc/configuration.txt Tue Oct 3 14:25:17 2000 +++ ./doc/configuration.txt Sat Oct 7 16:50:03 2000 @@ -1,5 +1,5 @@ -wmdropzone - v0.1 Configuration +wmdropzone - v0.3 Configuration ============================================ The configuration is expected in ~/.wmdropzone.conf diff -uNr ../wmdropzone-0.2/src/addrlist.c ./src/addrlist.c --- ../wmdropzone-0.2/src/addrlist.c Tue Oct 3 14:19:41 2000 +++ ./src/addrlist.c Sat Oct 7 16:39:08 2000 @@ -956,7 +956,7 @@ drow->row = source; } -static void application_quit(GtkWidget * widget, gpointer data) +void application_quit(GtkWidget * widget, gpointer data) { gchar config_file[PATH_LEN]; GSList *list; @@ -1211,12 +1211,15 @@ RowData *rowdata; gint i = 0, rows; - rows = g_list_length(GTK_CLIST(dz_addrlist)->row_list); - - for (i = rows - 1; i >= 0; i--) - if ((rowdata = find_rowdata_by_row(i))) - remove_rowdata(0, rowdata); + if (dz_addrlist) + { + rows = g_list_length(GTK_CLIST(dz_addrlist)->row_list); + for (i = rows - 1; i >= 0; i--) + if ((rowdata = find_rowdata_by_row(i))) + remove_rowdata(0, rowdata); + dz_addrlist = 0; + } } RowData *rowdata_create(gchar * url, gint row) diff -uNr ../wmdropzone-0.2/src/wmdropzone.c ./src/wmdropzone.c --- ../wmdropzone-0.2/src/wmdropzone.c Sun Sep 24 11:18:34 2000 +++ ./src/wmdropzone.c Sat Oct 7 16:44:04 2000 @@ -226,7 +226,7 @@ else if (!(strncasecmp("toggle\n", buffer, 7))) { if (GTK_IS_WIDGET(dz_toplevel) && GTK_WIDGET_VISIBLE(dz_toplevel)) - gtk_widget_destroy(dz_toplevel); + gtk_widget_hide(dz_toplevel); else if (GTK_IS_WIDGET(dz_toplevel) && !GTK_WIDGET_VISIBLE(dz_toplevel)) gtk_widget_show(dz_toplevel); else if (!GTK_IS_WIDGET(dz_toplevel)) @@ -247,13 +247,17 @@ gboolean toplevel_quit(GtkWidget * widget, gpointer data) { - kill(dockapp_pid, SIGTERM); + if (dockapp_pid > 0) + kill(dockapp_pid, SIGTERM); + addrlist_cleanup(); if (data && GTK_IS_WIDGET(data)) gtk_widget_destroy((GtkWidget *) data); - gtk_widget_destroy(dz_toplevel); + if (dz_toplevel && GTK_IS_WIDGET(dz_toplevel)) + gtk_widget_destroy(dz_toplevel); + gtk_main_quit(); return FALSE; } @@ -298,6 +302,12 @@ { if (pid != dockapp_pid) addrlist_sigchld(pid); + else + { + /* the dockapp died or has been explicitly killed by wmaker */ + dockapp_pid = -1; + toplevel_quit(0, 0); + } } } @@ -379,9 +389,6 @@ (GdkInputFunction) dockapp_talker, 0); gtk_init(&argc, &argv); - if (0) - dz_show_toplevel(argc, argv); - gtk_main(); printf("Bye Bye...\n"); array_cleanup(&opt.filetypes, (arrayCleanup) filetype_free);