diff -Nru docky-2.0.4/aclocal.m4 docky-2.0.5/aclocal.m4 --- docky-2.0.4/aclocal.m4 2010-05-31 08:00:09.665622447 +0200 +++ docky-2.0.5/aclocal.m4 2010-07-01 19:05:30.625184001 +0200 @@ -648,7 +648,7 @@ AC_DEFUN([IT_PO_SUBDIR], [AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS. dnl -dnl The following CONFIG_COMMANDS should be exetuted at the very end +dnl The following CONFIG_COMMANDS should be executed at the very end dnl of config.status. AC_CONFIG_COMMANDS_PRE([ AC_CONFIG_COMMANDS([$1/stamp-it], [ @@ -724,6 +724,7 @@ ]) # pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) # # Copyright © 2004 Scott James Remnant . # @@ -751,7 +752,10 @@ AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) -AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi @@ -764,7 +768,6 @@ AC_MSG_RESULT([no]) PKG_CONFIG="" fi - fi[]dnl ])# PKG_PROG_PKG_CONFIG @@ -773,34 +776,31 @@ # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # -# -# Similar to PKG_CHECK_MODULES, make sure that the first instance of -# this or PKG_CHECK_MODULES is called, or make sure to call -# PKG_CHECK_EXISTS manually +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then - m4_ifval([$2], [$2], [:]) + m4_default([$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) - # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], -[if test -n "$PKG_CONFIG"; then - if test -n "$$1"; then - pkg_cv_[]$1="$$1" - else - PKG_CHECK_EXISTS([$3], - [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], - [pkg_failed=yes]) - fi -else - pkg_failed=untried +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], + [pkg_failed=yes]) + else + pkg_failed=untried fi[]dnl ])# _PKG_CONFIG @@ -842,16 +842,17 @@ See the pkg-config man page for more details.]) if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then - $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"` + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else - $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"` + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD - ifelse([$4], , [AC_MSG_ERROR(dnl + m4_default([$4], [AC_MSG_ERROR( [Package requirements ($2) were not met: $$1_PKG_ERRORS @@ -859,25 +860,24 @@ Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. -_PKG_TEXT -])], - [AC_MSG_RESULT([no]) - $4]) +_PKG_TEXT])dnl + ]) elif test $pkg_failed = untried; then - ifelse([$4], , [AC_MSG_FAILURE(dnl + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT -To get pkg-config, see .])], - [$4]) +To get pkg-config, see .])dnl + ]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) - ifelse([$3], , :, [$3]) + $3 fi[]dnl ])# PKG_CHECK_MODULES diff -Nru docky-2.0.4/AUTHORS docky-2.0.5/AUTHORS --- docky-2.0.4/AUTHORS 2010-05-25 14:22:51.826113858 +0200 +++ docky-2.0.5/AUTHORS 2010-06-26 15:47:36.543229000 +0200 @@ -13,6 +13,3 @@ Robert Dyer Chris Szikszoy Rico Tzschichholz -Seif Lotfy -Chris Halse Rogers -Alex Launi diff -Nru docky-2.0.4/configure docky-2.0.5/configure --- docky-2.0.4/configure 2010-05-31 08:00:13.405621764 +0200 +++ docky-2.0.5/configure 2010-07-01 19:05:34.915184001 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.65 for docky 2.0.4. +# Generated by GNU Autoconf 2.65 for docky 2.0.5. # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -609,8 +609,8 @@ # Identity of this package. PACKAGE_NAME='docky' PACKAGE_TARNAME='docky' -PACKAGE_VERSION='2.0.4' -PACKAGE_STRING='docky 2.0.4' +PACKAGE_VERSION='2.0.5' +PACKAGE_STRING='docky 2.0.5' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -710,6 +710,8 @@ GLADE_SHARP_20_CFLAGS GCONF_SHARP_20_LIBS GCONF_SHARP_20_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH expanded_datadir expanded_bindir expanded_libdir @@ -880,6 +882,8 @@ CPPFLAGS CPP PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR GCONF_SHARP_20_CFLAGS GCONF_SHARP_20_LIBS GLADE_SHARP_20_CFLAGS @@ -1465,7 +1469,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures docky 2.0.4 to adapt to many kinds of systems. +\`configure' configures docky 2.0.5 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1531,7 +1535,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of docky 2.0.4:";; + short | recursive ) echo "Configuration of docky 2.0.5:";; esac cat <<\_ACEOF @@ -1565,6 +1569,10 @@ you have headers in a nonstandard directory CPP C preprocessor PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path GCONF_SHARP_20_CFLAGS C compiler flags for GCONF_SHARP_20, overriding pkg-config GCONF_SHARP_20_LIBS @@ -1714,7 +1722,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -docky configure 2.0.4 +docky configure 2.0.5 generated by GNU Autoconf 2.65 Copyright (C) 2009 Free Software Foundation, Inc. @@ -2079,7 +2087,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by docky $as_me 2.0.4, which was +It was created by docky $as_me 2.0.5, which was generated by GNU Autoconf 2.65. Invocation command line was $ $0 $@ @@ -2887,7 +2895,7 @@ # Define the identity of the package. PACKAGE='docky' - VERSION='2.0.4' + VERSION='2.0.5' cat >>confdefs.h <<_ACEOF @@ -7091,6 +7099,10 @@ + + + + if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. @@ -7203,18 +7215,16 @@ $as_echo "no" >&6; } PKG_CONFIG="" fi - fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCONF_SHARP_20" >&5 $as_echo_n "checking for GCONF_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GCONF_SHARP_20_CFLAGS"; then - pkg_cv_GCONF_SHARP_20_CFLAGS="$GCONF_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GCONF_SHARP_20_CFLAGS"; then + pkg_cv_GCONF_SHARP_20_CFLAGS="$GCONF_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5 ac_status=$? @@ -7224,15 +7234,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GCONF_SHARP_20_LIBS"; then - pkg_cv_GCONF_SHARP_20_LIBS="$GCONF_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GCONF_SHARP_20_LIBS"; then + pkg_cv_GCONF_SHARP_20_LIBS="$GCONF_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gconf-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gconf-sharp-2.0") 2>&5 ac_status=$? @@ -7242,14 +7250,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7257,9 +7266,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GCONF_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gconf-sharp-2.0"` + GCONF_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gconf-sharp-2.0" 2>&1` else - GCONF_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gconf-sharp-2.0"` + GCONF_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "gconf-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GCONF_SHARP_20_PKG_ERRORS" >&5 @@ -7273,9 +7282,10 @@ Alternatively, you may set the environment variables GCONF_SHARP_20_CFLAGS and GCONF_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7293,18 +7303,17 @@ GCONF_SHARP_20_LIBS=$pkg_cv_GCONF_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLADE_SHARP_20" >&5 $as_echo_n "checking for GLADE_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GLADE_SHARP_20_CFLAGS"; then - pkg_cv_GLADE_SHARP_20_CFLAGS="$GLADE_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLADE_SHARP_20_CFLAGS"; then + pkg_cv_GLADE_SHARP_20_CFLAGS="$GLADE_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glade-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glade-sharp-2.0") 2>&5 ac_status=$? @@ -7314,15 +7323,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GLADE_SHARP_20_LIBS"; then - pkg_cv_GLADE_SHARP_20_LIBS="$GLADE_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLADE_SHARP_20_LIBS"; then + pkg_cv_GLADE_SHARP_20_LIBS="$GLADE_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glade-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glade-sharp-2.0") 2>&5 ac_status=$? @@ -7332,14 +7339,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7347,9 +7355,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLADE_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glade-sharp-2.0"` + GLADE_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glade-sharp-2.0" 2>&1` else - GLADE_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glade-sharp-2.0"` + GLADE_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "glade-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLADE_SHARP_20_PKG_ERRORS" >&5 @@ -7363,9 +7371,10 @@ Alternatively, you may set the environment variables GLADE_SHARP_20_CFLAGS and GLADE_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7383,18 +7392,17 @@ GLADE_SHARP_20_LIBS=$pkg_cv_GLADE_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB_SHARP_20" >&5 $as_echo_n "checking for GLIB_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_SHARP_20_CFLAGS"; then - pkg_cv_GLIB_SHARP_20_CFLAGS="$GLIB_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLIB_SHARP_20_CFLAGS"; then + pkg_cv_GLIB_SHARP_20_CFLAGS="$GLIB_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5 ac_status=$? @@ -7404,15 +7412,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_SHARP_20_LIBS"; then - pkg_cv_GLIB_SHARP_20_LIBS="$GLIB_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLIB_SHARP_20_LIBS"; then + pkg_cv_GLIB_SHARP_20_LIBS="$GLIB_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "glib-sharp-2.0") 2>&5 ac_status=$? @@ -7422,14 +7428,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7437,9 +7444,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "glib-sharp-2.0"` + GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "glib-sharp-2.0" 2>&1` else - GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "glib-sharp-2.0"` + GLIB_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "glib-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_SHARP_20_PKG_ERRORS" >&5 @@ -7453,9 +7460,10 @@ Alternatively, you may set the environment variables GLIB_SHARP_20_CFLAGS and GLIB_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7473,18 +7481,17 @@ GLIB_SHARP_20_LIBS=$pkg_cv_GLIB_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_DESKTOP_SHARP_20" >&5 $as_echo_n "checking for GNOME_DESKTOP_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_DESKTOP_SHARP_20_CFLAGS"; then - pkg_cv_GNOME_DESKTOP_SHARP_20_CFLAGS="$GNOME_DESKTOP_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_DESKTOP_SHARP_20_CFLAGS"; then + pkg_cv_GNOME_DESKTOP_SHARP_20_CFLAGS="$GNOME_DESKTOP_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-desktop-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-desktop-sharp-2.0") 2>&5 ac_status=$? @@ -7494,15 +7501,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_DESKTOP_SHARP_20_LIBS"; then - pkg_cv_GNOME_DESKTOP_SHARP_20_LIBS="$GNOME_DESKTOP_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_DESKTOP_SHARP_20_LIBS"; then + pkg_cv_GNOME_DESKTOP_SHARP_20_LIBS="$GNOME_DESKTOP_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-desktop-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-desktop-sharp-2.0") 2>&5 ac_status=$? @@ -7512,14 +7517,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7527,9 +7533,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GNOME_DESKTOP_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gnome-desktop-sharp-2.0"` + GNOME_DESKTOP_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-desktop-sharp-2.0" 2>&1` else - GNOME_DESKTOP_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnome-desktop-sharp-2.0"` + GNOME_DESKTOP_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-desktop-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOME_DESKTOP_SHARP_20_PKG_ERRORS" >&5 @@ -7543,9 +7549,10 @@ Alternatively, you may set the environment variables GNOME_DESKTOP_SHARP_20_CFLAGS and GNOME_DESKTOP_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7563,18 +7570,17 @@ GNOME_DESKTOP_SHARP_20_LIBS=$pkg_cv_GNOME_DESKTOP_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_KEYRING_SHARP" >&5 $as_echo_n "checking for GNOME_KEYRING_SHARP... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_KEYRING_SHARP_CFLAGS"; then - pkg_cv_GNOME_KEYRING_SHARP_CFLAGS="$GNOME_KEYRING_SHARP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_KEYRING_SHARP_CFLAGS"; then + pkg_cv_GNOME_KEYRING_SHARP_CFLAGS="$GNOME_KEYRING_SHARP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-keyring-sharp-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-keyring-sharp-1.0") 2>&5 ac_status=$? @@ -7584,15 +7590,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_KEYRING_SHARP_LIBS"; then - pkg_cv_GNOME_KEYRING_SHARP_LIBS="$GNOME_KEYRING_SHARP_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_KEYRING_SHARP_LIBS"; then + pkg_cv_GNOME_KEYRING_SHARP_LIBS="$GNOME_KEYRING_SHARP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-keyring-sharp-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-keyring-sharp-1.0") 2>&5 ac_status=$? @@ -7602,14 +7606,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7617,9 +7622,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GNOME_KEYRING_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gnome-keyring-sharp-1.0"` + GNOME_KEYRING_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-keyring-sharp-1.0" 2>&1` else - GNOME_KEYRING_SHARP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnome-keyring-sharp-1.0"` + GNOME_KEYRING_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-keyring-sharp-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOME_KEYRING_SHARP_PKG_ERRORS" >&5 @@ -7633,9 +7638,10 @@ Alternatively, you may set the environment variables GNOME_KEYRING_SHARP_CFLAGS and GNOME_KEYRING_SHARP_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7653,18 +7659,17 @@ GNOME_KEYRING_SHARP_LIBS=$pkg_cv_GNOME_KEYRING_SHARP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_SHARP_20" >&5 $as_echo_n "checking for GNOME_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_SHARP_20_CFLAGS"; then - pkg_cv_GNOME_SHARP_20_CFLAGS="$GNOME_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_SHARP_20_CFLAGS"; then + pkg_cv_GNOME_SHARP_20_CFLAGS="$GNOME_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0") 2>&5 ac_status=$? @@ -7674,15 +7679,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_SHARP_20_LIBS"; then - pkg_cv_GNOME_SHARP_20_LIBS="$GNOME_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_SHARP_20_LIBS"; then + pkg_cv_GNOME_SHARP_20_LIBS="$GNOME_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-sharp-2.0") 2>&5 ac_status=$? @@ -7692,14 +7695,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7707,9 +7711,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GNOME_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gnome-sharp-2.0"` + GNOME_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-sharp-2.0" 2>&1` else - GNOME_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnome-sharp-2.0"` + GNOME_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOME_SHARP_20_PKG_ERRORS" >&5 @@ -7723,9 +7727,10 @@ Alternatively, you may set the environment variables GNOME_SHARP_20_CFLAGS and GNOME_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7743,18 +7748,17 @@ GNOME_SHARP_20_LIBS=$pkg_cv_GNOME_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNOME_VFS_SHARP_20" >&5 $as_echo_n "checking for GNOME_VFS_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_VFS_SHARP_20_CFLAGS"; then - pkg_cv_GNOME_VFS_SHARP_20_CFLAGS="$GNOME_VFS_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_VFS_SHARP_20_CFLAGS"; then + pkg_cv_GNOME_VFS_SHARP_20_CFLAGS="$GNOME_VFS_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-vfs-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-vfs-sharp-2.0") 2>&5 ac_status=$? @@ -7764,15 +7768,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GNOME_VFS_SHARP_20_LIBS"; then - pkg_cv_GNOME_VFS_SHARP_20_LIBS="$GNOME_VFS_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GNOME_VFS_SHARP_20_LIBS"; then + pkg_cv_GNOME_VFS_SHARP_20_LIBS="$GNOME_VFS_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gnome-vfs-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gnome-vfs-sharp-2.0") 2>&5 ac_status=$? @@ -7782,14 +7784,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7797,9 +7800,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GNOME_VFS_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gnome-vfs-sharp-2.0"` + GNOME_VFS_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gnome-vfs-sharp-2.0" 2>&1` else - GNOME_VFS_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gnome-vfs-sharp-2.0"` + GNOME_VFS_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "gnome-vfs-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GNOME_VFS_SHARP_20_PKG_ERRORS" >&5 @@ -7813,9 +7816,10 @@ Alternatively, you may set the environment variables GNOME_VFS_SHARP_20_CFLAGS and GNOME_VFS_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7833,18 +7837,17 @@ GNOME_VFS_SHARP_20_LIBS=$pkg_cv_GNOME_VFS_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK_SHARP_20" >&5 $as_echo_n "checking for GTK_SHARP_20... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_SHARP_20_CFLAGS"; then - pkg_cv_GTK_SHARP_20_CFLAGS="$GTK_SHARP_20_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GTK_SHARP_20_CFLAGS"; then + pkg_cv_GTK_SHARP_20_CFLAGS="$GTK_SHARP_20_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5 ac_status=$? @@ -7854,15 +7857,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_SHARP_20_LIBS"; then - pkg_cv_GTK_SHARP_20_LIBS="$GTK_SHARP_20_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GTK_SHARP_20_LIBS"; then + pkg_cv_GTK_SHARP_20_LIBS="$GTK_SHARP_20_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk-sharp-2.0") 2>&5 ac_status=$? @@ -7872,14 +7873,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7887,9 +7889,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk-sharp-2.0"` + GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk-sharp-2.0" 2>&1` else - GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk-sharp-2.0"` + GTK_SHARP_20_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_SHARP_20_PKG_ERRORS" >&5 @@ -7903,9 +7905,10 @@ Alternatively, you may set the environment variables GTK_SHARP_20_CFLAGS and GTK_SHARP_20_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -7923,18 +7926,17 @@ GTK_SHARP_20_LIBS=$pkg_cv_GTK_SHARP_20_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBRSVG_SHARP" >&5 $as_echo_n "checking for LIBRSVG_SHARP... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$LIBRSVG_SHARP_CFLAGS"; then - pkg_cv_LIBRSVG_SHARP_CFLAGS="$LIBRSVG_SHARP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$LIBRSVG_SHARP_CFLAGS"; then + pkg_cv_LIBRSVG_SHARP_CFLAGS="$LIBRSVG_SHARP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rsvg2-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "rsvg2-sharp-2.0") 2>&5 ac_status=$? @@ -7944,15 +7946,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$LIBRSVG_SHARP_LIBS"; then - pkg_cv_LIBRSVG_SHARP_LIBS="$LIBRSVG_SHARP_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$LIBRSVG_SHARP_LIBS"; then + pkg_cv_LIBRSVG_SHARP_LIBS="$LIBRSVG_SHARP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"rsvg2-sharp-2.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "rsvg2-sharp-2.0") 2>&5 ac_status=$? @@ -7962,14 +7962,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -7977,9 +7978,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - LIBRSVG_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "rsvg2-sharp-2.0"` + LIBRSVG_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "rsvg2-sharp-2.0" 2>&1` else - LIBRSVG_SHARP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "rsvg2-sharp-2.0"` + LIBRSVG_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "rsvg2-sharp-2.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$LIBRSVG_SHARP_PKG_ERRORS" >&5 @@ -7993,9 +7994,10 @@ Alternatively, you may set the environment variables LIBRSVG_SHARP_CFLAGS and LIBRSVG_SHARP_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8013,18 +8015,17 @@ LIBRSVG_SHARP_LIBS=$pkg_cv_LIBRSVG_SHARP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_ADDINS" >&5 $as_echo_n "checking for MONO_ADDINS... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_CFLAGS"; then - pkg_cv_MONO_ADDINS_CFLAGS="$MONO_ADDINS_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_CFLAGS"; then + pkg_cv_MONO_ADDINS_CFLAGS="$MONO_ADDINS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins") 2>&5 ac_status=$? @@ -8034,15 +8035,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_LIBS"; then - pkg_cv_MONO_ADDINS_LIBS="$MONO_ADDINS_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_LIBS"; then + pkg_cv_MONO_ADDINS_LIBS="$MONO_ADDINS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins") 2>&5 ac_status=$? @@ -8052,14 +8051,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8067,9 +8067,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-addins"` + MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins" 2>&1` else - MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-addins"` + MONO_ADDINS_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONO_ADDINS_PKG_ERRORS" >&5 @@ -8083,9 +8083,10 @@ Alternatively, you may set the environment variables MONO_ADDINS_CFLAGS and MONO_ADDINS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8103,18 +8104,17 @@ MONO_ADDINS_LIBS=$pkg_cv_MONO_ADDINS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_ADDINS_GUI" >&5 $as_echo_n "checking for MONO_ADDINS_GUI... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_GUI_CFLAGS"; then - pkg_cv_MONO_ADDINS_GUI_CFLAGS="$MONO_ADDINS_GUI_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_GUI_CFLAGS"; then + pkg_cv_MONO_ADDINS_GUI_CFLAGS="$MONO_ADDINS_GUI_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins-gui\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins-gui") 2>&5 ac_status=$? @@ -8124,15 +8124,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_GUI_LIBS"; then - pkg_cv_MONO_ADDINS_GUI_LIBS="$MONO_ADDINS_GUI_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_GUI_LIBS"; then + pkg_cv_MONO_ADDINS_GUI_LIBS="$MONO_ADDINS_GUI_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins-gui\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins-gui") 2>&5 ac_status=$? @@ -8142,14 +8140,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8157,9 +8156,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-addins-gui"` + MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins-gui" 2>&1` else - MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-addins-gui"` + MONO_ADDINS_GUI_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins-gui" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONO_ADDINS_GUI_PKG_ERRORS" >&5 @@ -8173,9 +8172,10 @@ Alternatively, you may set the environment variables MONO_ADDINS_GUI_CFLAGS and MONO_ADDINS_GUI_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8193,18 +8193,17 @@ MONO_ADDINS_GUI_LIBS=$pkg_cv_MONO_ADDINS_GUI_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_ADDINS_SETUP" >&5 $as_echo_n "checking for MONO_ADDINS_SETUP... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_SETUP_CFLAGS"; then - pkg_cv_MONO_ADDINS_SETUP_CFLAGS="$MONO_ADDINS_SETUP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_SETUP_CFLAGS"; then + pkg_cv_MONO_ADDINS_SETUP_CFLAGS="$MONO_ADDINS_SETUP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins-setup\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins-setup") 2>&5 ac_status=$? @@ -8214,15 +8213,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_ADDINS_SETUP_LIBS"; then - pkg_cv_MONO_ADDINS_SETUP_LIBS="$MONO_ADDINS_SETUP_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_ADDINS_SETUP_LIBS"; then + pkg_cv_MONO_ADDINS_SETUP_LIBS="$MONO_ADDINS_SETUP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-addins-setup\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-addins-setup") 2>&5 ac_status=$? @@ -8232,14 +8229,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8247,9 +8245,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-addins-setup"` + MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-addins-setup" 2>&1` else - MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-addins-setup"` + MONO_ADDINS_SETUP_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-addins-setup" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONO_ADDINS_SETUP_PKG_ERRORS" >&5 @@ -8263,9 +8261,10 @@ Alternatively, you may set the environment variables MONO_ADDINS_SETUP_CFLAGS and MONO_ADDINS_SETUP_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8283,18 +8282,17 @@ MONO_ADDINS_SETUP_LIBS=$pkg_cv_MONO_ADDINS_SETUP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_CAIRO" >&5 $as_echo_n "checking for MONO_CAIRO... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_CAIRO_CFLAGS"; then - pkg_cv_MONO_CAIRO_CFLAGS="$MONO_CAIRO_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_CAIRO_CFLAGS"; then + pkg_cv_MONO_CAIRO_CFLAGS="$MONO_CAIRO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5 ac_status=$? @@ -8304,15 +8302,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_CAIRO_LIBS"; then - pkg_cv_MONO_CAIRO_LIBS="$MONO_CAIRO_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_CAIRO_LIBS"; then + pkg_cv_MONO_CAIRO_LIBS="$MONO_CAIRO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-cairo\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-cairo") 2>&5 ac_status=$? @@ -8322,14 +8318,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8337,9 +8334,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-cairo"` + MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-cairo" 2>&1` else - MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-cairo"` + MONO_CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-cairo" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONO_CAIRO_PKG_ERRORS" >&5 @@ -8353,9 +8350,10 @@ Alternatively, you may set the environment variables MONO_CAIRO_CFLAGS and MONO_CAIRO_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8373,18 +8371,17 @@ MONO_CAIRO_LIBS=$pkg_cv_MONO_CAIRO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for MONO_OPTIONS" >&5 $as_echo_n "checking for MONO_OPTIONS... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_OPTIONS_CFLAGS"; then - pkg_cv_MONO_OPTIONS_CFLAGS="$MONO_OPTIONS_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_OPTIONS_CFLAGS"; then + pkg_cv_MONO_OPTIONS_CFLAGS="$MONO_OPTIONS_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-options\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-options") 2>&5 ac_status=$? @@ -8394,15 +8391,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$MONO_OPTIONS_LIBS"; then - pkg_cv_MONO_OPTIONS_LIBS="$MONO_OPTIONS_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$MONO_OPTIONS_LIBS"; then + pkg_cv_MONO_OPTIONS_LIBS="$MONO_OPTIONS_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"mono-options\""; } >&5 ($PKG_CONFIG --exists --print-errors "mono-options") 2>&5 ac_status=$? @@ -8412,14 +8407,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8427,9 +8423,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - MONO_OPTIONS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "mono-options"` + MONO_OPTIONS_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "mono-options" 2>&1` else - MONO_OPTIONS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "mono-options"` + MONO_OPTIONS_PKG_ERRORS=`$PKG_CONFIG --print-errors "mono-options" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$MONO_OPTIONS_PKG_ERRORS" >&5 @@ -8443,9 +8439,10 @@ Alternatively, you may set the environment variables MONO_OPTIONS_CFLAGS and MONO_OPTIONS_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8463,18 +8460,17 @@ MONO_OPTIONS_LIBS=$pkg_cv_MONO_OPTIONS_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NDESK_DBUS_10" >&5 $as_echo_n "checking for NDESK_DBUS_10... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$NDESK_DBUS_10_CFLAGS"; then - pkg_cv_NDESK_DBUS_10_CFLAGS="$NDESK_DBUS_10_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NDESK_DBUS_10_CFLAGS"; then + pkg_cv_NDESK_DBUS_10_CFLAGS="$NDESK_DBUS_10_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ndesk-dbus-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "ndesk-dbus-1.0") 2>&5 ac_status=$? @@ -8484,15 +8480,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$NDESK_DBUS_10_LIBS"; then - pkg_cv_NDESK_DBUS_10_LIBS="$NDESK_DBUS_10_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NDESK_DBUS_10_LIBS"; then + pkg_cv_NDESK_DBUS_10_LIBS="$NDESK_DBUS_10_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ndesk-dbus-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "ndesk-dbus-1.0") 2>&5 ac_status=$? @@ -8502,14 +8496,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8517,9 +8512,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - NDESK_DBUS_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ndesk-dbus-1.0"` + NDESK_DBUS_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "ndesk-dbus-1.0" 2>&1` else - NDESK_DBUS_10_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ndesk-dbus-1.0"` + NDESK_DBUS_10_PKG_ERRORS=`$PKG_CONFIG --print-errors "ndesk-dbus-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$NDESK_DBUS_10_PKG_ERRORS" >&5 @@ -8533,9 +8528,10 @@ Alternatively, you may set the environment variables NDESK_DBUS_10_CFLAGS and NDESK_DBUS_10_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8553,18 +8549,17 @@ NDESK_DBUS_10_LIBS=$pkg_cv_NDESK_DBUS_10_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NDESK_DBUS_GLIB_10" >&5 $as_echo_n "checking for NDESK_DBUS_GLIB_10... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$NDESK_DBUS_GLIB_10_CFLAGS"; then - pkg_cv_NDESK_DBUS_GLIB_10_CFLAGS="$NDESK_DBUS_GLIB_10_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NDESK_DBUS_GLIB_10_CFLAGS"; then + pkg_cv_NDESK_DBUS_GLIB_10_CFLAGS="$NDESK_DBUS_GLIB_10_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ndesk-dbus-glib-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "ndesk-dbus-glib-1.0") 2>&5 ac_status=$? @@ -8574,15 +8569,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$NDESK_DBUS_GLIB_10_LIBS"; then - pkg_cv_NDESK_DBUS_GLIB_10_LIBS="$NDESK_DBUS_GLIB_10_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NDESK_DBUS_GLIB_10_LIBS"; then + pkg_cv_NDESK_DBUS_GLIB_10_LIBS="$NDESK_DBUS_GLIB_10_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"ndesk-dbus-glib-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "ndesk-dbus-glib-1.0") 2>&5 ac_status=$? @@ -8592,14 +8585,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8607,9 +8601,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - NDESK_DBUS_GLIB_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "ndesk-dbus-glib-1.0"` + NDESK_DBUS_GLIB_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "ndesk-dbus-glib-1.0" 2>&1` else - NDESK_DBUS_GLIB_10_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ndesk-dbus-glib-1.0"` + NDESK_DBUS_GLIB_10_PKG_ERRORS=`$PKG_CONFIG --print-errors "ndesk-dbus-glib-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$NDESK_DBUS_GLIB_10_PKG_ERRORS" >&5 @@ -8623,9 +8617,10 @@ Alternatively, you may set the environment variables NDESK_DBUS_GLIB_10_CFLAGS and NDESK_DBUS_GLIB_10_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8643,18 +8638,17 @@ NDESK_DBUS_GLIB_10_LIBS=$pkg_cv_NDESK_DBUS_GLIB_10_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NOTIFY_SHARP" >&5 $as_echo_n "checking for NOTIFY_SHARP... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$NOTIFY_SHARP_CFLAGS"; then - pkg_cv_NOTIFY_SHARP_CFLAGS="$NOTIFY_SHARP_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NOTIFY_SHARP_CFLAGS"; then + pkg_cv_NOTIFY_SHARP_CFLAGS="$NOTIFY_SHARP_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5 ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5 ac_status=$? @@ -8664,15 +8658,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$NOTIFY_SHARP_LIBS"; then - pkg_cv_NOTIFY_SHARP_LIBS="$NOTIFY_SHARP_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NOTIFY_SHARP_LIBS"; then + pkg_cv_NOTIFY_SHARP_LIBS="$NOTIFY_SHARP_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"notify-sharp\""; } >&5 ($PKG_CONFIG --exists --print-errors "notify-sharp") 2>&5 ac_status=$? @@ -8682,14 +8674,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8697,9 +8690,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - NOTIFY_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "notify-sharp"` + NOTIFY_SHARP_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "notify-sharp" 2>&1` else - NOTIFY_SHARP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "notify-sharp"` + NOTIFY_SHARP_PKG_ERRORS=`$PKG_CONFIG --print-errors "notify-sharp" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$NOTIFY_SHARP_PKG_ERRORS" >&5 @@ -8713,9 +8706,10 @@ Alternatively, you may set the environment variables NOTIFY_SHARP_CFLAGS and NOTIFY_SHARP_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8733,18 +8727,17 @@ NOTIFY_SHARP_LIBS=$pkg_cv_NOTIFY_SHARP_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for WNCK_SHARP_10" >&5 $as_echo_n "checking for WNCK_SHARP_10... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$WNCK_SHARP_10_CFLAGS"; then - pkg_cv_WNCK_SHARP_10_CFLAGS="$WNCK_SHARP_10_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$WNCK_SHARP_10_CFLAGS"; then + pkg_cv_WNCK_SHARP_10_CFLAGS="$WNCK_SHARP_10_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wnck-sharp-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "wnck-sharp-1.0") 2>&5 ac_status=$? @@ -8754,15 +8747,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$WNCK_SHARP_10_LIBS"; then - pkg_cv_WNCK_SHARP_10_LIBS="$WNCK_SHARP_10_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$WNCK_SHARP_10_LIBS"; then + pkg_cv_WNCK_SHARP_10_LIBS="$WNCK_SHARP_10_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wnck-sharp-1.0\""; } >&5 ($PKG_CONFIG --exists --print-errors "wnck-sharp-1.0") 2>&5 ac_status=$? @@ -8772,14 +8763,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8787,9 +8779,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - WNCK_SHARP_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wnck-sharp-1.0"` + WNCK_SHARP_10_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "wnck-sharp-1.0" 2>&1` else - WNCK_SHARP_10_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wnck-sharp-1.0"` + WNCK_SHARP_10_PKG_ERRORS=`$PKG_CONFIG --print-errors "wnck-sharp-1.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$WNCK_SHARP_10_PKG_ERRORS" >&5 @@ -8803,9 +8795,10 @@ Alternatively, you may set the environment variables WNCK_SHARP_10_CFLAGS and WNCK_SHARP_10_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8823,7 +8816,7 @@ WNCK_SHARP_10_LIBS=$pkg_cv_WNCK_SHARP_10_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi GTK_REQUIRED_VERSION=2.14.3 @@ -8833,11 +8826,10 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GIO" >&5 $as_echo_n "checking for GIO... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GIO_CFLAGS"; then - pkg_cv_GIO_CFLAGS="$GIO_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GIO_CFLAGS"; then + pkg_cv_GIO_CFLAGS="$GIO_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -8847,15 +8839,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GIO_LIBS"; then - pkg_cv_GIO_LIBS="$GIO_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GIO_LIBS"; then + pkg_cv_GIO_LIBS="$GIO_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -8865,14 +8855,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8880,9 +8871,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION"` + GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` else - GIO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION"` + GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors "gio-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GIO_PKG_ERRORS" >&5 @@ -8896,9 +8887,10 @@ Alternatively, you may set the environment variables GIO_CFLAGS and GIO_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -8916,18 +8908,17 @@ GIO_LIBS=$pkg_cv_GIO_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GTK" >&5 $as_echo_n "checking for GTK... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_CFLAGS"; then - pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GTK_CFLAGS"; then + pkg_cv_GTK_CFLAGS="$GTK_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= \$GTK_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -8937,15 +8928,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GTK_LIBS"; then - pkg_cv_GTK_LIBS="$GTK_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GTK_LIBS"; then + pkg_cv_GTK_LIBS="$GTK_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-2.0 >= \$GTK_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -8955,14 +8944,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -8970,9 +8960,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION"` + GTK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION" 2>&1` else - GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION"` + GTK_PKG_ERRORS=`$PKG_CONFIG --print-errors "gtk+-2.0 >= $GTK_REQUIRED_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GTK_PKG_ERRORS" >&5 @@ -8986,9 +8976,10 @@ Alternatively, you may set the environment variables GTK_CFLAGS and GTK_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -9006,18 +8997,17 @@ GTK_LIBS=$pkg_cv_GTK_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi pkg_failed=no { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5 $as_echo_n "checking for GLIB... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_CFLAGS"; then - pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLIB_CFLAGS"; then + pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -9027,15 +9017,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$GLIB_LIBS"; then - pkg_cv_GLIB_LIBS="$GLIB_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$GLIB_LIBS"; then + pkg_cv_GLIB_LIBS="$GLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gobject-2.0 >= \$GLIB_REQUIRED_VERSION\""; } >&5 ($PKG_CONFIG --exists --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION") 2>&5 ac_status=$? @@ -9045,14 +9033,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -9060,9 +9049,9 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION"` + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION"` + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "gobject-2.0 >= $GLIB_REQUIRED_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 @@ -9076,9 +9065,10 @@ Alternatively, you may set the environment variables GLIB_CFLAGS and GLIB_LIBS to avoid the need to call pkg-config. -See the pkg-config man page for more details. -" "$LINENO" 5 +See the pkg-config man page for more details." "$LINENO" 5 elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "The pkg-config script could not be found or is too old. Make sure it @@ -9096,7 +9086,7 @@ GLIB_LIBS=$pkg_cv_GLIB_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - : + fi @@ -9141,11 +9131,10 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NUNIT" >&5 $as_echo_n "checking for NUNIT... " >&6; } -if test -n "$PKG_CONFIG"; then - if test -n "$NUNIT_CFLAGS"; then - pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NUNIT_CFLAGS"; then + pkg_cv_NUNIT_CFLAGS="$NUNIT_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit\""; } >&5 ($PKG_CONFIG --exists --print-errors "nunit") 2>&5 ac_status=$? @@ -9155,15 +9144,13 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi -if test -n "$PKG_CONFIG"; then - if test -n "$NUNIT_LIBS"; then - pkg_cv_NUNIT_LIBS="$NUNIT_LIBS" - else - if test -n "$PKG_CONFIG" && \ +if test -n "$NUNIT_LIBS"; then + pkg_cv_NUNIT_LIBS="$NUNIT_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"nunit\""; } >&5 ($PKG_CONFIG --exists --print-errors "nunit") 2>&5 ac_status=$? @@ -9173,14 +9160,15 @@ else pkg_failed=yes fi - fi -else - pkg_failed=untried + else + pkg_failed=untried fi if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes @@ -9188,17 +9176,17 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "nunit"` + NUNIT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "nunit" 2>&1` else - NUNIT_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "nunit"` + NUNIT_PKG_ERRORS=`$PKG_CONFIG --print-errors "nunit" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$NUNIT_PKG_ERRORS" >&5 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - have_nunit=no + have_nunit=no elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } have_nunit=no else NUNIT_CFLAGS=$pkg_cv_NUNIT_CFLAGS @@ -9856,7 +9844,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by docky $as_me 2.0.4, which was +This file was extended by docky $as_me 2.0.5, which was generated by GNU Autoconf 2.65. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9913,7 +9901,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -docky config.status 2.0.4 +docky config.status 2.0.5 configured by $0, generated by GNU Autoconf 2.65, with options \\"\$ac_cs_config\\" diff -Nru docky-2.0.4/configure.ac docky-2.0.5/configure.ac --- docky-2.0.4/configure.ac 2010-05-31 07:57:05.815621942 +0200 +++ docky-2.0.5/configure.ac 2010-07-01 19:03:00.505184003 +0200 @@ -1,7 +1,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.54]) -AC_INIT([docky], [2.0.4]) +AC_INIT([docky], [2.0.5]) AM_INIT_AUTOMAKE([foreign tar-pax]) AC_CONFIG_MACRO_DIR([m4]) diff -Nru docky-2.0.4/COPYRIGHT docky-2.0.5/COPYRIGHT --- docky-2.0.4/COPYRIGHT 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/COPYRIGHT 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,5 @@ Docky -Copyright (C) 2009 by the following: +Copyright (C) 2009-2010 by the following: If you have contributed to this project then you deserve to be on this list. Contact us (see: AUTHORS) and we'll add you. @@ -10,6 +10,7 @@ Rico Tzschichholz Seif Lofty Chris Halse Rogers +Alex Launi diff -Nru docky-2.0.4/data/icons/hicolor/128x128/apps/Makefile.in docky-2.0.5/data/icons/hicolor/128x128/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/128x128/apps/Makefile.in 2010-05-31 08:00:11.705620863 +0200 +++ docky-2.0.5/data/icons/hicolor/128x128/apps/Makefile.in 2010-07-01 19:05:32.915184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/128x128/Makefile.in docky-2.0.5/data/icons/hicolor/128x128/Makefile.in --- docky-2.0.4/data/icons/hicolor/128x128/Makefile.in 2010-05-31 08:00:11.665621381 +0200 +++ docky-2.0.5/data/icons/hicolor/128x128/Makefile.in 2010-07-01 19:05:32.855184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/16x16/apps/Makefile.in docky-2.0.5/data/icons/hicolor/16x16/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/16x16/apps/Makefile.in 2010-05-31 08:00:11.795621343 +0200 +++ docky-2.0.5/data/icons/hicolor/16x16/apps/Makefile.in 2010-07-01 19:05:33.025184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/16x16/Makefile.in docky-2.0.5/data/icons/hicolor/16x16/Makefile.in --- docky-2.0.4/data/icons/hicolor/16x16/Makefile.in 2010-05-31 08:00:11.745621382 +0200 +++ docky-2.0.5/data/icons/hicolor/16x16/Makefile.in 2010-07-01 19:05:32.965184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/22x22/apps/Makefile.in docky-2.0.5/data/icons/hicolor/22x22/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/22x22/apps/Makefile.in 2010-05-31 08:00:11.875621425 +0200 +++ docky-2.0.5/data/icons/hicolor/22x22/apps/Makefile.in 2010-07-01 19:05:33.135184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/22x22/Makefile.in docky-2.0.5/data/icons/hicolor/22x22/Makefile.in --- docky-2.0.4/data/icons/hicolor/22x22/Makefile.in 2010-05-31 08:00:11.835620729 +0200 +++ docky-2.0.5/data/icons/hicolor/22x22/Makefile.in 2010-07-01 19:05:33.085184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/24x24/apps/Makefile.in docky-2.0.5/data/icons/hicolor/24x24/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/24x24/apps/Makefile.in 2010-05-31 08:00:11.965621653 +0200 +++ docky-2.0.5/data/icons/hicolor/24x24/apps/Makefile.in 2010-07-01 19:05:33.255184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/24x24/Makefile.in docky-2.0.5/data/icons/hicolor/24x24/Makefile.in --- docky-2.0.4/data/icons/hicolor/24x24/Makefile.in 2010-05-31 08:00:11.924371709 +0200 +++ docky-2.0.5/data/icons/hicolor/24x24/Makefile.in 2010-07-01 19:05:33.195184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/32x32/apps/Makefile.in docky-2.0.5/data/icons/hicolor/32x32/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/32x32/apps/Makefile.in 2010-05-31 08:00:12.055621325 +0200 +++ docky-2.0.5/data/icons/hicolor/32x32/apps/Makefile.in 2010-07-01 19:05:33.365184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/32x32/Makefile.in docky-2.0.5/data/icons/hicolor/32x32/Makefile.in --- docky-2.0.4/data/icons/hicolor/32x32/Makefile.in 2010-05-31 08:00:12.005621402 +0200 +++ docky-2.0.5/data/icons/hicolor/32x32/Makefile.in 2010-07-01 19:05:33.315184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/48x48/apps/Makefile.in docky-2.0.5/data/icons/hicolor/48x48/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/48x48/apps/Makefile.in 2010-05-31 08:00:12.135620635 +0200 +++ docky-2.0.5/data/icons/hicolor/48x48/apps/Makefile.in 2010-07-01 19:05:33.485184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/48x48/Makefile.in docky-2.0.5/data/icons/hicolor/48x48/Makefile.in --- docky-2.0.4/data/icons/hicolor/48x48/Makefile.in 2010-05-31 08:00:12.095620745 +0200 +++ docky-2.0.5/data/icons/hicolor/48x48/Makefile.in 2010-07-01 19:05:33.425184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/48x48/mimetypes/Makefile.in docky-2.0.5/data/icons/hicolor/48x48/mimetypes/Makefile.in --- docky-2.0.4/data/icons/hicolor/48x48/mimetypes/Makefile.in 2010-05-31 08:00:12.185621398 +0200 +++ docky-2.0.5/data/icons/hicolor/48x48/mimetypes/Makefile.in 2010-07-01 19:05:33.535184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/64x64/apps/Makefile.in docky-2.0.5/data/icons/hicolor/64x64/apps/Makefile.in --- docky-2.0.4/data/icons/hicolor/64x64/apps/Makefile.in 2010-05-31 08:00:12.265621408 +0200 +++ docky-2.0.5/data/icons/hicolor/64x64/apps/Makefile.in 2010-07-01 19:05:33.655184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/64x64/Makefile.in docky-2.0.5/data/icons/hicolor/64x64/Makefile.in --- docky-2.0.4/data/icons/hicolor/64x64/Makefile.in 2010-05-31 08:00:12.225621347 +0200 +++ docky-2.0.5/data/icons/hicolor/64x64/Makefile.in 2010-07-01 19:05:33.595184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/hicolor/Makefile.in docky-2.0.5/data/icons/hicolor/Makefile.in --- docky-2.0.4/data/icons/hicolor/Makefile.in 2010-05-31 08:00:12.315621366 +0200 +++ docky-2.0.5/data/icons/hicolor/Makefile.in 2010-07-01 19:05:33.715184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/icons/Makefile.in docky-2.0.5/data/icons/Makefile.in --- docky-2.0.4/data/icons/Makefile.in 2010-05-31 08:00:11.615621360 +0200 +++ docky-2.0.5/data/icons/Makefile.in 2010-07-01 19:05:32.795184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/Makefile.in docky-2.0.5/data/Makefile.in --- docky-2.0.4/data/Makefile.in 2010-05-31 08:00:11.575621626 +0200 +++ docky-2.0.5/data/Makefile.in 2010-07-01 19:05:32.745184001 +0200 @@ -229,6 +229,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/Air/Makefile.in docky-2.0.5/data/themes/Air/Makefile.in --- docky-2.0.4/data/themes/Air/Makefile.in 2010-05-31 08:00:12.355621373 +0200 +++ docky-2.0.5/data/themes/Air/Makefile.in 2010-07-01 19:05:33.765184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/Glass/Makefile.in docky-2.0.5/data/themes/Glass/Makefile.in --- docky-2.0.4/data/themes/Glass/Makefile.in 2010-05-31 08:00:12.395620512 +0200 +++ docky-2.0.5/data/themes/Glass/Makefile.in 2010-07-01 19:05:33.825184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/Grayscale/Makefile.in docky-2.0.5/data/themes/Grayscale/Makefile.in --- docky-2.0.4/data/themes/Grayscale/Makefile.in 2010-05-31 08:00:12.445621372 +0200 +++ docky-2.0.5/data/themes/Grayscale/Makefile.in 2010-07-01 19:05:33.885184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/HUD/Makefile.in docky-2.0.5/data/themes/HUD/Makefile.in --- docky-2.0.4/data/themes/HUD/Makefile.in 2010-05-31 08:00:12.485621367 +0200 +++ docky-2.0.5/data/themes/HUD/Makefile.in 2010-07-01 19:05:33.935184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/Makefile.in docky-2.0.5/data/themes/Makefile.in --- docky-2.0.4/data/themes/Makefile.in 2010-05-31 08:00:12.525621400 +0200 +++ docky-2.0.5/data/themes/Makefile.in 2010-07-01 19:05:33.995184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/data/themes/Smoke/Makefile.in docky-2.0.5/data/themes/Smoke/Makefile.in --- docky-2.0.4/data/themes/Smoke/Makefile.in 2010-05-31 08:00:12.575621383 +0200 +++ docky-2.0.5/data/themes/Smoke/Makefile.in 2010-07-01 19:05:34.055184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/debian/changelog docky-2.0.5/debian/changelog --- docky-2.0.4/debian/changelog 2010-07-02 10:27:27.000000000 +0200 +++ docky-2.0.5/debian/changelog 2010-07-02 10:27:27.000000000 +0200 @@ -1,3 +1,83 @@ +docky (2.0.5-0ubuntu1) lucid-proposed; urgency=low + + * New upstream release 2.0.5 "Be proud of your dock", + changes include: + + remove --debug flag from launcher for lower memory usage + + update the about dialog credits to list documenters and make translation + tab easier to read + + change url in about dialog to the launchpad project page + + Window-Matching + - fix for applications commandline + - properly match qt creator (LP: #594814) + - prefer local over global launchers (LP: #588073) (LP: #592841) + - match prefix for gksudo (LP: #516433) + - fix nautilus items showing active indicator when desktop + is focused (LP: #487113) + - fix matching wine apps that use a prefixed launcher (LP: #596092) + + Memory Leaks + - dispose of calendar painter when the clock item is disposed + - fix leak in AutoHideManager + - several fixes using Cairo.Context.Target and Pango.Layout + - fix leak in PagingPainters + - fix leak in recursive file-deletion + - fix leaking SeparatorItems, WnckDockItems + - fix leaks with FileEmblems + - fix Pixbuf related leaks + - fix some leaks regarding FileMonitors + - fix leaks regarding Tiles and AbtractTileObjects + - fix leaking Glib.FileAdapter caused by unreferenced Action in + FileDockItem + + Handle invalid desktopfile entry and UriFormatException in + FileApplicationProvider (LP: #595921) + + fix potential crash for invalid HelperMetadata + + handle drops correctly + + fix handling of Helpers in HelperService + + make the sliders in preferences behave better + + fix drawing of rotated items + + fix HoveredItem click-position + + avoids fatal errors on console when loading embedded icons when no + height or width is specified and when dock items have a null Icon + + fix icon theme change not refreshing the dock icons (LP: #590205) + + fix SVG rendering bug + + fix iconsize temporarily getting large when adding to full dock + (LP: #579576) + + fix the 'crash in PinToDock' (LP: #588073) + + make 3d background height more consistent and a tad larger (LP: #503038) + + fix dragging multiple files to a folder on the dock, which caused + a crash and data corruption (LP: #579049) + + don't request animations if urgent state is removed from a window and + fix glow location (LP: #596422) + + fix window previews being offset (LP: #495065) + + fix broken zoom after shrinking icon size (LP: #598924) + + fix problem with hovers still visible when painters show + + fix displaying default icon in place of missing file emblem (LP: #534651) + + fix crash when gconf key for menus_have_icons is not set (LP: #573751) + + make sure painters fit on screen (LP: #589978) + + fix icon minimize animations not working immediately for some newly + opened windows + + don't dispose our static DockyItem + + fix CurrentDesktopOnly not working when dragging a window across desktops + (LP: #600290) + + GMail: + - fix thread-guards and remove deprecated code + - fix problem with feeds that don't have an author entry (LP: #595530) + + NPR: fix bug where removing your last NPR station unloaded the docklet + and fix station icon + + NetworkManager: fix crash caused when NM goes away + and fix icons and add another fallback icon (LP: #588581) + + Mounter: + - fixed some leaks + - only remove mounted items if they were successfully unmounted + (LP: #597637) + - fix duplicate icons showing in mounter (LP: #525306) + + Weather: fix feels like temp showing incorrect for metric (LP: #597670) + + RecentDocuments: + - fixed some leaks + - fix sensitivity of recent docs clear menu item - even if docky shows + the list as empty does not mean it cant be cleared + + -- Rico Tzschichholz Fri, 02 Jul 2010 10:26:00 +0200 + docky (2.0.4-0ubuntu1) lucid-proposed; urgency=low [ Iain Lane ] diff -Nru docky-2.0.4/Docky/AssemblyInfo.cs docky-2.0.5/Docky/AssemblyInfo.cs --- docky-2.0.4/Docky/AssemblyInfo.cs 2010-05-31 08:00:18.424372989 +0200 +++ docky-2.0.5/Docky/AssemblyInfo.cs 2010-07-01 19:05:38.505184002 +0200 @@ -46,7 +46,7 @@ // // You can specify all values by your own or you can build default build and revision // numbers with the '*' character (the default): -[assembly: AssemblyVersion("1266")] +[assembly: AssemblyVersion("1336")] // The following attributes specify the key for the sign of your assembly. See the // .NET Framework documentation for more information about signing. @@ -58,8 +58,8 @@ { internal static class AssemblyInfo { - public const string DisplayVersion = "2.0.4"; - public const string VersionDetails = "bzr docky-2.0 r1266"; + public const string DisplayVersion = "2.0.5"; + public const string VersionDetails = "bzr docky-2.0 r1336"; public const string LocaleDirectory = "/usr/share/locale"; public const string InstallData = "/usr/share"; } diff -Nru docky-2.0.4/Docky/Docky/ConfigurationWindow.cs docky-2.0.5/Docky/Docky/ConfigurationWindow.cs --- docky-2.0.4/Docky/Docky/ConfigurationWindow.cs 2010-05-25 13:12:33.844863402 +0200 +++ docky-2.0.5/Docky/Docky/ConfigurationWindow.cs 2010-06-30 10:15:00.800310995 +0200 @@ -65,6 +65,9 @@ TileView HelpersTileview, DockletsTileview; Widgets.SearchEntry HelperSearch, DockletSearch; + List helpertiles; + List docklettiles; + internal static ConfigurationWindow Instance { get; private set; } static ConfigurationWindow () { @@ -78,11 +81,15 @@ if (activeDock == value) return; - if (activeDock != null) + if (activeDock != null) { activeDock.UnsetActiveGlow (); + activeDock.Preferences.ItemProvidersChanged -= HandleItemProvidersChanged; + } - if (value != null) + if (value != null) { value.SetActiveGlow (); + value.Preferences.ItemProvidersChanged += HandleItemProvidersChanged; + } activeDock = value; @@ -92,6 +99,27 @@ } } + void HandleItemProvidersChanged (object o, ItemProvidersChangedEventArgs args) + { + RefreshDocklets (); + } + + public override void Dispose () + { + ActiveDock = null; + if (HelpersTileview != null) + HelpersTileview.Clear (); + if (DockletsTileview != null) + DockletsTileview.Clear (); + + helpertiles.ForEach (to => to.Dispose ()); + helpertiles.Clear (); + docklettiles.ForEach (to => to.Dispose ()); + docklettiles.Clear (); + + base.Dispose (); + } + private ConfigurationWindow () : base(Gtk.WindowType.Toplevel) { this.Build (); @@ -113,6 +141,7 @@ start_with_computer_checkbutton.Active = IsAutoStartEnabled (); // setup docklets { + docklettiles = new List (); DockletSearch = new SearchEntry (); DockletSearch.EmptyMessage = Catalog.GetString ("Search Docklets..."); DockletSearch.InnerEntry.Changed += delegate { @@ -128,6 +157,7 @@ // } // setup helpers { + helpertiles = new List (); HelperSearch = new SearchEntry (); HelperSearch.EmptyMessage = Catalog.GetString ("Search Helpers..."); HelperSearch.InnerEntry.Changed += delegate { @@ -280,6 +310,8 @@ md.DefaultResponse = Gtk.ResponseType.Cancel; if ((ResponseType)md.Run () == Gtk.ResponseType.Ok) { + ActiveDock.ConfigurationClick -= HandleDockConfigurationClick; + ActiveDock.LeaveConfigurationMode (); Docky.Controller.DeleteDock (ActiveDock); if (Docky.Controller.Docks.Count () == 1) ActiveDock = Docky.Controller.Docks.First (); @@ -412,27 +444,48 @@ void RefreshHelpers () { + if (HelpersTileview == null) + return; + + HelpersTileview.Clear (); + + List helpers = DockServices.Helpers.Helpers; + + foreach (HelperTile tileobject in helpertiles.Where (to => !helpers.Contains (to.Helper))) { + helpertiles.Remove (tileobject); + tileobject.Dispose (); + } + helpertiles = helpers.Where (helper => !helpertiles.Exists (to => helper == to.Helper)) + .Select (h => new HelperTile (h)) + .Union (helpertiles).ToList (); + string query = HelperSearch.InnerEntry.Text.ToLower (); - IEnumerable tiles = DockServices.Helpers.Helpers.Select (h => new HelperTile (h)) - .Where (h => h.Name.ToLower ().Contains (query) || h.Description.ToLower ().Contains (query)) - .OrderBy (t => t.Name); + IEnumerable showinghelpertiles = helpertiles + .Where (hto => hto.Name.ToLower ().Contains (query) || hto.Description.ToLower ().Contains (query)) + .OrderBy (hto => hto.Name); if (helper_show_cmb.Active == (uint) HelperShowStates.Enabled) - tiles = tiles.Where (h => h.Enabled); - else if (helper_show_cmb.Active == (uint) HelperShowStates.Disabled) - tiles = tiles.Where (h => !h.Enabled); + showinghelpertiles = showinghelpertiles.Where (hto => hto.Enabled); + else if (helper_show_cmb.Active == (uint) HelperShowStates.Disabled) + showinghelpertiles = showinghelpertiles.Where (hto => !hto.Enabled); - HelpersTileview.Clear (); - foreach (HelperTile helper in tiles) { - HelpersTileview.AppendTile (helper); - } + foreach (HelperTile tileobject in showinghelpertiles) + HelpersTileview.AppendTile (tileobject); } void RefreshDocklets () { if (DockletsTileview == null) return; + + AbstractDockItemProvider selectedProvider = null; + DockletTile selectedTile = (DockletTile) DockletsTileview.CurrentTile (); + if (selectedTile != null) + selectedProvider = selectedTile.Provider; + DockletsTileview.Clear (); + docklettiles.ForEach (tile => tile.Dispose ()); + docklettiles.Clear (); if (ActiveDock == null) return; @@ -440,28 +493,32 @@ string query = DockletSearch.InnerEntry.Text.ToLower (); // build a list of DockletTiles, starting with the currently active tiles for the active dock, // and the available addins - List tiles = new List (); + DockletTile currentTile = null; foreach (AbstractDockItemProvider provider in ActiveDock.Preferences.ItemProviders) { string providerID = PluginManager.AddinIDFromProvider (provider); if (string.IsNullOrEmpty (providerID)) - continue; + continue; - tiles.Add (new DockletTile (providerID, provider)); + docklettiles.Add (new DockletTile (providerID, provider)); + if (provider == selectedProvider) + currentTile = docklettiles.Last (); } - tiles = tiles.Concat (PluginManager.AvailableProviderIDs.Select (id => new DockletTile (id))).ToList (); + docklettiles = docklettiles.Concat (PluginManager.AvailableProviderIDs.Select (id => new DockletTile (id))).ToList (); if (docklet_show_cmb.Active == (int) DockletShowStates.Active) - tiles = tiles.Where (t => t.Enabled).ToList (); + docklettiles = docklettiles.Where (t => t.Enabled).ToList (); else if (docklet_show_cmb.Active == (int) DockletShowStates.Disabled) - tiles = tiles.Where (t => !t.Enabled).ToList (); + docklettiles = docklettiles.Where (t => !t.Enabled).ToList (); - tiles = tiles.Where (t => t.Description.ToLower ().Contains (query) || t.Name.ToLower ().Contains (query)).ToList (); + docklettiles = docklettiles.Where (t => t.Description.ToLower ().Contains (query) || t.Name.ToLower ().Contains (query)).ToList (); - foreach (DockletTile docklet in tiles) { + foreach (DockletTile docklet in docklettiles) DockletsTileview.AppendTile (docklet); - } + + if (currentTile != null) + DockletsTileview.Select (docklettiles.IndexOf (currentTile)); } } } diff -Nru docky-2.0.4/Docky/Docky/DockletTile.cs docky-2.0.5/Docky/Docky/DockletTile.cs --- docky-2.0.4/Docky/Docky/DockletTile.cs 2010-05-03 07:58:13.407077962 +0200 +++ docky-2.0.5/Docky/Docky/DockletTile.cs 2010-06-30 11:39:35.290310994 +0200 @@ -32,6 +32,7 @@ { public Addin Addin { get; private set; } public AbstractDockItemProvider Provider { get; private set; } + Gtk.Button ConfigButton; public DockletTile (string addinID) : this (addinID, null) @@ -53,25 +54,37 @@ SubDescriptionText = Addin.Description.Author; ConfigButton = new Gtk.Button (Catalog.GetString ("Settings")); - ConfigButton.Clicked += delegate { - if (PluginManager.ConfigForAddin (Addin.Id) != null) - PluginManager.ConfigForAddin (Addin.Id).Show (); - }; + ConfigButton.Clicked += HandleConfigButtonClicked; UpdateInfo (); } + void HandleHelpButtonClicked (object sender, EventArgs e) + { + string id = Addin.Id.Substring (0, Addin.Id.IndexOf (",")); + id = id.Substring (id.IndexOf (".") + 1); + DockServices.System.Open ("http://wiki.go-docky.com/index.php?title=" + id + "_Docklet"); + } + + void HandleConfigButtonClicked (object sender, EventArgs e) + { + if (PluginManager.ConfigForAddin (Addin.Id) != null) + PluginManager.ConfigForAddin (Addin.Id).Show (); + } + void UpdateInfo () { - if (Enabled && PluginManager.ConfigForAddin (Addin.Id) != null) + if (Enabled && Addin != null && PluginManager.ConfigForAddin (Addin.Id) != null) AddUserButton (ConfigButton); else RemoveUserButton (ConfigButton); if (Provider == null) Icon = PluginManager.DefaultPluginIcon; - else + else if (Provider.Icon.IndexOf ("@") == -1) Icon = Provider.Icon; + else + ForcePixbuf = DockServices.Drawing.LoadIcon (Provider.Icon, 128, -1); } public override void OnActiveChanged () @@ -98,6 +111,10 @@ Addin = null; Provider = null; + ConfigButton.Clicked -= HandleConfigButtonClicked; + ConfigButton.Dispose (); + ConfigButton.Destroy (); + base.Dispose (); } } diff -Nru docky-2.0.4/Docky/Docky/Docky.cs docky-2.0.5/Docky/Docky/Docky.cs --- docky-2.0.4/Docky/Docky/Docky.cs 2010-05-28 22:39:57.586377487 +0200 +++ docky-2.0.5/Docky/Docky/Docky.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,5 @@ // -// Copyright (C) 2009 Jason Smith +// Copyright (C) 2009-2010 Jason Smith, Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -34,10 +34,8 @@ namespace Docky { - public static class Docky { - public static UserArgs CommandLinePreferences { get; private set; } static DockController controller; @@ -114,7 +112,7 @@ about.Version = AssemblyInfo.DisplayVersion + "\n" + AssemblyInfo.VersionDetails; about.IconName = "docky"; about.LogoIconName = "docky"; - about.Website = "http://www.go-docky.com/"; + about.Website = "https://launchpad.net/docky"; about.WebsiteLabel = "Website"; Gtk.AboutDialog.SetUrlHook ((dialog, link) => DockServices.System.Open (link)); about.Copyright = "Copyright \xa9 2009-2010 Docky Developers"; @@ -126,100 +124,134 @@ "Rico Tzschichholz ", "Seif Lotfy ", "Chris Halse Rogers ", - "Alex Launi " + "Alex Launi ", }; about.Artists = new[] { "Daniel Foré ", }; + about.Documenters = new[] { + "Sven Mauhar ", + "Robert Dyer ", + "Daniel Foré ", + "Chris Szikszoy ", + "Rico Tzschichholz ", + }; about.TranslatorCredits = "Asturian\n" + " Xuacu Saturio\n" + - + "\n" + + "Basque\n" + " Ibai Oihanguren\n" + + "\n" + "Bengali\n" + " Scio\n" + - + "\n" + + "Brazilian Portuguese\n" + " André Gondim, Fabio S Monteiro, Flávio Etrusco, Glauco Vinicius\n" + " Lindeval, Thiago Bellini, Victor Mello\n" + - + "\n" + + "Bulgarian\n" + " Boyan Sotirov, Krasimir Chonov\n" + - + "\n" + + "Catalan\n" + " BadChoice, Siegfried Gevatter\n" + - + "\n" + + "Chinese (Simplified)\n" + " Chen Tao, G.S.Alex, Xhacker Liu, fighterlyt, lhquark, skatiger, 冯超\n" + - + "\n" + + "Croatian\n" + " Saša Teković, zekopeko\n" + - + "\n" + + "English (United Kingdom)\n" + " Alex Denvir, Daniel Bell, David Wood, Joel Auterson, SteVe Cook\n" + - + "\n" + + "Finnish\n" + " Jiri Grönroos\n" + - + "\n" + + "French\n" + " Hugo M., Kévin Gomez, Pierre Slamich\n" + " Simon Richard, alienworkshop, maxime Cheval\n" + - + "\n" + + "Galician\n" + " Francisco Diéguez, Indalecio Freiría Santos, Miguel Anxo Bouzada, NaNo\n" + - + "\n" + + "German\n" + " Cephinux, Gabriel Shahzad, Jan-Christoph Borchardt, Mark Parigger\n" + " Martin Lettner, augias, fiction, pheder, tai\n" + - + "\n" + + "Hebrew\n" + " Uri Shabtay\n" + - + "\n" + + "Hindi\n" + " Bilal Akhtar\n" + - + "\n" + + "Hungarian\n" + " Bognár András, Gabor Kelemen, Jezsoviczki Ádám, NewPlayer\n" + - + "\n" + + "Icelandic\n" + " Baldur, Sveinn í Felli\n" + - + "\n" + + "Indonesian\n" + " Andika Triwidada, Fakhrul Rijal\n" + - + "\n" + + "Italian\n" + " Andrea Amoroso, Blaster, Ivan, MastroPino, Michele, Milo Casagrande, Quizzlo\n" + - + "\n" + + "Japanese\n" + " kawaji\n" + - + "\n" + + "Korean\n" + " Bugbear5, Cedna\n" + - + "\n" + + "Polish\n" + " 313, Adrian Grzemski, EuGene, Rafał Szalecki, Stanisław Gackowski, bumper, emol007\n" + - + "\n" + + "Romanian\n" + " Adi Roiban, George Dumitrescu\n" + - + "\n" + + "Russian\n" + " Alexander Semyonov, Alexey Nedilko, Andrey Sitnik, Artem Yakimenko\n" + " Dmitriy Bobylev, Ivan, Phenomen, Sergey Demurin, Sergey Sedov\n" + " SochiX, Vladimir, legin, sX11\n" + - + "\n" + + "Spanish\n" + " Alejandro Navarro, David, DiegoJ, Edgardo Fredz, FAMM, Fuerteventura\n" + " Gus, José A. Fuentes Santiago, Julián Alarcón, Malq, Martín V.\n" + " Omar Campagne, Ricardo Pérez López, Sebastián Porta, alvin23, augias, elXATU\n" + - + "\n" + + "Swedish\n" + " Daniel Nylander, Rovanion, riiga\n" + - + "\n" + + "Turkish\n" + " Yalçın Can, Yiğit Ateş\n" + - + "\n" + + "Ukrainian\n" + " naker.ua\n"; diff -Nru docky-2.0.4/Docky/Docky/HelperTile.cs docky-2.0.5/Docky/Docky/HelperTile.cs --- docky-2.0.4/Docky/Docky/HelperTile.cs 2010-05-25 13:12:33.844863402 +0200 +++ docky-2.0.5/Docky/Docky/HelperTile.cs 2010-06-30 10:03:10.860310995 +0200 @@ -30,11 +30,12 @@ public class HelperTile : AbstractTileObject { public Helper Helper { get; private set; } - + Gtk.Button UninstallButton; + public HelperTile (Helper helper) { this.Helper = helper; - DockServices.Helpers.HelperStatusChanged += HandleHelperHelperStatusChanged; + DockServices.Helpers.HelperStatusChanged += HandleHelperStatusChanged; ButtonStateDisabledText = Catalog.GetString ("_Enable"); ButtonStateEnabledText = Catalog.GetString ("_Disable"); @@ -51,21 +52,23 @@ if (!string.IsNullOrEmpty (helper.Data.Description)) Description = helper.Data.Description; if (helper.Data.Icon != null) - ForcePixbuf = helper.Data.Icon; + ForcePixbuf = helper.Data.Icon.Copy (); } if (helper.IsUser) { - Gtk.Button uninstall_btn = new Gtk.Button (); - uninstall_btn.Label = Catalog.GetString ("Uninstall"); - uninstall_btn.Clicked += delegate { - DockServices.Helpers.UninstallHelper (helper); - }; - AddUserButton (uninstall_btn); + UninstallButton = new Gtk.Button (Catalog.GetString ("Uninstall")); + UninstallButton.Clicked += HandleUninstallButtonClicked; + AddUserButton (UninstallButton); } SetProps (); } - + + void HandleUninstallButtonClicked (object sender, EventArgs e) + { + DockServices.Helpers.UninstallHelper (Helper); + } + void SetProps () { SubDescriptionText = Helper.IsRunning ? Catalog.GetString ("Running") : Catalog.GetString ("Stopped"); @@ -78,15 +81,21 @@ SetProps (); } - void HandleHelperHelperStatusChanged (object sender, HelperStatusChangedEventArgs e) + void HandleHelperStatusChanged (object sender, HelperStatusChangedEventArgs e) { SetProps (); } public override void Dispose () { - DockServices.Helpers.HelperStatusChanged -= HandleHelperHelperStatusChanged; + DockServices.Helpers.HelperStatusChanged -= HandleHelperStatusChanged; Helper = null; + + if (UninstallButton != null) { + UninstallButton.Clicked -= HandleUninstallButtonClicked; + UninstallButton.Dispose (); + UninstallButton.Destroy (); + } base.Dispose (); } diff -Nru docky-2.0.4/Docky/Docky/Interface/AutohideManager.cs docky-2.0.5/Docky/Docky/Interface/AutohideManager.cs --- docky-2.0.4/Docky/Docky/Interface/AutohideManager.cs 2010-03-31 17:49:09.677534137 +0200 +++ docky-2.0.5/Docky/Docky/Interface/AutohideManager.cs 2010-06-26 15:47:36.543229000 +0200 @@ -41,7 +41,8 @@ Wnck.Screen screen; CursorTracker tracker; int pid; - uint timer; + uint timer_activewindow; + uint timer_geometry; bool WindowIntersectingOther { get; set; } @@ -130,14 +131,14 @@ { if (args.PreviousWindow != null) args.PreviousWindow.GeometryChanged -= HandleGeometryChanged; - - if (timer > 0) - GLib.Source.Remove (timer); - - timer = GLib.Timeout.Add (200, delegate { + + if (timer_activewindow > 0) + return; + + timer_activewindow = GLib.Timeout.Add (200, delegate { SetupActiveWindow (); UpdateWindowIntersect (); - timer = 0; + timer_activewindow = 0; return false; }); } @@ -175,12 +176,12 @@ last_known_geo = geo; - if (timer > 0) - GLib.Source.Remove (timer); + if (timer_geometry > 0) + return; - timer = GLib.Timeout.Add (200, delegate { + timer_geometry = GLib.Timeout.Add (200, delegate { UpdateWindowIntersect (); - timer = 0; + timer_geometry = 0; return false; }); } diff -Nru docky-2.0.4/Docky/Docky/Interface/DockDragTracker.cs docky-2.0.5/Docky/Docky/Interface/DockDragTracker.cs --- docky-2.0.4/Docky/Docky/Interface/DockDragTracker.cs 2010-03-09 12:09:24.000000000 +0100 +++ docky-2.0.5/Docky/Docky/Interface/DockDragTracker.cs 2010-06-26 15:47:36.543229000 +0200 @@ -47,6 +47,7 @@ bool repo_mode = false; bool drag_disabled = false; int marker = 0; + uint drag_hover_timer; AbstractDockItem drag_item; @@ -100,11 +101,10 @@ return; repo_mode = value; - if (repo_mode) { + if (repo_mode) DisableDragTo (); - } else { + else EnableDragTo (); - } } } @@ -193,19 +193,17 @@ if (drag_item is INonPersistedItem || RepositionMode) drag_item = null; - if (drag_item != null) { + if (drag_item != null) pbuf = Owner.HoveredItem.IconSurface (new DockySurface (1, 1), Owner.ZoomedIconSize, Owner.IconSize, 0).LoadToPixbuf (); - } else { + else pbuf = new Gdk.Pixbuf (Gdk.Colorspace.Rgb, true, 8, 1, 1); - } Gtk.Drag.SetIconPixbuf (args.Context, pbuf, pbuf.Width / 2, pbuf.Height / 2); pbuf.Dispose (); // Set up a cursor tracker so we can move the window on the fly - if (RepositionMode) { + if (RepositionMode) Owner.CursorTracker.CursorPositionChanged += HandleCursorPositionChanged; - } } void HandleCursorPositionChanged (object sender, CursorPostionChangedArgs e) @@ -221,18 +219,17 @@ Gdk.Rectangle right = new Gdk.Rectangle (geo.X + geo.Width - activeRegion, geo.Y + activeRegion, activeRegion, geo.Height - activeRegion * 2); Gdk.Rectangle bottom = new Gdk.Rectangle (geo.X + activeRegion, geo.Y + geo.Height - activeRegion, geo.Width - activeRegion * 2, activeRegion); - DockPosition target = DockPosition.Left; - if (top.Contains (cursor)) { + DockPosition target; + if (top.Contains (cursor)) target = DockPosition.Top; - } else if (bottom.Contains (cursor)) { + else if (bottom.Contains (cursor)) target = DockPosition.Bottom; - } else if (left.Contains (cursor)) { + else if (left.Contains (cursor)) target = DockPosition.Left; - } else if (right.Contains (cursor)) { + else if (right.Contains (cursor)) target = DockPosition.Right; - } else { + else return; - } IDockPreferences prefs = Owner.Preferences; if (prefs.Position != target || prefs.MonitorNumber != monitor) { @@ -291,13 +288,11 @@ if (drag_data == null) return false; - foreach (string s in drag_data) { - if (Owner.HoveredProvider != null && Owner.HoveredProvider.CanAcceptDrop (s)) { + foreach (string s in drag_data) + if (Owner.HoveredProvider != null && Owner.HoveredProvider.CanAcceptDrop (s)) return true; - } else if (Owner.Preferences.DefaultProvider.CanAcceptDrop (s)) { + else if (Owner.Preferences.DefaultProvider.CanAcceptDrop (s)) return true; - } - } // cant accept anything! return false; @@ -324,14 +319,13 @@ foreach (string s in drag_data) { AbstractDockItemProvider provider; - if (Owner.HoveredProvider != null && Owner.HoveredProvider.CanAcceptDrop (s)) { + if (Owner.HoveredProvider != null && Owner.HoveredProvider.CanAcceptDrop (s)) provider = Owner.HoveredProvider; - } else if (Owner.Preferences.DefaultProvider.CanAcceptDrop (s)) { + else if (Owner.Preferences.DefaultProvider.CanAcceptDrop (s)) provider = Owner.Preferences.DefaultProvider; - } else { + else // nothing will take it, continue! continue; - } provider.AcceptDrop (s, newPosition); @@ -417,9 +411,7 @@ if (RepositionMode) return; - if (!InternalDragActive) { - ExternalDragActive = true; - } + ExternalDragActive = !InternalDragActive; if (marker != args.Context.GetHashCode ()) { marker = args.Context.GetHashCode (); @@ -470,12 +462,12 @@ // drag right if (drag_item.Position < destPos) { foreach (AbstractDockItem adi in ProviderForItem (drag_item).Items - .Where (i => i.Position > drag_item.Position && i.Position <= destPos)) + .Where (i => i.Position > drag_item.Position && i.Position <= destPos)) adi.Position--; // drag left } else if (drag_item.Position > destPos) { foreach (AbstractDockItem adi in ProviderForItem (drag_item).Items - .Where (i => i.Position < drag_item.Position && i.Position >= destPos)) + .Where (i => i.Position < drag_item.Position && i.Position >= destPos)) adi.Position++; } drag_item.Position = destPos; @@ -483,6 +475,19 @@ Owner.UpdateCollectionBuffer (); Owner.Preferences.SyncPreferences (); } + + if (drag_hover_timer > 0) { + GLib.Source.Remove (drag_hover_timer); + drag_hover_timer = 0; + } + + if (ExternalDragActive && drag_data != null) + drag_hover_timer = GLib.Timeout.Add (1500, delegate { + AbstractDockItem item = Owner.HoveredItem; + if (item != null) + item.Scrolled (ScrollDirection.Down, Gdk.ModifierType.None); + return true; + }); } AbstractDockItemProvider ProviderForItem (AbstractDockItem item) @@ -503,9 +508,8 @@ public void EnsureDragAndDropProxy () { // having a proxy window here is VERY bad ju-ju - if (InternalDragActive) { + if (InternalDragActive) return; - } if (Owner.DockHovered) { if (proxy_window == null) diff -Nru docky-2.0.4/Docky/Docky/Interface/DockPreferences.cs docky-2.0.5/Docky/Docky/Interface/DockPreferences.cs --- docky-2.0.4/Docky/Docky/Interface/DockPreferences.cs 2010-04-11 13:17:19.515355853 +0200 +++ docky-2.0.5/Docky/Docky/Interface/DockPreferences.cs 2010-06-26 15:47:36.543229000 +0200 @@ -330,8 +330,8 @@ window_manager_check.TooltipMarkup = Mono.Unix.Catalog.GetString ( "When set, windows which do not already have launchers on a dock will be added to this dock."); - icon_scale.Adjustment.SetBounds (24, 129, 1, 1, 1); - zoom_scale.Adjustment.SetBounds (1, 4.01, .01, .01, .01); + icon_scale.Adjustment.SetBounds (24, 129, 1, 12, 1); + zoom_scale.Adjustment.SetBounds (1, 4.01, .01, .1, .01); zoom_scale.FormatValue += delegate(object o, FormatValueArgs args) { args.RetVal = string.Format ("{0:#}%", args.Value * 100); diff -Nru docky-2.0.4/Docky/Docky/Interface/DockWindow.cs docky-2.0.5/Docky/Docky/Interface/DockWindow.cs --- docky-2.0.4/Docky/Docky/Interface/DockWindow.cs 2010-05-25 19:03:05.156114234 +0200 +++ docky-2.0.5/Docky/Docky/Interface/DockWindow.cs 2010-06-30 08:08:05.730310992 +0200 @@ -188,7 +188,6 @@ /// double remove_index; int remove_size; - int maxIconSize; uint animation_timer; uint icon_size_timer; @@ -230,6 +229,7 @@ RegisterPreferencesEvents (value); // Initialize value + MaxIconSize = Preferences.IconSize; UpdateMaxIconSize (); } } @@ -259,7 +259,7 @@ DragTracker.RepositionMode = config_mode; if (value) DragTracker.DragDisabled = false; - update_screen_regions = true; + UpdateScreenRegions (); SetTooltipVisibility (); if (background_buffer != null) { @@ -280,7 +280,7 @@ public ReadOnlyCollection Items { get { if (collection_backend.Count == 0) { - update_screen_regions = true; + UpdateScreenRegions (); bool priorItems = false; bool separatorNeeded = false; @@ -364,6 +364,8 @@ Pango.CairoHelper.LayoutPath (surface.Context, layout); surface.Context.Color = HoverTextManager.IsLight ? new Cairo.Color (0.1, 0.1, 0.1) : new Cairo.Color (1, 1, 1); surface.Context.Fill (); + + layout.Context.Dispose (); } return surface; @@ -504,10 +506,7 @@ get { return Math.Min (MaxIconSize, Preferences.IconSize); } } - int MaxIconSize { - get { return Math.Min (Preferences.IconSize, maxIconSize); } - set { maxIconSize = value; } - } + int MaxIconSize { get; set; } int Monitor { get { return Preferences.MonitorNumber; } @@ -593,13 +592,15 @@ DockWidth - PainterBufferSize, DockHeight - 2 * DockWidthBuffer); + int maxWidth = VerticalDock ? monitor_geo.Height : monitor_geo.Width; + if (Painter.Allocation != allocation) { Painter.SetAllocation (allocation); - allocation.Width = Painter.MinimumWidth; + allocation.Width = Math.Min (maxWidth - PainterBufferSize, Painter.MinimumWidth); Painter.SetAllocation (allocation); } - last_painter_width = Painter.MinimumWidth + PainterBufferSize; + last_painter_width = Math.Min (maxWidth, Painter.MinimumWidth + PainterBufferSize); return last_painter_width; } } @@ -664,16 +665,14 @@ // we buffer this value during renders since it will be checked many times and we dont need to // recalculate it each time - if (zoom_in_buffer.HasValue && rendering) { + if (zoom_in_buffer.HasValue && rendering) return zoom_in_buffer.Value; - } double zoom = Math.Min (1, (render_time - dock_hovered_change_time).TotalMilliseconds / BaseAnimationTime.TotalMilliseconds); - if (!DockHovered) { + if (!DockHovered) zoom = 1 - zoom; - } zoom *= 1 - PainterOpacity; @@ -683,13 +682,6 @@ return zoom; } } - - int ZoomSize { - get { - // 330 chosen for its pleasant (to me) look - return (int) (330 * (IconSize / 64.0)); - } - } #endregion @@ -735,6 +727,7 @@ Realized += HandleRealized; Docky.Controller.ThemeChanged += DockyControllerThemeChanged; + Wnck.Screen.Default.WindowOpened += HandleWindowOpened; // fix for nvidia bug if (Docky.CommandLinePreferences.BufferTime > 0) @@ -774,7 +767,11 @@ if (now - adi.StateSetTime (ItemState.Move) < SlideTime) return true; //Bouncing Items - if ((now - adi.LastClick) < BounceTime || (now - adi.StateSetTime (ItemState.Urgent)) < BounceTime) + if ((now - adi.LastClick) < BounceTime) + return true; + if ((adi.State & ItemState.Urgent) != ItemState.Urgent) + continue; + if ((now - adi.StateSetTime (ItemState.Urgent)) < BounceTime) return true; //Glowing Items if ((now - adi.StateSetTime (ItemState.Urgent)) < GlowTime) @@ -785,14 +782,14 @@ void HandleMenuHidden (object sender, EventArgs e) { - update_screen_regions = true; + UpdateScreenRegions (); SetTooltipVisibility (); AnimatedDraw (); } void HandleMenuShown (object sender, EventArgs e) { - update_screen_regions = true; + UpdateScreenRegions (); SetTooltipVisibility (); AnimatedDraw (); } @@ -1203,11 +1200,31 @@ else Painter.ButtonReleased (x, y, evnt.State); } else if (HoveredItem != null && lastClickedItem == HoveredItem) { - double x, y; Gdk.Rectangle region = DrawRegionForItem (HoveredItem); - x = ((Cursor.X + window_position.X) - region.X) / (double) region.Height; - y = ((Cursor.Y + window_position.Y) - region.Y) / (double) region.Width; + double x; + double y = Math.Min (1, Math.Max (0, (Cursor.Y - window_position.Y - region.Y) / (double) region.Height)); + + if (VerticalDock) + x = Math.Min (1, Math.Max (0, (Cursor.X - window_position.X - region.X) / (double) region.Width)); + else + x = Math.Min (1, Math.Max (0, (Cursor.X + window_position.X - region.X) / (double) region.Width)); + + if (HoveredItem.RotateWithDock) { + if (Position == DockPosition.Top) { + x = 1 - x; + y = 1 - y; + } else if (VerticalDock) { + double tmp = x; + x = y; + y = tmp; + + if (Position == DockPosition.Left) + y = 1 - y; + else + x = 1 - x; + } + } HoveredItem.Clicked (evnt.Button, evnt.State, x, y); AnimatedDraw (); @@ -1238,6 +1255,12 @@ #endregion #region Misc. + void HandleWindowOpened (object o, WindowOpenedArgs args) + { + UpdateScreenRegions (); + AnimatedDraw (); + } + void Reconfigure () { SetSizeRequest (); @@ -1273,19 +1296,23 @@ internal void UpdateCollectionBuffer () { if (rendering) { - // resetting a durring a render is bad. Complete the render then reset. + // resetting during a render is bad. Complete the render, then reset. GLib.Idle.Add (delegate { // dispose of our separators as we made them ourselves, // this could be a bit more elegant - foreach (AbstractDockItem item in Items.Where (adi => adi is INonPersistedItem)) + foreach (AbstractDockItem item in Items.Where (adi => adi is INonPersistedItem && adi != DockyItem)) { + DrawValues.Remove (item); item.Dispose (); + } collection_backend.Clear (); return false; }); } else { - foreach (AbstractDockItem item in Items.Where (adi => adi is INonPersistedItem)) + foreach (AbstractDockItem item in Items.Where (adi => adi is INonPersistedItem && adi != DockyItem)) { + DrawValues.Remove (item); item.Dispose (); + } collection_backend.Clear (); } @@ -1367,7 +1394,7 @@ Painter.PaintNeeded += HandlePainterPaintNeeded; repaint_painter = true; - update_screen_regions = true; + UpdateScreenRegions (); DragTracker.DragDisabled = true; SetTooltipVisibility (); @@ -1387,7 +1414,7 @@ Painter.PaintNeeded -= HandlePainterPaintNeeded; DragTracker.DragDisabled = false; - update_screen_regions = true; + UpdateScreenRegions (); Painter.Hidden (); Painter = null; @@ -1536,6 +1563,11 @@ Gdk.Rectangle DrawRegionForItemValue (AbstractDockItem item, DrawValue val) { + return DrawRegionForItemValue (item, val, false); + } + + Gdk.Rectangle DrawRegionForItemValue (AbstractDockItem item, DrawValue val, bool hoverRegion) + { int width = IconSize, height = IconSize; if (!item.Square) { @@ -1551,6 +1583,18 @@ } } + if (hoverRegion) + if (VerticalDock) + return new Gdk.Rectangle ((int) (val.Center.X - (width * val.Zoom / 2)), + (int) (val.StaticCenter.Y - height / 2), + (int) (width * val.Zoom), + height); + else + return new Gdk.Rectangle ((int) (val.StaticCenter.X - width / 2), + (int) (val.Center.Y - (height * val.Zoom / 2)), + width, + (int) (height * val.Zoom)); + return new Gdk.Rectangle ((int) (val.Center.X - (width * val.Zoom / 2)), (int) (val.Center.Y - (height * val.Zoom / 2)), (int) (width * val.Zoom), @@ -1568,52 +1612,40 @@ // first we do the math as if this is a top dock, to do this we need to set // up some "pretend" variables. we pretend we are a top dock because 0,0 is // at the top. - int width; - int height; + int width = surface.Width; + int height = surface.Height; double zoom; - // our width and height switch around if we have a veritcal dock - if (!VerticalDock) { - width = surface.Width; - height = surface.Height; - } else { - width = surface.Height; - height = surface.Width; - } Gdk.Point cursor = LocalCursor; Gdk.Point localCursor = cursor; // "relocate" our cursor to be on the top switch (Position) { - case DockPosition.Top: - ; - break; - case DockPosition.Left: - int tmpY = cursor.Y; - cursor.Y = cursor.X; - cursor.X = width - (width - tmpY); - break; case DockPosition.Right: - tmpY = cursor.Y; cursor.X = (Width - 1) - cursor.X; - cursor.Y = cursor.X; - cursor.X = width - (width - tmpY); break; case DockPosition.Bottom: cursor.Y = (Height - 1) - cursor.Y; break; + default: + break; } - // the line along the dock width about which the center of unzoomed icons sit - int midline = DockHeight / 2; - - // the left most edge of the first dock item - int startX = ((width - DockWidth) / 2) + DockWidthBuffer; + if (VerticalDock) { + int tmpY = cursor.Y; + cursor.Y = cursor.X; + cursor.X = tmpY; + + // our width and height switch around if we have a veritcal dock + width = surface.Height; + height = surface.Width; + } // this offset is used to split the icons into left/right aligned for panel mode - int panel_item_offset = 0; double panelanim = PanelModeToggleProgress; + int panel_item_offset; + if (VerticalDock) panel_item_offset = (monitor_geo.Height - DockWidth) / 2; else @@ -1626,206 +1658,216 @@ if (Preferences.PanelMode) panel_item_offset = (int) (panel_item_offset * panelanim); else - panel_item_offset = panel_item_offset - (int) (panel_item_offset * panelanim); + panel_item_offset -= (int) (panel_item_offset * panelanim); } + // the line along the dock width about which the center of unzoomed icons sit + int midline = DockHeight / 2; + + // the left most edge of the first dock item + int startX = ((width - DockWidth) / 2) + DockWidthBuffer - panel_item_offset; + Gdk.Point center = new Gdk.Point (startX, midline); - int index = 0; + // right align docklets bool rightAlign = (Items [0].Owner != Preferences.DefaultProvider && Items [0] != DockyItem); + if (rightAlign) + center.X += 2 * panel_item_offset; + + int index = 0; foreach (AbstractDockItem adi in Items) { - if (adi is SeparatorItem) - rightAlign = true; + // anything after the first separator is a docklet, and right aligned + if (!rightAlign && adi is SeparatorItem) { + rightAlign = true; + center.X += 2 * panel_item_offset; + } - // used to handle remove animation + // used to handle remove animations if (remove_index != 0 && remove_index < index && remove_index > index - 1) { double removePercent = 1 - Math.Min (1, (DateTime.UtcNow - remove_time).TotalMilliseconds / BaseAnimationTime.TotalMilliseconds); - if (removePercent == 0) { + if (removePercent == 0) remove_index = 0; - } else { + else center.X += (int) ((remove_size + ItemWidthBuffer) * removePercent); - } } DrawValue val = new DrawValue (); int iconSize = IconSize; // div by 2 may result in rounding errors? Will this render OK? Shorts WidthBuffer by 1? - double halfSize; - if (adi.Square) { - halfSize = iconSize / 2.0; - } else { - DockySurface icon = adi.IconSurface (surface, iconSize, IconSize, VisibleDockHeight); - - // yeah I am pretty sure... - if (adi.RotateWithDock || !VerticalDock) { - halfSize = icon.Width / 2.0; - } else { - halfSize = icon.Height / 2.0; - } + double halfSize = iconSize / 2.0; + + if (!adi.Square) { + DockySurface icon = adi.IconSurface (surface, iconSize, iconSize, VisibleDockHeight); + halfSize = ((adi.RotateWithDock || !VerticalDock) ? icon.Width : icon.Height) / 2.0; } + // animate adding new icon halfSize *= Math.Min (1, (DateTime.UtcNow - adi.AddTime).TotalMilliseconds / BaseAnimationTime.TotalMilliseconds); // center now represents our midpoint center.X += (int) Math.Floor (halfSize); val.StaticCenter = new PointD (center.X, center.Y); - if (ZoomPercent > 1) { - // get us some handy doubles with fancy names - double cursorPosition = cursor.X; - double centerPosition = center.X; - - // ZoomPercent is a number greater than 1. It should never be less than one. - // ZoomIn is a range of 0 to 1. we need a number that is 1 when ZoomIn is 0, - // and ZoomPercent when ZoomIn is 1. Then we treat this as - // if it were the ZoomPercent for the rest of the calculation - double zoomInPercent = 1 + (ZoomPercent - 1) * ZoomIn; - - // offset from the center of the true position, ranged between 0 and half of the zoom range - double offset = Math.Min (Math.Abs (cursorPosition - centerPosition), ZoomSize / 2); - - double offsetPercent; - if (ExternalDragActive) { - // Provide space for dropping between items - offset += ZoomedIconSize * (offset / (ZoomSize / 2.0)); - offsetPercent = Math.Min (1, offset / (ZoomSize / 2.0 + ZoomedIconSize)); - } else { - offsetPercent = offset / (ZoomSize / 2.0); - } - - if (offsetPercent > .99) - offsetPercent = 1; + // get us some handy doubles with fancy names + double cursorPosition = cursor.X; + double centerPosition = center.X; + + // ZoomPercent is a number greater than 1. It should never be less than one. + + // zoomInPercent is a range of 1 to ZoomPercent. + // We need a number that is 1 when ZoomIn is 0, and ZoomPercent when ZoomIn is 1. + // Then we treat this as if it were the ZoomPercent for the rest of the calculation. + double zoomInPercent = 1 + (ZoomPercent - 1) * ZoomIn; + + double zoomSize = ZoomEnabled ? ZoomedIconSize : 2.0 * IconSize; + + // offset from the center of the true position, ranged between 0 and the zoom size + double offset = Math.Min (Math.Abs (cursorPosition - centerPosition), zoomSize); + + double offsetPercent; + if (ExternalDragActive) { + // Provide space for dropping between items + offset += offset * zoomSize / IconSize; + offsetPercent = Math.Min (1, offset / (zoomSize + ZoomedIconSize)); + } else { + offsetPercent = offset / zoomSize; + } + + if (offsetPercent > .99) + offsetPercent = 1; + + // pull in our offset to make things less spaced out + // explaination since this is a bit tricky... + // we have three terms, basically offset = f(x) * h(x) * g(x) + // f(x) == offset identity + // h(x) == a number from 0 to DockPreference.ZoomPercent - 1. This is used to get the smooth "zoom in" effect. + // additionally serves to "curve" the offset based on the max zoom + // g(x) == a term used to move the ends of the zoom inward. Precalculated that the edges should be 66% of the current + // value. The center is 100%. (1 - offsetPercent) == 0,1 distance from center + // The .66 value comes from the area under the curve. Dont ask me to explain it too much because it's too clever for me. + + // for external drags with no zoom, we pretend there is actually a zoom of 200% + if (ExternalDragActive && ZoomPercent == 1) + offset *= ZoomIn / 2.0; + else + offset *= zoomInPercent - 1; + offset *= 1 - offsetPercent / 3; + + if (cursorPosition > centerPosition) + centerPosition -= offset; + else + centerPosition += offset; + + if (!adi.Zoom) { + val.Zoom = 1; + val.Center = new Cairo.PointD ((int) centerPosition, center.Y); + } else { // zoom is calculated as 1 through target_zoom (default 2). // The larger your offset, the smaller your zoom - // First we get the point on our curve that defines out current zoom + // First we get the point on our curve that defines our current zoom // offset is always going to fall on a point on the curve >= 0 zoom = 1 - Math.Pow (offsetPercent, 2); - // scale this to match out zoomInPercent + // scale this to match our zoomInPercent zoom = 1 + zoom * (zoomInPercent - 1); - // pull in our offset to make things less spaced out - // explaination since this is a bit tricky... - // we have three terms, basically offset = f(x) * h(x) * g(x) - // f(x) == offset identify - // h(x) == a number from 0 to DockPreference.ZoomPercent - 1. This is used to get the smooth "zoom in" effect. - // additionally serves to "curve" the offset based on the max zoom - // g(x) == a term used to move the ends of the zoom inward. Precalculated that the edges should be 66% of the current - // value. The center is 100%. (1 - offsetPercent) == 0,1 distance from center - // The .66 value comes from the area under the curve. Dont as me to explain it too much because it's too clever for me - offset = offset * (zoomInPercent - 1) * (1 - offsetPercent / 3); - + double zoomedCenterHeight = DockHeightBuffer + (iconSize * zoom / 2.0); - if (cursorPosition > centerPosition) { - centerPosition -= offset; - } else { - centerPosition += offset; - } + if (zoom == 1) + centerPosition = Math.Round (centerPosition); - if (!adi.Zoom) { - val.Zoom = 1; - val.Center = new Cairo.PointD ((int) centerPosition, center.Y); - } else { - double zoomedCenterHeight = DockHeightBuffer + (iconSize * zoom / 2.0); - - if (zoom == 1) - centerPosition = Math.Round (centerPosition); - - val.Center = new Cairo.PointD (centerPosition, zoomedCenterHeight); - val.Zoom = zoom; - } - } else { - val.Zoom = 1; - val.Center = new PointD (center.X, center.Y); + val.Center = new Cairo.PointD (centerPosition, zoomedCenterHeight); + val.Zoom = zoom; } // now we undo our transforms to the point - switch (Position) { - case DockPosition.Top: - ; - break; - case DockPosition.Left: + if (VerticalDock) { double tmpY = val.Center.Y; val.Center.Y = val.Center.X; - val.Center.X = width - (width - tmpY); + val.Center.X = tmpY; tmpY = val.StaticCenter.Y; val.StaticCenter.Y = val.StaticCenter.X; - val.StaticCenter.X = width - (width - tmpY); - break; + val.StaticCenter.X = tmpY; + } + + switch (Position) { case DockPosition.Right: - tmpY = val.Center.Y; - val.Center.Y = val.Center.X; - val.Center.X = width - (width - tmpY); val.Center.X = (height - 1) - val.Center.X; - - tmpY = val.StaticCenter.Y; - val.StaticCenter.Y = val.StaticCenter.X; - val.StaticCenter.X = width - (width - tmpY); val.StaticCenter.X = (height - 1) - val.StaticCenter.X; break; case DockPosition.Bottom: val.Center.Y = (height - 1) - val.Center.Y; val.StaticCenter.Y = (height - 1) - val.StaticCenter.Y; break; - } - - // split the icons into left/right aligned for panel mode - switch (Position) { default: - case DockPosition.Left: - case DockPosition.Top: - val = val.MoveRight (Position, rightAlign ? panel_item_offset : -panel_item_offset); - break; - case DockPosition.Right: - case DockPosition.Bottom: - val = val.MoveRight (Position, rightAlign ? -panel_item_offset : panel_item_offset); break; } - Gdk.Rectangle hoverArea = DrawRegionForItemValue (adi, val); + Gdk.Rectangle hoverArea = DrawRegionForItemValue (adi, val, true); if (VerticalDock) { hoverArea.Inflate ((int) (ZoomedDockHeight * .3), ItemWidthBuffer / 2); + hoverArea.Width += DockHeightBuffer; } else { hoverArea.Inflate (ItemWidthBuffer / 2, (int) (ZoomedDockHeight * .3)); + hoverArea.Height += DockHeightBuffer; + } + + switch (Position) { + case DockPosition.Right: + hoverArea.X -= DockHeightBuffer; + break; + case DockPosition.Bottom: + hoverArea.Y -= DockHeightBuffer; + break; + default: + break; } val.HoverArea = hoverArea; DrawValues[adi] = val; - if (hoverArea.Contains (localCursor) && !AutohideManager.Hidden) { - //keep the hovereditem in mind, but don't change it while rendering + // keep the hovereditem in mind, but don't change it while rendering + if (hoverArea.Contains (localCursor) && !AutohideManager.Hidden) next_hoveredItem = adi; - } if (update_screen_regions) { - Gdk.Rectangle region = hoverArea; - region.X += window_position.X; - region.Y += window_position.Y; - if (Menu.Visible || ConfigurationMode || Painter != null) + if (Menu.Visible || ConfigurationMode || Painter != null) { adi.SetScreenRegion (Screen, new Gdk.Rectangle (0, 0, 0, 0)); - else + } else { + Gdk.Rectangle region = hoverArea; + region.X += window_position.X; + region.Y += window_position.Y; adi.SetScreenRegion (Screen, region); + } } // move past midpoint to end of icon center.X += (int) Math.Ceiling (halfSize) + ItemWidthBuffer; + index++; } update_screen_regions = false; } + void UpdateScreenRegions () + { + GLib.Timeout.Add (10 + (uint) Math.Max (BaseAnimationTime.TotalMilliseconds, SlideTime.TotalMilliseconds), delegate { + update_screen_regions = true; + AnimatedDraw (); + return false; + }); + } + void UpdateMaxIconSize () { if (Painter != null) return; - MaxIconSize = Preferences.IconSize; - if (icon_size_timer > 0) GLib.Source.Remove (icon_size_timer); @@ -1842,11 +1884,12 @@ } } else if (MaxIconSize < Preferences.IconSize) { // Perhaps MaxIconSize is too small, lets find out! - while (dockWidth < maxWidth && MaxIconSize <= Preferences.IconSize) { + while (dockWidth < maxWidth && MaxIconSize < Preferences.IconSize) { MaxIconSize++; dockWidth = DockWidth; } - MaxIconSize--; + } else { + MaxIconSize = Preferences.IconSize; } AnimatedDraw (); icon_size_timer = 0; @@ -2073,9 +2116,9 @@ DrawValue val = DrawValues [adi]; DrawValue glowloc; if (preferences.FadeOnHide) { - glowloc = val.MoveIn (Position, IconSize * val.Zoom / 2 - DockHeight); + glowloc = val.MoveIn (Position, -urgent_glow_buffer.Height / 2 + DockHeightBuffer); } else { - glowloc = val.MoveIn (Position, IconSize * val.Zoom / 2); + glowloc = val.MoveIn (Position, -urgent_glow_buffer.Height / 2 + DockHeightBuffer + ZoomedDockHeight); } double opacity = 0.2 + (0.75 * (Math.Sin ((render_time - adi.StateSetTime (ItemState.Urgent)).TotalMilliseconds / PulseTime.TotalMilliseconds * 2 * Math.PI) + 1) / 2); @@ -2193,12 +2236,11 @@ double slideProgress = (render_time - item.StateSetTime (ItemState.Move)).TotalMilliseconds / SlideTime.TotalMilliseconds; double move = (item.Position - item.LastPosition) * (IconSize * val.Zoom + ItemWidthBuffer) - //draw the anitmation backwards cause item has already moved + //draw the animation backwards cause item has already moved * (1 - slideProgress); - if (Position == DockPosition.Top || Position == DockPosition.Left) { + if (Position == DockPosition.Top || Position == DockPosition.Left) move *= -1; - } val = val.MoveRight (Position, move); } @@ -2226,17 +2268,15 @@ } } - if (HoveredAcceptsDrop && HoveredItem == item && ExternalDragActive) { + if (HoveredAcceptsDrop && HoveredItem == item && ExternalDragActive) lighten += .4; - } else if (!ZoomEnabled && !Menu.Visible && HoveredItem == item && !ExternalDragActive && !InternalDragActive && !ConfigurationMode) { + else if (!ZoomEnabled && !Menu.Visible && HoveredItem == item && !ExternalDragActive && !InternalDragActive && !ConfigurationMode) lighten += .2; - } - if ((item.State & ItemState.Wait) != 0) { + if ((item.State & ItemState.Wait) != 0) darken += .5; - } else if (Menu.Visible && HoveredItem == item) { + else if (Menu.Visible && HoveredItem == item) darken += .4; - } if ((item.State & ItemState.Urgent) == ItemState.Urgent && (render_time - item.StateSetTime (ItemState.Urgent)) < BounceTime) { @@ -2252,23 +2292,22 @@ double renderZoom = 1, renderRotation = 0; - if (item.RotateWithDock) { + if (item.RotateWithDock) switch (Position) { case DockPosition.Top: renderRotation = Math.PI; break; case DockPosition.Left: - renderRotation = Math.PI * 1.5; + renderRotation = Math.PI * .5; break; case DockPosition.Right: - renderRotation = Math.PI * .5; + renderRotation = Math.PI * 1.5; break; default: case DockPosition.Bottom: renderRotation = 0; break; } - } if (item.Zoom && !(item.ScalableRendering && center.Zoom == 1)) { icon = item.IconSurface (surface, ZoomedIconSize, IconSize, VisibleDockHeight); @@ -2349,12 +2388,7 @@ DrawValue loc = val.MoveIn (Position, 1 - IconSize * val.Zoom / 2 - DockHeightBuffer); - DockySurface indicator; - if ((item.State & ItemState.Urgent) == ItemState.Urgent) { - indicator = urgent_indicator_buffer; - } else { - indicator = normal_indicator_buffer; - } + DockySurface indicator = (item.State & ItemState.Urgent) == ItemState.Urgent ? urgent_indicator_buffer : normal_indicator_buffer; if (item.Indicator == ActivityIndicator.Single || !Preferences.IndicateMultipleWindows) { indicator.ShowWithOptions (surface, loc.Center, 1, 0, 1); @@ -2564,7 +2598,7 @@ background.Dispose (); } - double tilt = .6; + double tilt = .6 - (double) DockHeightBuffer / (double) backgroundArea.Height; tilt *= 1 - PainterOpacity; double tiltanim = Math.Min (1, ((rendering ? render_time : DateTime.UtcNow) - threedimensional_change_time).TotalMilliseconds / BaseAnimationTime.TotalMilliseconds); tilt *= ThreeDimensional ? tiltanim : 1 - tiltanim; @@ -2623,6 +2657,9 @@ } cr.Paint (); + + (cr.Target as IDisposable).Dispose (); + rendering = false; //now after rendering we can set the new HoveredItem @@ -2722,10 +2759,13 @@ AutohideManager.DockHoveredChanged -= HandleDockHoveredChanged; Screen.SizeChanged -= ScreenSizeChanged; Docky.Controller.ThemeChanged -= DockyControllerThemeChanged; + Wnck.Screen.Default.WindowOpened -= HandleWindowOpened; // clear out our separators - foreach (AbstractDockItem adi in Items.Where (adi => adi is INonPersistedItem)) + foreach (AbstractDockItem adi in Items.Where (adi => adi is INonPersistedItem && adi != DockyItem)) { + DrawValues.Remove (adi); adi.Dispose (); + } ResetBuffers (); diff -Nru docky-2.0.4/Docky/Docky/Interface/HoverTextManager.cs docky-2.0.5/Docky/Docky/Interface/HoverTextManager.cs --- docky-2.0.4/Docky/Docky/Interface/HoverTextManager.cs 2010-05-25 13:38:51.944864182 +0200 +++ docky-2.0.5/Docky/Docky/Interface/HoverTextManager.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer +// Copyright (C) 2010 Robert Dyer, Rico Tzschichholz // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -32,16 +33,17 @@ namespace Docky.Interface { - public class HoverTextManager : IDisposable { public DockPosition Gravity { get; set; } - public bool Visible { get; private set; } + + public bool Visible { + get { return window != null && window.Visible; } + } Gtk.Window window; Gdk.Point currentPoint; DockySurface currentSurface; - uint timer; static DockySurface [] slices; DockySurface background_buffer; @@ -81,9 +83,8 @@ void DockyControllerThemeChanged (object sender, EventArgs e) { if (slices != null) { - foreach (DockySurface s in slices) { + foreach (DockySurface s in slices) s.Dispose (); - } slices = null; } ResetBackgroundBuffer (); @@ -102,7 +103,7 @@ currentPoint = point; if (surface == null) { - window.Hide (); + Hide (); return; } @@ -125,24 +126,13 @@ break; } - if (timer > 0) - GLib.Source.Remove (timer); - Gdk.Rectangle monitor_geo = window.Screen.GetMonitorGeometry (Monitor); center.X = Math.Max (monitor_geo.X, Math.Min (center.X, monitor_geo.X + monitor_geo.Width - surface.Width)); center.Y = Math.Max (monitor_geo.Y, Math.Min (center.Y, monitor_geo.Y + monitor_geo.Height - surface.Height)); - window.QueueDraw (); - window.Move (center.X, center.Y); - timer = GLib.Timeout.Add (100, delegate { - window.QueueDraw (); - window.Move (center.X, center.Y); - timer = 0; - return false; - }); - if (Visible) - window.Show (); + window.QueueDraw (); + window.Move (center.X, center.Y); } void HandleWindowExposeEvent (object o, ExposeEventArgs args) @@ -165,20 +155,20 @@ } cr.Paint (); + + (cr.Target as IDisposable).Dispose (); } } public void Show () { - Visible = true; - if (currentSurface != null) + if (currentSurface != null && window != null && !window.Visible) window.Show (); } public void Hide () { - Visible = false; - if (window != null) + if (Visible) window.Hide (); } @@ -235,9 +225,8 @@ window = null; } if (slices != null) { - foreach (DockySurface s in slices) { + foreach (DockySurface s in slices) s.Dispose (); - } slices = null; } ResetBackgroundBuffer (); diff -Nru docky-2.0.4/Docky/Docky/Menus/DockMenu.cs docky-2.0.5/Docky/Docky/Menus/DockMenu.cs --- docky-2.0.4/Docky/Docky/Menus/DockMenu.cs 2010-05-25 13:36:37.414864120 +0200 +++ docky-2.0.5/Docky/Docky/Menus/DockMenu.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer +// Copyright (C) 2010 Rico Tzschichholz // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -527,6 +528,8 @@ cr.Operator = Operator.Source; background_buffer.Internal.Show (cr, 0, 0); + + (cr.Target as IDisposable).Dispose (); } return base.OnExposeEvent (evnt); diff -Nru docky-2.0.4/Docky/Docky/Menus/MenuItemWidget.cs docky-2.0.5/Docky/Docky/Menus/MenuItemWidget.cs --- docky-2.0.4/Docky/Docky/Menus/MenuItemWidget.cs 2010-05-03 07:58:13.467077865 +0200 +++ docky-2.0.5/Docky/Docky/Menus/MenuItemWidget.cs 2010-06-26 15:49:37.676305000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -93,23 +94,27 @@ void CalcTextWidth () { - char accel; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - if (item.Mnemonic.HasValue) - layout.SetMarkupWithAccel (item.Text, '_', out accel); - else - layout.SetMarkup (item.Text); - layout.Width = Pango.Units.FromPixels (2 * MaxWidth); - layout.FontDescription = Style.FontDescription; - layout.Ellipsize = Pango.EllipsizeMode.End; - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (FontSize); - layout.FontDescription.Weight = Pango.Weight.Bold; - - Pango.Rectangle logical, ink; - layout.GetPixelExtents (out ink, out logical); - - TextWidth = Math.Min (MaxWidth, Math.Max (MinWidth, logical.Width)); - HasTooltip = TextWidth < logical.Width; + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { + char accel; + + if (item.Mnemonic.HasValue) + layout.SetMarkupWithAccel (item.Text, '_', out accel); + else + layout.SetMarkup (item.Text); + layout.Width = Pango.Units.FromPixels (2 * MaxWidth); + layout.FontDescription = Style.FontDescription; + layout.Ellipsize = Pango.EllipsizeMode.End; + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (FontSize); + layout.FontDescription.Weight = Pango.Weight.Bold; + + Pango.Rectangle logical, ink; + layout.GetPixelExtents (out ink, out logical); + + TextWidth = Math.Min (MaxWidth, Math.Max (MinWidth, logical.Width)); + HasTooltip = TextWidth < logical.Width; + + layout.Context.Dispose (); + } SetSize (); } @@ -189,7 +194,7 @@ DockySurface LoadIcon (Pixbuf icon, int size) { DockySurface surface; - using (Gdk.Pixbuf pixbuf = DockServices.Drawing.ARScale (size, size, icon)) { + using (Gdk.Pixbuf pixbuf = icon.Copy ().ARScale (size, size)) { surface = new DockySurface (pixbuf.Width, pixbuf.Height); Gdk.CairoHelper.SetSourcePixbuf (surface.Context, pixbuf, 0, 0); surface.Context.Paint (); @@ -200,9 +205,8 @@ DockySurface LoadIcon (string icon, int size) { bool monochrome = icon.StartsWith ("[monochrome]"); - if (monochrome) { + if (monochrome) icon = icon.Substring ("[monochrome]".Length); - } DockySurface surface = LoadIcon (DockServices.Drawing.LoadIcon (icon, size), size); @@ -265,28 +269,31 @@ } } - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - char accel; - if (item.Mnemonic.HasValue) - layout.SetMarkupWithAccel (item.Text, '_', out accel); - else - layout.SetMarkup (item.Text); - layout.Width = Pango.Units.FromPixels (TextWidth); - layout.FontDescription = Style.FontDescription; - layout.Ellipsize = Pango.EllipsizeMode.End; - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (FontSize); - layout.FontDescription.Weight = Pango.Weight.Bold; - - Pango.Rectangle logical, ink; - layout.GetPixelExtents (out ink, out logical); - - int offset = Padding; - if (MenuShowingIcons) - offset += MenuHeight + Padding; - cr.MoveTo (allocation.X + offset, allocation.Y + (allocation.Height - logical.Height) / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Color = TextColor.SetAlpha (item.Disabled ? 0.5 : 1); - cr.Fill (); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { + char accel; + if (item.Mnemonic.HasValue) + layout.SetMarkupWithAccel (item.Text, '_', out accel); + else + layout.SetMarkup (item.Text); + layout.Width = Pango.Units.FromPixels (TextWidth); + layout.FontDescription = Style.FontDescription; + layout.Ellipsize = Pango.EllipsizeMode.End; + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (FontSize); + layout.FontDescription.Weight = Pango.Weight.Bold; + + Pango.Rectangle logical, ink; + layout.GetPixelExtents (out ink, out logical); + + int offset = Padding; + if (MenuShowingIcons) + offset += MenuHeight + Padding; + cr.MoveTo (allocation.X + offset, allocation.Y + (allocation.Height - logical.Height) / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Color = TextColor.SetAlpha (item.Disabled ? 0.5 : 1); + cr.Fill (); + + layout.Context.Dispose (); + } } return true; @@ -305,7 +312,6 @@ item.IconChanged -= ItemIconChanged; item.TextChanged -= ItemTextChanged; item.DisabledChanged -= ItemDisabledChanged; - item.Dispose (); item = null; base.Dispose (); diff -Nru docky-2.0.4/Docky/Docky/Menus/SeparatorWidget.cs docky-2.0.5/Docky/Docky/Menus/SeparatorWidget.cs --- docky-2.0.4/Docky/Docky/Menus/SeparatorWidget.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky/Docky/Menus/SeparatorWidget.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -29,8 +30,6 @@ namespace Docky.Menus { - - public class SeparatorWidget : EventBox { string title; @@ -68,25 +67,27 @@ int xMiddle = x + width / 2; double yMiddle = Allocation.Y + Allocation.Height / 2.0; - if (!string.IsNullOrEmpty (title)) { - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - layout.SetText (title); - layout.Width = Pango.Units.FromPixels (Allocation.Width - Allocation.Height); - layout.FontDescription = Style.FontDescription; - layout.Ellipsize = Pango.EllipsizeMode.End; - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (8); - layout.FontDescription.Weight = Pango.Weight.Bold; - - Pango.Rectangle logical, ink; - layout.GetPixelExtents (out ink, out logical); - - cr.MoveTo (Allocation.X + 2, Allocation.Y + (Allocation.Height - logical.Height) / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Color = TextColor.SetAlpha (.6); - cr.Fill (); - - x += logical.Width + 5; - } + if (!string.IsNullOrEmpty (title)) + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { + layout.SetText (title); + layout.Width = Pango.Units.FromPixels (Allocation.Width - Allocation.Height); + layout.FontDescription = Style.FontDescription; + layout.Ellipsize = Pango.EllipsizeMode.End; + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (8); + layout.FontDescription.Weight = Pango.Weight.Bold; + + Pango.Rectangle logical, ink; + layout.GetPixelExtents (out ink, out logical); + + cr.MoveTo (Allocation.X + 2, Allocation.Y + (Allocation.Height - logical.Height) / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Color = TextColor.SetAlpha (.6); + cr.Fill (); + + x += logical.Width + 5; + + layout.Context.Dispose (); + } if (DrawLine) { cr.MoveTo (x, yMiddle); diff -Nru docky-2.0.4/Docky/docky.in docky-2.0.5/Docky/docky.in --- docky-2.0.4/Docky/docky.in 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky/docky.in 2010-06-26 15:47:36.543229000 +0200 @@ -12,7 +12,7 @@ fi if [ `pgrep -u $(id -u) -f Docky.exe | wc -l` -lt 1 ]; then - exec mono --debug "$DOCKY_EXE" "$@" + exec mono "$DOCKY_EXE" "$@" else echo "Docky appears to already be running. Exiting..." fi diff -Nru docky-2.0.4/Docky/Makefile.in docky-2.0.5/Docky/Makefile.in --- docky-2.0.4/Docky/Makefile.in 2010-05-31 08:00:10.764658671 +0200 +++ docky-2.0.5/Docky/Makefile.in 2010-07-01 19:05:31.705184001 +0200 @@ -203,6 +203,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.CairoHelper/Makefile.in docky-2.0.5/Docky.CairoHelper/Makefile.in --- docky-2.0.4/Docky.CairoHelper/Makefile.in 2010-05-31 08:00:10.365621874 +0200 +++ docky-2.0.5/Docky.CairoHelper/Makefile.in 2010-07-01 19:05:31.295184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.DBus/Makefile.in docky-2.0.5/Docky.DBus/Makefile.in --- docky-2.0.4/Docky.DBus/Makefile.in 2010-05-31 08:00:10.425621581 +0200 +++ docky-2.0.5/Docky.DBus/Makefile.in 2010-07-01 19:05:31.345184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.Items/Docky.Items/AbstractDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/AbstractDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/AbstractDockItem.cs 2010-05-25 19:03:05.156114234 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/AbstractDockItem.cs 2010-06-30 08:04:11.820310993 +0200 @@ -707,6 +707,9 @@ surface.Context.StrokePreserve (); surface.Context.Color = new Cairo.Color (1, 1, 1, 1); surface.Context.Fill (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } } @@ -753,6 +756,8 @@ Pango.CairoHelper.LayoutPath (cr, layout); cr.Color = isLight ? new Cairo.Color (0.1, 0.1, 0.1) : new Cairo.Color (1, 1, 1); cr.Fill (); + + layout.Context.Dispose (); } } @@ -896,6 +901,7 @@ AppDomain.CurrentDomain.ProcessExit -= HandleProcessExit; Gtk.IconTheme.Default.Changed -= HandleIconThemeChanged; ResetBuffers (); + RemoteMenuItems.Dispose (); } #endregion diff -Nru docky-2.0.4/Docky.Items/Docky.Items/ApplicationDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/ApplicationDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/ApplicationDockItem.cs 2010-05-25 13:12:03.948613925 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/ApplicationDockItem.cs 2010-07-01 18:34:52.165184001 +0200 @@ -81,6 +81,12 @@ Wnck.Screen.Default.WindowOpened += WnckScreenDefaultWindowOpened; Wnck.Screen.Default.WindowClosed += WnckScreenDefaultWindowClosed; Wnck.Screen.Default.ActiveWindowChanged += WnckScreenDefaultWindowChanged; + if (CurrentDesktopOnly) { + Wnck.Screen.Default.ViewportsChanged += WnckScreenDefaultViewportsChanged; + Wnck.Screen.Default.ActiveWorkspaceChanged += WnckScreenDefaultActiveWorkspaceChanged; + if (Wnck.Screen.Default.ActiveWindow != null) + Wnck.Screen.Default.ActiveWindow.GeometryChanged += HandleActiveWindowGeometryChangedChanged; + } } void HandleDesktopFileChanged (object sender, DesktopFileChangedEventArgs e) { @@ -117,22 +123,34 @@ return OwnedItem.Location; } + void HandleActiveWindowGeometryChangedChanged (object o, EventArgs args) + { + UpdateWindows (); + } + + void WnckScreenDefaultActiveWorkspaceChanged (object o, ActiveWorkspaceChangedArgs args) + { + UpdateWindows (); + } + + void WnckScreenDefaultViewportsChanged (object o, EventArgs args) + { + UpdateWindows (); + } + void WnckScreenDefaultWindowClosed (object o, WindowClosedArgs args) { UpdateWindows (); - OnPaintNeeded (); } void WnckScreenDefaultWindowOpened (object o, WindowOpenedArgs args) { UpdateWindows (); - OnPaintNeeded (); } void WnckScreenDefaultWindowChanged (object o, ActiveWindowChangedArgs args) { UpdateWindows (); - OnPaintNeeded (); } void UpdateWindows () @@ -146,7 +164,6 @@ public void RecollectWindows () { UpdateWindows (); - OnPaintNeeded (); } protected override MenuList OnGetMenuItems () @@ -206,6 +223,13 @@ Wnck.Screen.Default.WindowOpened -= WnckScreenDefaultWindowOpened; Wnck.Screen.Default.WindowClosed -= WnckScreenDefaultWindowClosed; Wnck.Screen.Default.ActiveWindowChanged -= WnckScreenDefaultWindowChanged; + if (CurrentDesktopOnly) { + Wnck.Screen.Default.ViewportsChanged -= WnckScreenDefaultViewportsChanged; + Wnck.Screen.Default.ActiveWorkspaceChanged -= WnckScreenDefaultActiveWorkspaceChanged; + if (Wnck.Screen.Default.ActiveWindow != null) + Wnck.Screen.Default.ActiveWindow.GeometryChanged -= HandleActiveWindowGeometryChangedChanged; + } + base.Dispose (); } } diff -Nru docky-2.0.4/Docky.Items/Docky.Items/ColoredIconDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/ColoredIconDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/ColoredIconDockItem.cs 2010-03-31 17:40:13.386291877 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/ColoredIconDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -60,7 +60,7 @@ protected override Gdk.Pixbuf ProcessPixbuf (Gdk.Pixbuf pbuf) { - return DockServices.Drawing.AddHueShift (pbuf, HueShift >= 0 ? HueShift : -HueShift); + return pbuf.AddHueShift (HueShift >= 0 ? HueShift : -HueShift); } protected override MenuList OnGetMenuItems () diff -Nru docky-2.0.4/Docky.Items/Docky.Items/FileApplicationProvider.cs docky-2.0.5/Docky.Items/Docky.Items/FileApplicationProvider.cs --- docky-2.0.4/Docky.Items/Docky.Items/FileApplicationProvider.cs 2010-05-26 11:04:15.356739321 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/FileApplicationProvider.cs 2010-06-26 15:49:17.956305000 +0200 @@ -226,11 +226,11 @@ desktopFile = WindowMatcher.Default.DesktopFileForWindow (window); - if (!string.IsNullOrEmpty (desktopFile)) { + if (!string.IsNullOrEmpty (desktopFile) && desktopFile.EndsWith (".desktop")) { //This fixes WindowMatching for OpenOffice which is a bit slow setting up its window title //Check if a existing ApplicationDockItem already uses this DesktopItem ApplicationDockItem appdi; - if ((appdi = transient_items + if ((appdi = InternalItems .Where (adi => (adi is ApplicationDockItem && (adi as ApplicationDockItem).OwnedItem.Location == desktopFile)) .Cast () .FirstOrDefault ()) != null) { @@ -240,7 +240,11 @@ continue; } - item = ApplicationDockItem.NewFromUri (new Uri (desktopFile).AbsoluteUri); + try { + item = ApplicationDockItem.NewFromUri (new Uri (desktopFile).AbsoluteUri); + } catch (System.UriFormatException e) { + item = new WindowDockItem (window); + } } else { item = new WindowDockItem (window); } @@ -343,9 +347,13 @@ public void PinToDock (ApplicationDockItem item) { + Uri uri = new Uri (item.OwnedItem.Location); + if (items.ContainsKey (uri.AbsoluteUri)) + return; + item.WindowsChanged -= HandleTransientWindowsChanged; transient_items.Remove (item); - items.Add (new Uri (item.OwnedItem.Location).AbsoluteUri, item); + items.Add (uri.AbsoluteUri, item); OnItemsChanged (null, null); } diff -Nru docky-2.0.4/Docky.Items/Docky.Items/FileDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/FileDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/FileDockItem.cs 2010-05-25 19:03:05.156114234 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/FileDockItem.cs 2010-07-01 18:28:55.205183998 +0200 @@ -69,6 +69,7 @@ } public File OwnedFile { get; private set; } + Action OnOwnedFileMount; public override string DropText { get { return string.Format (Catalog.GetString ("Drop to move to {0}"), HoverText); } @@ -79,11 +80,14 @@ this.uri = uri; OwnedFile = FileFactory.NewForUri (uri); - // update this file on successful mount - OwnedFile.AddMountAction (() => { + OnOwnedFileMount = new Action (() => { UpdateInfo (); OnPaintNeeded (); }); + + // update this file on successful mount + OwnedFile.AddMountAction (OnOwnedFileMount); + UpdateInfo (); } @@ -127,6 +131,7 @@ int [] emblemPositions = { 2, 1, 0, 3}; int i=0; emblems.Reverse () + .Where (e => !string.IsNullOrEmpty (e)) .Take (4) .ToList () .ForEach (e => { @@ -176,36 +181,46 @@ protected override bool OnAcceptDrop (IEnumerable uris) { - Notification note = null; + // verify there is enough space to move/copy everything + long fileSize = 0; + foreach (File file in uris.Select (uri => FileFactory.NewForUri (uri))) { - try { + if (!file.Exists) + continue; + fileSize += file.GetSize (); + } + + if ((ulong) fileSize > OwnedFile.QueryInfo (FilesystemFreeKey)) { + Docky.Services.Log.Notify (Catalog.GetString ("Error performing drop action"), Gtk.Stock.DialogError, Catalog.GetString ("Not enough free space on destination.")); + return true; + } + + DockServices.System.RunOnThread (()=> { + // do the move/copy + string ownedFSID = OwnedFile.QueryInfo (FilesystemIDKey); + Notification note = null; + bool performing = true; + + foreach (File file in uris.Select (uri => FileFactory.NewForUri (uri))) { if (!file.Exists) continue; - // gather some information first - long fileSize = file.GetSize (); - ulong freeSpace = OwnedFile.QueryInfo (FilesystemFreeKey); - if ((ulong) fileSize > freeSpace) - throw new Exception (Catalog.GetString ("Not enough free space on destination.")); + long cur = 0, tot = 10; - string ownedFSID = OwnedFile.QueryInfo (FilesystemIDKey); - string destFSID = file.QueryInfo (FilesystemIDKey); - - string nameAfterMove = file.NewFileName (OwnedFile); - - DockServices.System.RunOnThread (()=> { - - bool performing = true; - long cur = 0, tot = 10; - + if (note == null) { note = Docky.Services.Log.Notify ("", file.Icon (), "{0}% " + Catalog.GetString ("Complete") + "...", cur / tot); + GLib.Timeout.Add (250, () => { - note.Body = string.Format ("{0}% ", string.Format ("{0:00.0}", ((float) Math.Min (cur, tot) / tot) * 100)) + Catalog.GetString ("Complete") + "..."; + note.Body = string.Format ("{0:00.0}% ", ((float) Math.Min (cur, tot) / tot) * 100) + Catalog.GetString ("Complete") + "..."; return performing; }); - + } + + string nameAfterMove = file.NewFileName (OwnedFile); + + try { // check the filesystem IDs, if they are the same, we move, otherwise we copy. - if (ownedFSID == destFSID) { + if (ownedFSID == file.QueryInfo (FilesystemIDKey)) { note.Summary = Catalog.GetString ("Moving") + string.Format (" {0}...", file.Basename); file.Move (OwnedFile.GetChild (nameAfterMove), FileCopyFlags.NofollowSymlinks | FileCopyFlags.AllMetadata | FileCopyFlags.NoFallbackForMove, null, (current, total) => { cur = current; @@ -218,21 +233,19 @@ tot = total; }); } - - performing = false; - note.Body = string.Format ("100% {0}.", Catalog.GetString ("Complete")); - }); - // until we use a new version of GTK# which supports getting the GLib.Error code - // this is about the best we can do. - } catch (Exception e) { - Docky.Services.Log.Notify (Catalog.GetString ("Error performing drop action"), Gtk.Stock.DialogError, e.Message); - Log.Error ("{0}: {1}", Catalog.GetString ("Error performing drop action"), e.Message); - Log.Debug (e.StackTrace); + } catch (Exception e) { + // until we use a new version of GTK# which supports getting the GLib.Error code + // this is about the best we can do. + Docky.Services.Log.Notify (Catalog.GetString ("Error performing drop action"), Gtk.Stock.DialogError, e.Message); + Log.Error ("Error performing drop action: " + e.Message); + Log.Debug ("Error moving file '" + file.Path + "' to '" + OwnedFile.GetChild (nameAfterMove) + "'"); + Log.Debug (e.StackTrace); + } - if (note != null) - note.Close (); - } - } + performing = false; + note.Body = string.Format ("100% {0}.", Catalog.GetString ("Complete")); + } + }); return true; } @@ -262,5 +275,13 @@ { DockServices.System.Open (OwnedFile.Parent); } + + public override void Dispose () + { + OwnedFile.RemoveAction (OnOwnedFileMount); + OwnedFile = null; + + base.Dispose (); + } } } diff -Nru docky-2.0.4/Docky.Items/Docky.Items/IconDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/IconDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/IconDockItem.cs 2010-05-03 07:58:26.415827955 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/IconDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer, Chris Szikszoy +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -42,21 +43,16 @@ public string Icon { get { return string.IsNullOrEmpty (remote_icon) ? icon : remote_icon; } protected set { - // if we set this, clear the forced pixbuf - if (forced_pixbuf != null) - forced_pixbuf = null; if (icon == value) return; icon = value; - using (Gtk.IconInfo info = Gtk.IconTheme.Default.LookupIcon (icon, 48, Gtk.IconLookupFlags.ForceSvg)) { - if (info != null && info.Filename != null && info.Filename.EndsWith (".svg")) { - icon = info.Filename; - ScalableRendering = true; - } else { - ScalableRendering = false; - } - } + // if we set this, clear the forced pixbuf + ForcePixbuf = null; + + if (icon != null) + using (Gtk.IconInfo info = Gtk.IconTheme.Default.LookupIcon (icon, 48, Gtk.IconLookupFlags.ForceSvg)) + ScalableRendering = info != null && info.Filename != null && info.Filename.EndsWith (".svg"); OnIconUpdated (); QueueRedraw (); @@ -69,6 +65,8 @@ set { if (forced_pixbuf == value) return; + if (forced_pixbuf != null) + forced_pixbuf.Dispose (); forced_pixbuf = value; QueueRedraw (); } @@ -83,7 +81,7 @@ protected void SetIconFromPixbuf (Pixbuf pbuf) { - forced_pixbuf = pbuf; + ForcePixbuf = pbuf.Copy (); } public IconDockItem () @@ -95,8 +93,8 @@ public void AddEmblem (IconEmblem emblem) { // remove current emblems at this position - if (Emblems.Any (e => e.Position == emblem.Position)) - Emblems.RemoveAll (e => e.Position == emblem.Position); + foreach (IconEmblem e in Emblems.Where (e => e.Position == emblem.Position).ToList ()) + RemoveEmblem (e); // add the new emblem Emblems.Add (emblem); emblem.Changed += HandleEmblemChanged; @@ -113,6 +111,7 @@ if (Emblems.Contains (emblem)) { emblem.Changed -= HandleEmblemChanged; Emblems.Remove (emblem); + emblem.Dispose (); QueueRedraw (); } } @@ -129,10 +128,12 @@ { Gdk.Pixbuf pbuf; - if (forced_pixbuf == null) + if (ForcePixbuf == null) { pbuf = DockServices.Drawing.LoadIcon (Icon, surface.Width, surface.Height); - else - pbuf = DockServices.Drawing.ARScale (surface.Width, surface.Height, forced_pixbuf.Copy ()); + } else { + pbuf = ForcePixbuf.Copy (); + pbuf = pbuf.ARScale (surface.Width, surface.Height); + } pbuf = ProcessPixbuf (pbuf); @@ -143,30 +144,29 @@ surface.Context.Paint (); // draw the emblems - foreach (IconEmblem emblem in Emblems) { - Pixbuf p = emblem.GetPixbuf (surface.Width, surface.Height); - int x, y; - switch (emblem.Position) { - case 1: - x = surface.Width - p.Width; - y = 0; - break; - case 2: - x = surface.Width - p.Width; - y = surface.Height - p.Height; - break; - case 3: - x = 0; - y = surface.Height - p.Height; - break; - default: - x = y = 0; - break; + foreach (IconEmblem emblem in Emblems) + using (Pixbuf p = emblem.GetPixbuf (surface.Width, surface.Height)) { + int x, y; + switch (emblem.Position) { + case 1: + x = surface.Width - p.Width; + y = 0; + break; + case 2: + x = surface.Width - p.Width; + y = surface.Height - p.Height; + break; + case 3: + x = 0; + y = surface.Height - p.Height; + break; + default: + x = y = 0; + break; + } + Gdk.CairoHelper.SetSourcePixbuf (surface.Context, p, x, y); + surface.Context.Paint (); } - Gdk.CairoHelper.SetSourcePixbuf (surface.Context, p, x, y); - surface.Context.Paint (); - p.Dispose (); - } pbuf.Dispose (); diff -Nru docky-2.0.4/Docky.Items/Docky.Items/IconEmblem.cs docky-2.0.5/Docky.Items/Docky.Items/IconEmblem.cs --- docky-2.0.4/Docky.Items/Docky.Items/IconEmblem.cs 2010-05-03 07:58:13.257077995 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/IconEmblem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,5 @@ // -// Copyright (C) 2010 Chris Szikszoy +// Copyright (C) 2010 Chris Szikszoy, Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -23,22 +23,19 @@ namespace Docky.Items { - public class IconEmblem { - public event EventHandler Changed; string icon; public string Icon { get { return icon; } protected set { - // if we set this, clear the forced pixbuf - if (forced_pixbuf != null) - forced_pixbuf = null; if (icon == value) return; icon = value; + // if we set this, clear the forced pixbuf + ForcePixbuf = null; OnChanged (); } } @@ -49,6 +46,8 @@ set { if (forced_pixbuf == value) return; + if (forced_pixbuf != null) + forced_pixbuf.Dispose (); forced_pixbuf = value; OnChanged (); } @@ -84,7 +83,7 @@ { Position = position; IconSize = size; - ForcePixbuf = icon; + ForcePixbuf = icon.Copy (); } public IconEmblem (int position, GLib.Icon icon, int size) @@ -105,11 +104,8 @@ if (p == null) p = DockServices.Drawing.LoadIcon (Icon, IconSize); // constrain the icon to PercentOfParent if needed, - if (p.Width > (int) (parentWidth * PercentOfParent) || - p.Height > (int) (parentHeight * PercentOfParent)) - p = DockServices.Drawing.ARScale ((int) (parentWidth * PercentOfParent), - (int) (parentHeight * PercentOfParent), - p); + if (p.Width > (int) (parentWidth * PercentOfParent) || p.Height > (int) (parentHeight * PercentOfParent)) + p = p.ARScale ((int) (parentWidth * PercentOfParent), (int) (parentHeight * PercentOfParent)); return p; } diff -Nru docky-2.0.4/Docky.Items/Docky.Items/WnckDockItem.cs docky-2.0.5/Docky.Items/Docky.Items/WnckDockItem.cs --- docky-2.0.4/Docky.Items/Docky.Items/WnckDockItem.cs 2010-05-25 17:05:21.604866094 +0200 +++ docky-2.0.5/Docky.Items/Docky.Items/WnckDockItem.cs 2010-07-01 18:34:16.015184003 +0200 @@ -50,10 +50,15 @@ public IEnumerable Windows { get { return windows; } protected set { - UnregisterWindows (windows.Where (w => !value.Contains (w))); - RegisterWindows (value.Where (w => !windows.Contains (w))); + IEnumerable tmp = value.Where (w => w.WindowType != Wnck.WindowType.Desktop && + w.WindowType != Wnck.WindowType.Dock && + w.WindowType != Wnck.WindowType.Splashscreen && + w.WindowType != Wnck.WindowType.Menu); - windows = value.ToArray (); + UnregisterWindows (windows.Where (w => !tmp.Contains (w))); + RegisterWindows (tmp.Where (w => !windows.Contains (w))); + + windows = tmp.ToArray (); SetIndicator (); SetState (); @@ -154,6 +159,8 @@ } else { Indicator = ActivityIndicator.None; } + + OnPaintNeeded (); } void SetState () @@ -168,6 +175,8 @@ } State = state; + + OnPaintNeeded (); } protected override void OnScrolled (Gdk.ScrollDirection direction, Gdk.ModifierType mod) @@ -281,6 +290,7 @@ public override void Dispose () { Wnck.Screen.Default.ActiveWindowChanged -= WnckScreenDefaultActiveWindowChanged; + Wnck.Screen.Default.WindowClosed -= WnckScreenDefaultWindowClosed; UnregisterWindows (Windows); base.Dispose (); diff -Nru docky-2.0.4/Docky.Items/Docky.Menus/MenuItem.cs docky-2.0.5/Docky.Items/Docky.Menus/MenuItem.cs --- docky-2.0.4/Docky.Items/Docky.Menus/MenuItem.cs 2010-05-03 07:58:13.296741603 +0200 +++ docky-2.0.5/Docky.Items/Docky.Menus/MenuItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -38,7 +38,8 @@ static bool defaultShowIcons; static MenuItem () { - defaultShowIcons = (bool) new GConf.Client ().Get ("/desktop/gnome/interface/menus_have_icons"); + object o = new GConf.Client ().Get ("/desktop/gnome/interface/menus_have_icons"); + defaultShowIcons = o != null && o is bool && (bool) o; } bool? show_icons; diff -Nru docky-2.0.4/Docky.Items/Docky.Painters/PagingDockPainter.cs docky-2.0.5/Docky.Items/Docky.Painters/PagingDockPainter.cs --- docky-2.0.4/Docky.Items/Docky.Painters/PagingDockPainter.cs 2010-05-03 07:58:13.315826960 +0200 +++ docky-2.0.5/Docky.Items/Docky.Painters/PagingDockPainter.cs 2010-06-26 15:47:36.543229000 +0200 @@ -276,6 +276,7 @@ public override void Dispose () { ResetBuffers (); + ResetButtons (); base.Dispose (); } } diff -Nru docky-2.0.4/Docky.Items/Makefile.in docky-2.0.5/Docky.Items/Makefile.in --- docky-2.0.4/Docky.Items/Makefile.in 2010-05-31 08:00:10.485621671 +0200 +++ docky-2.0.5/Docky.Items/Makefile.in 2010-07-01 19:05:31.415184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.Services/AssemblyInfo.cs docky-2.0.5/Docky.Services/AssemblyInfo.cs --- docky-2.0.4/Docky.Services/AssemblyInfo.cs 2010-05-31 08:00:18.374371776 +0200 +++ docky-2.0.5/Docky.Services/AssemblyInfo.cs 2010-07-01 19:05:38.465184002 +0200 @@ -50,8 +50,8 @@ { internal static class AssemblyInfo { - public const string DisplayVersion = "2.0.4"; - public const string VersionDetails = "bzr docky-2.0 r1266"; + public const string DisplayVersion = "2.0.5"; + public const string VersionDetails = "bzr docky-2.0 r1336"; public const string LocaleDirectory = "/usr/share/locale"; public const string DataDirectory = "/usr/share"; } diff -Nru docky-2.0.4/Docky.Services/Docky.Services/DrawingService.cs docky-2.0.5/Docky.Services/Docky.Services/DrawingService.cs --- docky-2.0.4/Docky.Services/Docky.Services/DrawingService.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky.Services/Docky.Services/DrawingService.cs 2010-06-26 15:47:36.543229000 +0200 @@ -70,54 +70,6 @@ // http://developer.gimp.org/api/2.0/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf--bits-per-sample /// - /// Applies a color transformation to each pixel in a pixbuf. - /// - /// - /// A - /// - /// - /// A - /// - /// - /// A - /// - public Gdk.Pixbuf PixelColorTransform (Gdk.Pixbuf source, Func colorTransform) - { - try { - int offset = (source.HasAlpha) ? 4 : 3; - Gdk.Pixbuf transform = source.Copy (); - unsafe { - double r, g, b; - byte* pixels = (byte*) transform.Pixels; - for (int i = 0; i < transform.Height * transform.Width; i++) { - r = (double) pixels[0]; - g = (double) pixels[1]; - b = (double) pixels[2]; - - Cairo.Color color = new Cairo.Color (r / byte.MaxValue, - g / byte.MaxValue, - b / byte.MaxValue); - - color = colorTransform.Invoke (color); - - pixels[0] = (byte) (color.R * byte.MaxValue); - pixels[1] = (byte) (color.G * byte.MaxValue); - pixels[2] = (byte) (color.B * byte.MaxValue); - - pixels += offset; - } - } - source = transform.Copy (); - transform.Dispose (); - } catch (Exception e) { - Log.Error ("Error transforming pixbuf: {0}", e.Message); - Log.Debug (e.StackTrace); - } - - return source; - } - - /// /// Determines whether or not the icon is light or dark. /// /// @@ -152,40 +104,8 @@ return light > 0; } - #endregion - - /// - /// Returns a monochrome version of the supplied pixbuf. - /// - /// - /// A - /// - /// - /// A - /// - public Gdk.Pixbuf MonochromePixbuf (Gdk.Pixbuf source) - { - return PixelColorTransform (source, (c) => c.DarkenBySaturation (0.5).SetSaturation (0)); - } - /// - /// Adds a hue shift to the supplpied pixbuf. - /// - /// - /// A - /// - /// - /// A - /// - /// - /// A - /// - public Gdk.Pixbuf AddHueShift (Gdk.Pixbuf source, double shift) - { - if (shift != 0) - return PixelColorTransform (source, (c) => c.AddHue (shift)); - return source; - } + #endregion /// /// Load an icon specifying the width and height. @@ -252,7 +172,7 @@ if (pixbuf != null) { if (width != -1 && height != -1 && (width != pixbuf.Width || height != pixbuf.Height)) - pixbuf = ARScale (width, height, pixbuf); + pixbuf = pixbuf.ARScale (width, height); return pixbuf; } @@ -293,40 +213,6 @@ } /// - /// Scale a pixbuf to the desired width or height maintaining the aspect ratio of the supplied pixbuf. - /// Note that due to maintaining the aspect ratio, the returned pixbuf may not have the exact width AND height as is specified. - /// Though it is guaranteed that one of these measurements will be correct. - /// - /// - /// A - /// - /// - /// A - /// - /// - /// A - /// - /// - /// A - /// - public Pixbuf ARScale (int width, int height, Pixbuf pixbuf) - { - double xScale = (double) width / (double) pixbuf.Width; - double yScale = (double) height / (double) pixbuf.Height; - double scale = Math.Min (xScale, yScale); - - if (scale == 1) return pixbuf; - - Pixbuf temp = pixbuf; - pixbuf = temp.ScaleSimple ((int) (temp.Width * scale), - (int) (temp.Height * scale), - InterpType.Hyper); - temp.Dispose (); - - return pixbuf; - } - - /// /// Returns the string name of the supplied icon. /// /// @@ -419,12 +305,10 @@ if (asm == null) throw new ArgumentNullException ("Could not find assembly '{0}'.", assemblyName); - pixbuf = new Pixbuf (asm, resource); - - // now scale the pixbuf but keep the aspect ratio - if (width > 0 && height > 0) - pixbuf = ARScale (width, height, pixbuf); - + if (width <= 0 || height <= 0) + pixbuf = new Pixbuf (asm, resource); + else + pixbuf = new Pixbuf (asm, resource, width, height); } catch (Exception e) { Log.Warn ("Failed to load icon resource {0} from assembly {1}: {2}", resource, assemblyName, e.Message); diff -Nru docky-2.0.4/Docky.Services/Docky.Services/Extensions/GdkPixbufExtension.cs docky-2.0.5/Docky.Services/Docky.Services/Extensions/GdkPixbufExtension.cs --- docky-2.0.4/Docky.Services/Docky.Services/Extensions/GdkPixbufExtension.cs 1970-01-01 01:00:00.000000000 +0100 +++ docky-2.0.5/Docky.Services/Docky.Services/Extensions/GdkPixbufExtension.cs 2010-06-26 15:47:36.543229000 +0200 @@ -0,0 +1,131 @@ +// +// Copyright (C) 2010 Robert Dyer +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +using System; + +using Cairo; +using Gdk; + +namespace Docky.Services +{ + public static class GdkPixbufExtension + { + // these methods all assume that the BitsPerSample is 8 (byte). Pixbuf documentation + // states that values from 1-16 are allowed, but currently only 8 bit samples are supported. + // http://developer.gimp.org/api/2.0/gdk-pixbuf/gdk-pixbuf-gdk-pixbuf.html#GdkPixbuf--bits-per-sample + + /// + /// Applies a color transformation to each pixel in a pixbuf. + /// + /// + /// A + /// + /// + /// A reference to the input Pixbuf (the 'this' reference). + /// + public static Pixbuf PixelColorTransform (this Pixbuf source, Func colorTransform) + { + try { + int offset = (source.HasAlpha) ? 4 : 3; + unsafe { + double r, g, b; + byte* pixels = (byte*) source.Pixels; + for (int i = 0; i < source.Height * source.Width; i++) { + r = (double) pixels[0]; + g = (double) pixels[1]; + b = (double) pixels[2]; + + Cairo.Color color = new Cairo.Color (r / byte.MaxValue, + g / byte.MaxValue, + b / byte.MaxValue); + + color = colorTransform.Invoke (color); + + pixels[0] = (byte) (color.R * byte.MaxValue); + pixels[1] = (byte) (color.G * byte.MaxValue); + pixels[2] = (byte) (color.B * byte.MaxValue); + + pixels += offset; + } + } + } catch (Exception e) { + Log.Error ("Error transforming pixbuf: {0}", e.Message); + Log.Debug (e.StackTrace); + } + return source; + } + + /// + /// Returns a monochrome version of the supplied pixbuf. + /// + /// + /// A reference to the input Pixbuf (the 'this' reference). + /// + public static Pixbuf MonochromePixbuf (this Pixbuf source) + { + return source.PixelColorTransform ((c) => c.DarkenBySaturation (0.5).SetSaturation (0)); + } + + /// + /// Adds a hue shift to the supplpied pixbuf. + /// + /// + /// A + /// + /// + /// A reference to the input Pixbuf (the 'this' reference). + /// + public static Pixbuf AddHueShift (this Pixbuf source, double shift) + { + if (shift != 0) + source.PixelColorTransform ((c) => c.AddHue (shift)); + return source; + } + + /// + /// Scale a pixbuf to the desired width or height maintaining the aspect ratio of the supplied pixbuf. + /// Note that due to maintaining the aspect ratio, the returned pixbuf may not have the exact width AND height as is specified. + /// Though it is guaranteed that one of these measurements will be correct. + /// + /// + /// A + /// + /// + /// A + /// + /// + /// A + /// + /// + /// + public static Pixbuf ARScale (this Pixbuf source, int width, int height) + { + double xScale = (double) width / (double) source.Width; + double yScale = (double) height / (double) source.Height; + double scale = Math.Min (xScale, yScale); + + if (scale == 1) + return source; + + Pixbuf tmp = source.ScaleSimple ((int) (source.Width * scale), + (int) (source.Height * scale), + InterpType.Hyper); + source.Dispose (); + + return tmp; + } + } +} diff -Nru docky-2.0.4/Docky.Services/Docky.Services/Extensions/GLibFileExtension.cs docky-2.0.5/Docky.Services/Docky.Services/Extensions/GLibFileExtension.cs --- docky-2.0.4/Docky.Services/Docky.Services/Extensions/GLibFileExtension.cs 2010-04-11 08:05:20.946606426 +0200 +++ docky-2.0.5/Docky.Services/Docky.Services/Extensions/GLibFileExtension.cs 2010-06-26 15:47:36.543229000 +0200 @@ -199,6 +199,8 @@ if (info.GetAttributeBoolean ("access::can-delete")) child.Delete (null); + + info.Dispose (); } if (info != null) diff -Nru docky-2.0.4/Docky.Services/Docky.Services/Helper.cs docky-2.0.5/Docky.Services/Docky.Services/Helper.cs --- docky-2.0.4/Docky.Services/Docky.Services/Helper.cs 2010-05-25 13:22:35.008613981 +0200 +++ docky-2.0.5/Docky.Services/Docky.Services/Helper.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Chris Szikszoy, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -185,6 +186,8 @@ public void Dispose () { Stop (); + if (Data != null) + Data.Dispose (); } } } diff -Nru docky-2.0.4/Docky.Services/Docky.Services/HelperMetadata.cs docky-2.0.5/Docky.Services/Docky.Services/HelperMetadata.cs --- docky-2.0.4/Docky.Services/Docky.Services/HelperMetadata.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky.Services/Docky.Services/HelperMetadata.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Chris Szikszoy, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -66,7 +67,7 @@ } else if (line.StartsWith (DescTag)) { Description = data; } else if (line.StartsWith (IconTag)) { - if (data.StartsWith ("./")) { + if (data.StartsWith ("./") && data.Length > 2) { IconFile = file.Parent.GetChild (data.Substring (2)); if (IconFile.Exists) Icon = DockServices.Drawing.LoadIcon (IconFile.Path + ";;extension"); @@ -78,5 +79,11 @@ } OnDataReady (); } + + public void Dispose () + { + if (Icon != null) + Icon.Dispose (); + } } } diff -Nru docky-2.0.4/Docky.Services/Docky.Services/HelperService.cs docky-2.0.5/Docky.Services/Docky.Services/HelperService.cs --- docky-2.0.4/Docky.Services/Docky.Services/HelperService.cs 2010-05-25 13:12:33.844863402 +0200 +++ docky-2.0.5/Docky.Services/Docky.Services/HelperService.cs 2010-06-26 15:47:36.543229000 +0200 @@ -27,19 +27,6 @@ namespace Docky.Services { - class HelperComparer : IEqualityComparer - { - public bool Equals (Helper x, Helper y) - { - return x.File.Basename == y.File.Basename; - } - - public int GetHashCode (Helper h) - { - return h.File.Basename.GetHashCode (); - } - } - public class HelperService { public static File UserScriptsDir = DockServices.Paths.UserDataFolder.GetChild ("helpers"); @@ -69,19 +56,45 @@ static IPreferences prefs = DockServices.Preferences.Get (); - public List Helpers { get; private set; } + List helpers; + public List Helpers { + get { return helpers; } + private set { + IEnumerable added = value.Where (h => !helpers.Contains (h)); + IEnumerable removed = helpers.Where (h => !value.Contains (h)); + + if (!added.Any () && !removed.Any ()) + return; + + foreach (Helper h in removed) { + Log.Info ("Helper removed: {0}", h.File.Path); + h.HelperStatusChanged -= OnHelperStatusChanged; + h.Dispose (); + } + + foreach (Helper h in added) { + Log.Info ("Helper added: {0}", h.File.Path); + h.HelperStatusChanged += OnHelperStatusChanged; + } + + helpers = value; + + OnHelpersChanged (added, removed); + } + } + + List monitors = new List (); public HelperService () { - Helpers = new List (); + helpers = new List (); // set up the file monitors to watch our script directories foreach (File dir in HelperDirs) { FileMonitor mon = dir.Monitor (0, null); + monitors.Add (mon); mon.RateLimit = 5000; - mon.Changed += delegate(object o, ChangedArgs args) { - UpdateHelpers (); - }; + mon.Changed += HandleMonitorChanged; } GLib.Timeout.Add (2000, delegate { @@ -89,37 +102,42 @@ return false; }); } + + void HandleMonitorChanged (object o, ChangedArgs args) + { + if (args.EventType == FileMonitorEvent.Created || args.EventType == FileMonitorEvent.Deleted) + UpdateHelpers (); + } void UpdateHelpers () { - List old_helpers = Helpers.ToList (); - Helpers = Helpers.Where (h => h.File.Exists).ToList (); + List helpers = Helpers.ToList (); + + //Remove deleted helpers + helpers.RemoveAll (h => !h.File.Exists); - Helpers = HelperDirs + //Find new helper files and filter them: + // get all files in helpers directories + // remove all files which already have a helper and don't overrule their files + // remove all files which are overruled by other files + List new_files = HelperDirs .SelectMany (d => d.GetFiles ("")) .Where (file => !file.Basename.EndsWith ("~")) - .Select (hf => LookupHelper (hf)) - .Distinct (new HelperComparer ()) .ToList (); + new_files.RemoveAll (file => helpers.Exists (h => h.File.Path == file.Path || (h.File.Basename == file.Basename + && h.File.Path != file.Path && h.File.Path.StartsWith (UserScriptsDir.Path)))); + new_files.RemoveAll (file => new_files.Exists (f => f.Basename == file.Basename + && f.Path != file.Path && !file.Path.StartsWith (UserScriptsDir.Path))); + + //Remove system-helpers which are overruled by new user-helpers + helpers.RemoveAll (helper => new_files.Exists (f => f.Basename == helper.File.Basename)); + + //Create and Add new helpers + helpers.AddRange (new_files.Select (f => new Helper (f)).ToList ()); + + new_files.Clear (); - if (old_helpers.Count > 0) { - List removed_helpers = old_helpers.Where (h => !Helpers.Contains (h)).ToList (); - if (removed_helpers.Count > 0) { - foreach (Helper h in removed_helpers) { - Log.Info ("Helper was removed: {0}", h.File.Path); - h.HelperStatusChanged -= OnHelperStatusChanged; - h.Dispose (); - } - OnHelperDeleted (); - } - - List added_helpers = Helpers.Where (h => !old_helpers.Contains (h)).ToList (); - if (added_helpers.Count > 0) { - foreach (Helper h in added_helpers) - Log.Info ("New helper found: {0}", h.File.Path); - OnHelperAdded (); - } - } + Helpers = helpers; } void OnHelperStatusChanged (object o, HelperStatusChangedEventArgs args) @@ -128,28 +146,13 @@ HelperStatusChanged (o, args); } - void OnHelperAdded () + void OnHelpersChanged (IEnumerable added, IEnumerable removed) { - if (HelperInstalled != null) + if (added.Any () && HelperInstalled != null) HelperInstalled (this, EventArgs.Empty); - } - - void OnHelperDeleted () - { - if (HelperUninstalled != null) - HelperUninstalled (this, EventArgs.Empty); - } - - Helper LookupHelper (File helperFile) - { - if (!Helpers.Any (h => h.File.Path == helperFile.Path)) { - Helper h = new Helper (helperFile); - h.HelperStatusChanged += OnHelperStatusChanged; - Helpers.Add (h); - return h; - } - return Helpers.First (h => h.File.Path == helperFile.Path); + if (removed.Any () && HelperUninstalled != null) + HelperUninstalled (this, EventArgs.Empty); } public bool InstallHelper (string path, out Helper installedHelper) @@ -212,6 +215,12 @@ public void Dispose () { + foreach (FileMonitor mon in monitors) { + mon.Cancel (); + mon.Changed -= HandleMonitorChanged; + mon.Dispose (); + } + foreach (Helper h in Helpers) { h.HelperStatusChanged -= OnHelperStatusChanged; h.Dispose (); diff -Nru docky-2.0.4/Docky.Services/Docky.Services/SystemService.cs docky-2.0.5/Docky.Services/Docky.Services/SystemService.cs --- docky-2.0.4/Docky.Services/Docky.Services/SystemService.cs 2010-05-25 13:12:03.948613925 +0200 +++ docky-2.0.5/Docky.Services/Docky.Services/SystemService.cs 2010-06-26 15:47:36.543229000 +0200 @@ -416,26 +416,28 @@ public void Execute (string executable) { try { + System.Diagnostics.Process proc; if (System.IO.File.Exists (executable)) { - System.Diagnostics.Process proc = new System.Diagnostics.Process (); + proc = new System.Diagnostics.Process (); proc.StartInfo.FileName = executable; proc.StartInfo.UseShellExecute = false; proc.Start (); + proc.Dispose (); } else { - System.Diagnostics.Process proc; - if (executable.Contains (" ")) { - string[] args = executable.Split (' '); - - Log.Debug ("Calling: " + args[0] + " \"" + executable.Substring (args[0].Length + 1) + "\""); - proc = System.Diagnostics.Process.Start (args[0], "\"" + executable.Substring (args[0].Length + 1) + "\""); + int pos = -1; + executable = executable.Trim (); + if ((pos = executable.IndexOf (' ')) >= 0) { + string command = executable.Substring (0, pos); + string arguments = executable.Substring (pos + 1); + proc = System.Diagnostics.Process.Start (command, arguments); } else { - Log.Debug ("Calling: " + executable); proc = System.Diagnostics.Process.Start (executable); } + Log.Debug ("Calling: '{0}'", executable); proc.Dispose (); } } catch { - Log.Error ("Error executing '" + executable + "'"); + Log.Error ("Error executing '{0}'", executable); } } diff -Nru docky-2.0.4/Docky.Services/Makefile.am docky-2.0.5/Docky.Services/Makefile.am --- docky-2.0.4/Docky.Services/Makefile.am 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky.Services/Makefile.am 2010-06-26 15:47:36.543229000 +0200 @@ -10,6 +10,7 @@ AssemblyInfo.cs \ Docky.Services/Extensions/GLibFileExtension.cs \ Docky.Services/Extensions/GLibMountExtension.cs \ + Docky.Services/Extensions/GdkPixbufExtension.cs \ Docky.Services/Extensions/GtkIconThemeExtension.cs \ Docky.Services/Logging/ConsoleCrayon.cs \ Docky.Services/Logging/LogBase.cs \ diff -Nru docky-2.0.4/Docky.Services/Makefile.in docky-2.0.5/Docky.Services/Makefile.in --- docky-2.0.4/Docky.Services/Makefile.in 2010-05-31 08:00:10.555621678 +0200 +++ docky-2.0.5/Docky.Services/Makefile.in 2010-07-01 19:05:31.485184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ @@ -320,6 +322,7 @@ AssemblyInfo.cs \ Docky.Services/Extensions/GLibFileExtension.cs \ Docky.Services/Extensions/GLibMountExtension.cs \ + Docky.Services/Extensions/GdkPixbufExtension.cs \ Docky.Services/Extensions/GtkIconThemeExtension.cs \ Docky.Services/Logging/ConsoleCrayon.cs \ Docky.Services/Logging/LogBase.cs \ diff -Nru docky-2.0.4/Docky.Widgets/Docky.Widgets/AbstractTileObject.cs docky-2.0.5/Docky.Widgets/Docky.Widgets/AbstractTileObject.cs --- docky-2.0.4/Docky.Widgets/Docky.Widgets/AbstractTileObject.cs 2010-05-03 07:58:13.336304374 +0200 +++ docky-2.0.5/Docky.Widgets/Docky.Widgets/AbstractTileObject.cs 2010-06-26 15:47:36.543229000 +0200 @@ -112,6 +112,8 @@ protected set { if (force_pbuf == value) return; + if (force_pbuf != null) + force_pbuf.Dispose (); force_pbuf = value; OnIconUpdated (); } diff -Nru docky-2.0.4/Docky.Widgets/Docky.Widgets/SearchEntry.cs docky-2.0.5/Docky.Widgets/Docky.Widgets/SearchEntry.cs --- docky-2.0.4/Docky.Widgets/Docky.Widgets/SearchEntry.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky.Widgets/Docky.Widgets/SearchEntry.cs 2010-06-30 09:46:14.670310997 +0200 @@ -185,6 +185,7 @@ if(changed_timeout_id > 0) { GLib.Source.Remove (changed_timeout_id); + changed_timeout_id = 0; } if (Ready) @@ -484,8 +485,6 @@ Gdk.Color color_b = parent.Style.Text(StateType.Normal); text_gc.RgbFgColor = DockServices.Drawing.ColorBlend(color_a, color_b); } - - protected override bool OnExposeEvent(Gdk.EventExpose evnt) { @@ -516,6 +515,19 @@ return ret; } + + public override void Dispose () + { + parent.StyleSet -= OnParentStyleSet; + + if (layout != null) { + if (layout.FontDescription != null) + layout.FontDescription.Dispose (); + layout.Dispose (); + } + + base.Dispose (); + } } } } diff -Nru docky-2.0.4/Docky.Widgets/Docky.Widgets/Tile.cs docky-2.0.5/Docky.Widgets/Docky.Widgets/Tile.cs --- docky-2.0.4/Docky.Widgets/Docky.Widgets/Tile.cs 2010-05-03 07:58:13.377077445 +0200 +++ docky-2.0.5/Docky.Widgets/Docky.Widgets/Tile.cs 2010-06-30 11:40:12.507401000 +0200 @@ -108,14 +108,14 @@ if (OwnedObject.ForcePixbuf != null) { pbuf = OwnedObject.ForcePixbuf.Copy (); if (pbuf.Width != IconSize || pbuf.Height != IconSize) - pbuf = DockServices.Drawing.ARScale (IconSize, IconSize, pbuf); + pbuf = pbuf.ARScale (IconSize, IconSize); } else { pbuf = DockServices.Drawing.LoadIcon (OwnedObject.Icon, IconSize); } - pbuf = DockServices.Drawing.AddHueShift (pbuf, OwnedObject.HueShift); + pbuf.AddHueShift (OwnedObject.HueShift); if (!OwnedObject.Enabled) - pbuf = DockServices.Drawing.MonochromePixbuf (pbuf); + pbuf.MonochromePixbuf (); } catch (Exception e) { Log.Error ("Error loading pixbuf for {0} tile: {1}", OwnedObject.Name, e.Message); Log.Debug (e.StackTrace); @@ -273,10 +273,33 @@ public override void Dispose () { + foreach (Gtk.Widget widget in button_box.Children) + button_box.Remove (widget); + button_box.Dispose (); + button_box.Destroy (); + + add_remove_button.Clicked -= OnAddRemoveClicked; + add_remove_button.Dispose (); + add_remove_button.Destroy (); + + Remove (title); + title.Dispose (); + title.Destroy (); + Remove (tileImage); + tileImage.Dispose (); + tileImage.Destroy (); + Remove (description); + description.Dispose (); + description.Destroy (); + Remove (subDesc); + subDesc.Dispose (); + subDesc.Destroy (); + OwnedObject.IconUpdated -= HandleOwnedObjectIconUpdated; OwnedObject.TextUpdated -= HandleOwnedObjectTextUpdated; OwnedObject.ButtonsUpdated -= HandleOwnedObjectButtonsUpdated; + Owner = null; OwnedObject = null; base.Dispose (); diff -Nru docky-2.0.4/Docky.Widgets/Docky.Widgets/TileView.cs docky-2.0.5/Docky.Widgets/Docky.Widgets/TileView.cs --- docky-2.0.4/Docky.Widgets/Docky.Widgets/TileView.cs 2010-05-07 12:28:35.688230412 +0200 +++ docky-2.0.5/Docky.Widgets/Docky.Widgets/TileView.cs 2010-06-30 10:18:47.160310995 +0200 @@ -89,6 +89,9 @@ tile.ActiveChanged -= OnTileActiveChanged; tile.SizeAllocated -= OnTileSizeAllocated; tile.Owner = null; + box.Remove (tile); + tile.Dispose (); + tile.Destroy (); }); tiles.Clear (); @@ -99,6 +102,13 @@ } } + public virtual AbstractTileObject CurrentTile () + { + if (selected_index >= 0 && selected_index < tiles.Count) + return tiles[selected_index].OwnedObject; + return null; + } + public virtual void AppendTile (AbstractTileObject tileObject) { Tile tile = new Tile (tileObject, IconSize); @@ -246,7 +256,7 @@ return base.OnKeyPressEvent (evnt); } - private void Select (int index) + public void Select (int index) { if (index >= 0 && index < tiles.Count) { selected_index = index; diff -Nru docky-2.0.4/Docky.Widgets/Docky.Widgets/WrapLabel.cs docky-2.0.5/Docky.Widgets/Docky.Widgets/WrapLabel.cs --- docky-2.0.4/Docky.Widgets/Docky.Widgets/WrapLabel.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/Docky.Widgets/Docky.Widgets/WrapLabel.cs 2010-06-26 15:47:36.543229000 +0200 @@ -34,7 +34,7 @@ namespace Docky.Widgets { - [System.ComponentModel.ToolboxItem(true)] + [System.ComponentModel.ToolboxItem(true)] public class WrapLabel : Widget { private string text; @@ -153,6 +153,15 @@ text = value; UpdateLayout (); } - } + } + + public override void Dispose() + { + if (layout != null) { + layout.Dispose (); + } + + base.Dispose (); + } } } diff -Nru docky-2.0.4/Docky.Widgets/Makefile.in docky-2.0.5/Docky.Widgets/Makefile.in --- docky-2.0.4/Docky.Widgets/Makefile.in 2010-05-31 08:00:10.625621694 +0200 +++ docky-2.0.5/Docky.Widgets/Makefile.in 2010-07-01 19:05:31.555184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.Windowing/Makefile.in docky-2.0.5/Docky.Windowing/Makefile.in --- docky-2.0.4/Docky.Windowing/Makefile.in 2010-05-31 08:00:10.695621398 +0200 +++ docky-2.0.5/Docky.Windowing/Makefile.in 2010-07-01 19:05:31.625184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Docky.Windowing/Windowing/WindowMatcher.cs docky-2.0.5/Docky.Windowing/Windowing/WindowMatcher.cs --- docky-2.0.4/Docky.Windowing/Windowing/WindowMatcher.cs 2010-05-25 16:54:56.114876079 +0200 +++ docky-2.0.5/Docky.Windowing/Windowing/WindowMatcher.cs 2010-06-26 15:47:36.543229000 +0200 @@ -106,7 +106,7 @@ static IEnumerable PrefixStrings { get { - yield return "gksu"; + yield return "gksu(do)?"; yield return "sudo"; yield return "java"; yield return "mono"; @@ -125,11 +125,11 @@ static IEnumerable SuffixStrings { get { // some wine apps are launched via a shell script that sets the proc name to "app.exe" - yield return ".exe"; - // some apps have a script 'foo' which does 'exec foo-bin' - yield return "-bin"; + yield return "\\.exe"; + // some apps have a script 'foo' which does 'exec foo-bin' or 'exec foo.bin' + yield return "[.-]bin"; // some python apps have a script 'foo' for 'python foo.py' - yield return ".py"; + yield return "\\.py"; // some apps append versions, such as '-1' or '-3.0' yield return "(-)?\\d+(\\.\\d+)?"; } @@ -297,14 +297,17 @@ if (WindowIsOpenOffice (window)) SetupWindow (window); - - string file = window_to_desktop_files[window].FirstOrDefault (); - if (file == null) - file = ""; - file = file.EndsWith (".desktop") ? file : null; + string homedir = Environment.GetFolderPath (Environment.SpecialFolder.Personal); + List matches; + if (window_to_desktop_files.TryGetValue (window, out matches)) { + string useritem = matches.Find (item => item.StartsWith (homedir)); + if (useritem != null) + return useritem; + return matches.FirstOrDefault (); + } - return file; + return null; } public bool WindowIsReadyForMatch (Wnck.Window window) @@ -428,6 +431,8 @@ matched = true; } } + if (matched) + break; } // if we found a match, bail. if (matched) @@ -580,7 +585,10 @@ continue; string cls = item.GetString ("StartupWMClass").Trim (); - result [cls] = file; + // we only want exactly 1 launcher, and so if we already have one we use that + // otherwise it will prefer global over local launchers + if (!result.ContainsKey (cls)) + result [cls] = file; } } @@ -606,8 +614,8 @@ (exec.StartsWith ("ooffice") || exec.StartsWith ("openoffice") || exec.StartsWith ("soffice"))) { vexec = "ooffice" + exec.Split (' ') [1]; // for wine apps - } else if ((exec.StartsWith ("env WINEPREFIX=") && exec.Contains (" wine ")) || - exec.StartsWith ("wine ")) { + } else if ((exec.Contains ("env WINEPREFIX=") && exec.Contains (" wine ")) || + exec.Contains ("wine ")) { int startIndex = exec.IndexOf ("wine ") + 5; // length of 'wine ' // CommandLineForPid already splits based on \\ and takes the last entry, so do the same here vexec = exec.Substring (startIndex).Split (new [] {@"\\"}, StringSplitOptions.RemoveEmptyEntries).Last (); diff -Nru docky-2.0.4/lib/gio-sharp/generator/Makefile.in docky-2.0.5/lib/gio-sharp/generator/Makefile.in --- docky-2.0.4/lib/gio-sharp/generator/Makefile.in 2010-05-31 08:00:12.725621294 +0200 +++ docky-2.0.5/lib/gio-sharp/generator/Makefile.in 2010-07-01 19:05:34.225184001 +0200 @@ -202,6 +202,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/lib/gio-sharp/gio/Makefile.in docky-2.0.5/lib/gio-sharp/gio/Makefile.in --- docky-2.0.4/lib/gio-sharp/gio/Makefile.in 2010-05-31 08:00:12.785621362 +0200 +++ docky-2.0.5/lib/gio-sharp/gio/Makefile.in 2010-07-01 19:05:34.285184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/lib/gio-sharp/Makefile.in docky-2.0.5/lib/gio-sharp/Makefile.in --- docky-2.0.4/lib/gio-sharp/Makefile.in 2010-05-31 08:00:12.665621417 +0200 +++ docky-2.0.5/lib/gio-sharp/Makefile.in 2010-07-01 19:05:34.155184001 +0200 @@ -204,6 +204,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/lib/Makefile.in docky-2.0.5/lib/Makefile.in --- docky-2.0.4/lib/Makefile.in 2010-05-31 08:00:12.615621384 +0200 +++ docky-2.0.5/lib/Makefile.in 2010-07-01 19:05:34.115184001 +0200 @@ -203,6 +203,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/m4/Makefile.in docky-2.0.5/m4/Makefile.in --- docky-2.0.4/m4/Makefile.in 2010-05-31 08:00:12.825621362 +0200 +++ docky-2.0.5/m4/Makefile.in 2010-07-01 19:05:34.335184001 +0200 @@ -164,6 +164,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/Makefile.in docky-2.0.5/Makefile.in --- docky-2.0.4/Makefile.in 2010-05-31 08:00:13.035620638 +0200 +++ docky-2.0.5/Makefile.in 2010-07-01 19:05:34.545184001 +0200 @@ -240,6 +240,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/NEWS docky-2.0.5/NEWS --- docky-2.0.4/NEWS 2010-05-31 07:54:32.944372006 +0200 +++ docky-2.0.5/NEWS 2010-07-01 18:42:43.535184000 +0200 @@ -1,5 +1,87 @@ Docky: The finest dock no money can buy! + +2.0.5 "Be proud of your dock" (2010-07-01) +=============================================================================== + * Bug-fix and Maintenance Release + * update translations + * update COPYRIGHT and AUTHORS files + + CORE: + * remove --debug flag from launcher for lower memory usage + * update the about dialog credits to list documenters and make translation + tab easier to read + * change url in about dialog to the launchpad project page + * Window-Matching + - fix for applications commandline + - properly match qt creator (LP: #594814) + - prefer local over global launchers (LP: #588073) (LP: #592841) + - match prefix for gksudo (LP: #516433) + - fix nautilus items showing active indicator when desktop + is focused (LP: #487113) + - fix matching wine apps that use a prefixed launcher (LP: #596092) + * Memory Leaks + - dispose of calendar painter when the clock item is disposed + - fix leak in AutoHideManager + - several fixes using Cairo.Context.Target and Pango.Layout + - fix leak in PagingPainters + - fix leak in recursive file-deletion + - fix leaking SeparatorItems, WnckDockItems + - fix leaks with FileEmblems + - fix Pixbuf related leaks + - fix some leaks regarding FileMonitors + - fix leaks regarding Tiles and AbtractTileObjects + - fix leaking Glib.FileAdapter caused by unreferenced Action in FileDockItem + * Handle invalid desktopfile entry and UriFormatException in + FileApplicationProvider (LP: #595921) + * fix potential crash for invalid HelperMetadata + * handle drops correctly + * fix handling of Helpers in HelperService + * make the sliders in preferences behave better + * fix drawing of rotated items + * fix HoveredItem click-position + * avoids fatal errors on console when loading embedded icons when no + height or width is specified and when dock items have a null Icon + * fix icon theme change not refreshing the dock icons (LP: #590205) + * fix SVG rendering bug + * fix iconsize temporarily getting large when adding to full dock (LP: #579576) + * fix the 'crash in PinToDock' (LP: #588073) + * make 3d background height more consistent and a tad larger (LP: #503038) + * fix dragging multiple files to a folder on the dock, which caused + a crash and data corruption (LP: #579049) + * don't request animations if urgent state is removed from a window and + fix glow location (LP: #596422) + * fix window previews being offset (LP: #495065) + * fix broken zoom after shrinking icon size (LP: #598924) + * fix problem with hovers still visible when painters show + * fix displaying default icon in place of missing file emblem (LP: #534651) + * fix crash when gconf key for menus_have_icons is not set (LP: #573751) + * make sure painters fit on screen (LP: #589978) + * fix icon minimize animations not working immediately for some newly + opened windows + * don't dispose our static DockyItem + * fix CurrentDesktopOnly not working when dragging a window across desktops + (LP: #600290) + + DOCKLETS: + * GMail: + - fix thread-guards and remove deprecated code + - fix problem with feeds that dont have an author entry (LP: #595530) + * NPR: fix bug where removing your last NPR station unloaded the docklet + and fix station icon + * NetworkManager: fix crash caused when NM goes away + and fix icons and add another fallback icon (LP: #588581) + * Mounter: + - fixed some leaks + - only remove mounted items if they were successfully unmounted (LP: #597637) + - fix duplicate icons showing in mounter (LP: #525306) + * Weather: fix feels like temp showing incorrect for metric (LP: #597670) + * RecentDocuments: + - fixed some leaks + - fix sensitivity of recent docs clear menu item - even if docky shows + the list as empty does not mean it cant be cleared + + 2.0.4 "Do you think you're better off alone?" (2010-05-31) =============================================================================== * Bug-fix and Maintenance Release diff -Nru docky-2.0.4/po/ast.po docky-2.0.5/po/ast.po diff -Nru docky-2.0.4/po/bg.po docky-2.0.5/po/bg.po diff -Nru docky-2.0.4/po/bn.po docky-2.0.5/po/bn.po diff -Nru docky-2.0.4/po/ca.po docky-2.0.5/po/ca.po diff -Nru docky-2.0.4/po/de.po docky-2.0.5/po/de.po diff -Nru docky-2.0.4/po/en_GB.po docky-2.0.5/po/en_GB.po diff -Nru docky-2.0.4/po/es.po docky-2.0.5/po/es.po diff -Nru docky-2.0.4/po/eu.po docky-2.0.5/po/eu.po diff -Nru docky-2.0.4/po/fi.po docky-2.0.5/po/fi.po diff -Nru docky-2.0.4/po/fr.po docky-2.0.5/po/fr.po diff -Nru docky-2.0.4/po/gl.po docky-2.0.5/po/gl.po diff -Nru docky-2.0.4/po/he.po docky-2.0.5/po/he.po diff -Nru docky-2.0.4/po/hi.po docky-2.0.5/po/hi.po diff -Nru docky-2.0.4/po/hr.po docky-2.0.5/po/hr.po diff -Nru docky-2.0.4/po/hu.po docky-2.0.5/po/hu.po diff -Nru docky-2.0.4/po/id.po docky-2.0.5/po/id.po diff -Nru docky-2.0.4/po/is.po docky-2.0.5/po/is.po diff -Nru docky-2.0.4/po/it.po docky-2.0.5/po/it.po diff -Nru docky-2.0.4/po/ja.po docky-2.0.5/po/ja.po diff -Nru docky-2.0.4/po/ko.po docky-2.0.5/po/ko.po diff -Nru docky-2.0.4/po/pl.po docky-2.0.5/po/pl.po diff -Nru docky-2.0.4/po/pt_BR.po docky-2.0.5/po/pt_BR.po diff -Nru docky-2.0.4/po/ro.po docky-2.0.5/po/ro.po diff -Nru docky-2.0.4/po/ru.po docky-2.0.5/po/ru.po diff -Nru docky-2.0.4/po/sv.po docky-2.0.5/po/sv.po diff -Nru docky-2.0.4/po/tr.po docky-2.0.5/po/tr.po diff -Nru docky-2.0.4/po/uk.po docky-2.0.5/po/uk.po diff -Nru docky-2.0.4/po/zh_CN.po docky-2.0.5/po/zh_CN.po diff -Nru docky-2.0.4/scripts/docky/Makefile.in docky-2.0.5/scripts/docky/Makefile.in --- docky-2.0.4/scripts/docky/Makefile.in 2010-05-31 08:00:12.945621489 +0200 +++ docky-2.0.5/scripts/docky/Makefile.in 2010-07-01 19:05:34.455184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/scripts/Makefile.in docky-2.0.5/scripts/Makefile.in --- docky-2.0.4/scripts/Makefile.in 2010-05-31 08:00:12.885621362 +0200 +++ docky-2.0.5/scripts/Makefile.in 2010-07-01 19:05:34.395184001 +0200 @@ -229,6 +229,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/scripts/metadata/Makefile.in docky-2.0.5/scripts/metadata/Makefile.in --- docky-2.0.4/scripts/metadata/Makefile.in 2010-05-31 08:00:12.985621391 +0200 +++ docky-2.0.5/scripts/metadata/Makefile.in 2010-07-01 19:05:34.495184001 +0200 @@ -189,6 +189,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/BatteryMonitor/Makefile.in docky-2.0.5/StandardPlugins/BatteryMonitor/Makefile.in --- docky-2.0.4/StandardPlugins/BatteryMonitor/Makefile.in 2010-05-31 08:00:10.815621366 +0200 +++ docky-2.0.5/StandardPlugins/BatteryMonitor/Makefile.in 2010-07-01 19:05:31.765184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Bookmarks/Makefile.in docky-2.0.5/StandardPlugins/Bookmarks/Makefile.in --- docky-2.0.4/StandardPlugins/Bookmarks/Makefile.in 2010-05-31 08:00:10.865621406 +0200 +++ docky-2.0.5/StandardPlugins/Bookmarks/Makefile.in 2010-07-01 19:05:31.835184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Bookmarks/src/BookmarksItemProvider.cs docky-2.0.5/StandardPlugins/Bookmarks/src/BookmarksItemProvider.cs --- docky-2.0.4/StandardPlugins/Bookmarks/src/BookmarksItemProvider.cs 2010-04-11 08:14:01.034105744 +0200 +++ docky-2.0.5/StandardPlugins/Bookmarks/src/BookmarksItemProvider.cs 2010-06-26 15:47:36.543229000 +0200 @@ -77,6 +77,8 @@ } } + FileMonitor watcher; + public BookmarksItemProvider () { items = new List (); @@ -87,7 +89,7 @@ UpdateItems (); - FileMonitor watcher = FileMonitor.File (BookmarksFile, FileMonitorFlags.None, null); + watcher = FileMonitor.File (BookmarksFile, FileMonitorFlags.None, null); watcher.Changed += WatcherChanged; } @@ -232,6 +234,10 @@ public override void Dispose () { + watcher.Cancel (); + watcher.Changed -= WatcherChanged; + watcher.Dispose (); + Items = Enumerable.Empty (); foreach (AbstractDockItem item in items) item.Dispose (); diff -Nru docky-2.0.4/StandardPlugins/Clock/Makefile.in docky-2.0.5/StandardPlugins/Clock/Makefile.in --- docky-2.0.4/StandardPlugins/Clock/Makefile.in 2010-05-31 08:00:10.975621416 +0200 +++ docky-2.0.5/StandardPlugins/Clock/Makefile.in 2010-07-01 19:05:31.975184001 +0200 @@ -239,6 +239,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Clock/src/CalendarPainter.cs docky-2.0.5/StandardPlugins/Clock/src/CalendarPainter.cs --- docky-2.0.4/StandardPlugins/Clock/src/CalendarPainter.cs 2010-02-26 17:24:37.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Clock/src/CalendarPainter.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -109,26 +110,31 @@ DateTime day = CalendarStartDate; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (offsetSize); - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (0.625 * LineHeight)); - - cr.Color = new Cairo.Color (1, 1, 1, .5); - for (int i = 1; i < 8; i++) { - layout.SetText (string.Format ("{0}", day.ToString ("ddd").ToUpper ())); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) + { + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (offsetSize); + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (0.625 * LineHeight)); - Pango.Rectangle inkRect, logicalRect; - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (offsetSize * i + (offsetSize - inkRect.Width) / 2, centerLine - logicalRect.Height); + cr.Color = new Cairo.Color (1, 1, 1, .5); + for (int i = 1; i < 8; i++) { + layout.SetText (string.Format ("{0}", day.ToString ("ddd").ToUpper ())); + + Pango.Rectangle inkRect, logicalRect; + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (offsetSize * i + (offsetSize - inkRect.Width) / 2, centerLine - logicalRect.Height); + + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + day = day.AddDays (1); + } - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - day = day.AddDays (1); + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } + } void RenderLine (DockySurface surface, int line) @@ -139,56 +145,61 @@ int centerLine = LineHeight + LineHeight * line + ((Allocation.Height % LineHeight) / 2); int dayOffset = 0; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - Pango.Rectangle inkRect, logicalRect; - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (offsetSize); - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (0.625 * LineHeight)); - - for (int i = 0; i < 9; i++) { - layout.FontDescription.Weight = Pango.Weight.Bold; + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) + { + Pango.Rectangle inkRect, logicalRect; - if (i == 8) { - cr.Color = new Cairo.Color (1, 1, 1, lowlight); - layout.SetText (string.Format ("{0}", lineStart.AddDays (6).ToString ("MMM").ToUpper ())); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (offsetSize * i, centerLine - logicalRect.Height); - } else if (i == 0) { - cr.Color = new Cairo.Color (1, 1, 1, lowlight); - int woy = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear (lineStart.AddDays (6), - DateTimeFormatInfo.CurrentInfo.CalendarWeekRule, - DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek); - layout.SetText (string.Format ("W{0:00}", woy)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (offsetSize - inkRect.Width, centerLine - logicalRect.Height); - } else { - DateTime day = lineStart.AddDays (dayOffset); - - if (day.Month == CalendarStartDate.AddDays (6).Month) - cr.Color = new Cairo.Color (1, 1, 1); - else - cr.Color = new Cairo.Color (1, 1, 1, .8); + layout.FontDescription = new Gtk.Style().FontDescription; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (offsetSize); + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (0.625 * LineHeight)); + + for (int i = 0; i < 9; i++) { + layout.FontDescription.Weight = Pango.Weight.Bold; - if (day.Date == DateTime.Today) - { - Gdk.Color color = Style.Backgrounds [(int) StateType.Selected].SetMinimumValue (100); - cr.Color = new Cairo.Color ((double) color.Red / ushort.MaxValue, - (double) color.Green / ushort.MaxValue, - (double) color.Blue / ushort.MaxValue, - 1.0); + if (i == 8) { + cr.Color = new Cairo.Color (1, 1, 1, lowlight); + layout.SetText (string.Format ("{0}", lineStart.AddDays (6).ToString ("MMM").ToUpper ())); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (offsetSize * i, centerLine - logicalRect.Height); + } else if (i == 0) { + cr.Color = new Cairo.Color (1, 1, 1, lowlight); + int woy = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear (lineStart.AddDays (6), + DateTimeFormatInfo.CurrentInfo.CalendarWeekRule, + DateTimeFormatInfo.CurrentInfo.FirstDayOfWeek); + layout.SetText (string.Format ("W{0:00}", woy)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (offsetSize - inkRect.Width, centerLine - logicalRect.Height); } else { - layout.FontDescription.Weight = Pango.Weight.Normal; + DateTime day = lineStart.AddDays (dayOffset); + + if (day.Month == CalendarStartDate.AddDays (6).Month) + cr.Color = new Cairo.Color (1, 1, 1); + else + cr.Color = new Cairo.Color (1, 1, 1, .8); + + if (day.Date == DateTime.Today) + { + Gdk.Color color = Style.Backgrounds [(int) StateType.Selected].SetMinimumValue (100); + cr.Color = new Cairo.Color ((double) color.Red / ushort.MaxValue, + (double) color.Green / ushort.MaxValue, + (double) color.Blue / ushort.MaxValue, + 1.0); + } else { + layout.FontDescription.Weight = Pango.Weight.Normal; + } + dayOffset++; + + layout.SetText (string.Format ("{0:00}", day.Day)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (offsetSize * i + (offsetSize - inkRect.Width) / 2, centerLine - logicalRect.Height); } - dayOffset++; - - layout.SetText (string.Format ("{0:00}", day.Day)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (offsetSize * i + (offsetSize - inkRect.Width) / 2, centerLine - logicalRect.Height); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); } - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } } diff -Nru docky-2.0.4/StandardPlugins/Clock/src/ClockDockItem.cs docky-2.0.5/StandardPlugins/Clock/src/ClockDockItem.cs --- docky-2.0.4/StandardPlugins/Clock/src/ClockDockItem.cs 2010-05-25 13:23:27.977364250 +0200 +++ docky-2.0.5/StandardPlugins/Clock/src/ClockDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Jason Smith, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -193,14 +194,12 @@ else HoverText = DateTime.Now.ToString ("ddd, MMM dd h:mm tt"); - if (ShowDigital) { - if (Square) - MakeSquareDigitalIcon (surface); - else - MakeRectangularDigitalIcon (surface); - } else { + if (!ShowDigital) MakeAnalogIcon (surface.Context, Math.Min (surface.Width, surface.Height)); - } + else if (Square) + MakeSquareDigitalIcon (surface); + else + MakeRectangularDigitalIcon (surface); } void MakeSquareDigitalIcon (DockySurface surface) @@ -215,75 +214,78 @@ int center = surface.Height / 2; // shared by all text - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (surface.Width); - - - // draw the time, outlined - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (timeSize); - - if (ShowMilitary) - layout.SetText (DateTime.Now.ToString ("HH:mm")); - else - layout.SetText (DateTime.Now.ToString ("h:mm")); - - Pango.Rectangle inkRect, logicalRect; - layout.GetPixelExtents (out inkRect, out logicalRect); - - int timeYOffset = ShowMilitary ? timeSize : timeSize / 2; - int timeXOffset = (surface.Width - inkRect.Width) / 2; - if (ShowDate) - cr.MoveTo (timeXOffset, timeYOffset); - else - cr.MoveTo (timeXOffset, timeYOffset + timeSize / 2); - - Pango.CairoHelper.LayoutPath (cr, layout); - cr.LineWidth = 3; - cr.Color = new Cairo.Color (0, 0, 0, 0.5); - cr.StrokePreserve (); - cr.Color = new Cairo.Color (1, 1, 1, 0.8); - cr.Fill (); - - // draw the date, outlined - if (ShowDate) { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (dateSize); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (surface.Width); - layout.SetText (DateTime.Now.ToString ("MMM dd")); + + // draw the time, outlined + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (timeSize); + + if (ShowMilitary) + layout.SetText (DateTime.Now.ToString ("HH:mm")); + else + layout.SetText (DateTime.Now.ToString ("h:mm")); + + Pango.Rectangle inkRect, logicalRect; layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo ((surface.Width - inkRect.Width) / 2, surface.Height - spacing - dateSize); + + int timeYOffset = ShowMilitary ? timeSize : timeSize / 2; + int timeXOffset = (surface.Width - inkRect.Width) / 2; + if (ShowDate) + cr.MoveTo (timeXOffset, timeYOffset); + else + cr.MoveTo (timeXOffset, timeYOffset + timeSize / 2); Pango.CairoHelper.LayoutPath (cr, layout); - cr.LineWidth = 2.5; + cr.LineWidth = 3; cr.Color = new Cairo.Color (0, 0, 0, 0.5); cr.StrokePreserve (); cr.Color = new Cairo.Color (1, 1, 1, 0.8); cr.Fill (); - } - - if (!ShowMilitary) { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (ampmSize); - int yOffset = ShowDate ? center - spacing : surface.Height - spacing - ampmSize; + // draw the date, outlined + if (ShowDate) { + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (dateSize); + + layout.SetText (DateTime.Now.ToString ("MMM dd")); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo ((surface.Width - inkRect.Width) / 2, surface.Height - spacing - dateSize); + + Pango.CairoHelper.LayoutPath (cr, layout); + cr.LineWidth = 2.5; + cr.Color = new Cairo.Color (0, 0, 0, 0.5); + cr.StrokePreserve (); + cr.Color = new Cairo.Color (1, 1, 1, 0.8); + cr.Fill (); + } - // draw AM indicator - layout.SetText ("am"); - cr.Color = new Cairo.Color (1, 1, 1, DateTime.Now.Hour < 12 ? 0.8 : 0.2); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo ((center - inkRect.Width) / 2, yOffset); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + if (!ShowMilitary) { + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (ampmSize); + + int yOffset = ShowDate ? center - spacing : surface.Height - spacing - ampmSize; + + // draw AM indicator + layout.SetText ("am"); + cr.Color = new Cairo.Color (1, 1, 1, DateTime.Now.Hour < 12 ? 0.8 : 0.2); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo ((center - inkRect.Width) / 2, yOffset); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + // draw PM indicator + layout.SetText ("pm"); + cr.Color = new Cairo.Color (1, 1, 1, DateTime.Now.Hour > 11 ? 0.8 : 0.2); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (center + (center - inkRect.Width) / 2, yOffset); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + } - // draw PM indicator - layout.SetText ("pm"); - cr.Color = new Cairo.Color (1, 1, 1, DateTime.Now.Hour > 11 ? 0.8 : 0.2); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (center + (center - inkRect.Width) / 2, yOffset); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } } @@ -298,69 +300,72 @@ int spacing = timeSize / 2; // shared by all text - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (surface.Width); - - - // draw the time, outlined - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (timeSize); - - if (ShowMilitary) - layout.SetText (DateTime.Now.ToString ("HH:mm")); - else - layout.SetText (DateTime.Now.ToString ("h:mm")); - - Pango.Rectangle inkRect, logicalRect; - layout.GetPixelExtents (out inkRect, out logicalRect); - - int timeYOffset = timeSize / 2; - if (!ShowDate) - timeYOffset += timeSize / 2; - cr.MoveTo ((surface.Width - inkRect.Width) / 2, timeYOffset); - - Pango.CairoHelper.LayoutPath (cr, layout); - cr.LineWidth = 2; - cr.Color = new Cairo.Color (0, 0, 0, 0.5); - cr.StrokePreserve (); - cr.Color = new Cairo.Color (1, 1, 1, 0.8); - cr.Fill (); - - // draw the date, outlined - if (ShowDate) { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (dateSize); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (surface.Width); - layout.SetText (DateTime.Now.ToString ("MMM dd")); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo ((surface.Width - inkRect.Width) / 2, surface.Height - spacing - dateSize); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Color = new Cairo.Color (0, 0, 0, 0.5); - cr.StrokePreserve (); - cr.Color = new Cairo.Color (1, 1, 1, 0.8); - cr.Fill (); - } - - if (!ShowMilitary) { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (ampmSize); + // draw the time, outlined + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (timeSize); - if (DateTime.Now.Hour < 12) - layout.SetText ("am"); + if (ShowMilitary) + layout.SetText (DateTime.Now.ToString ("HH:mm")); else - layout.SetText ("pm"); + layout.SetText (DateTime.Now.ToString ("h:mm")); + Pango.Rectangle inkRect, logicalRect; layout.GetPixelExtents (out inkRect, out logicalRect); - int yOffset = timeSize; + + int timeYOffset = timeSize / 2; if (!ShowDate) - yOffset += timeSize / 2; - cr.MoveTo (surface.Width - logicalRect.Width, yOffset - inkRect.Height); + timeYOffset += timeSize / 2; + cr.MoveTo ((surface.Width - inkRect.Width) / 2, timeYOffset); Pango.CairoHelper.LayoutPath (cr, layout); + cr.LineWidth = 2; + cr.Color = new Cairo.Color (0, 0, 0, 0.5); + cr.StrokePreserve (); cr.Color = new Cairo.Color (1, 1, 1, 0.8); cr.Fill (); + + // draw the date, outlined + if (ShowDate) { + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (dateSize); + + layout.SetText (DateTime.Now.ToString ("MMM dd")); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo ((surface.Width - inkRect.Width) / 2, surface.Height - spacing - dateSize); + + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Color = new Cairo.Color (0, 0, 0, 0.5); + cr.StrokePreserve (); + cr.Color = new Cairo.Color (1, 1, 1, 0.8); + cr.Fill (); + } + + if (!ShowMilitary) { + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels (ampmSize); + + if (DateTime.Now.Hour < 12) + layout.SetText ("am"); + else + layout.SetText ("pm"); + + layout.GetPixelExtents (out inkRect, out logicalRect); + int yOffset = timeSize; + if (!ShowDate) + yOffset += timeSize / 2; + cr.MoveTo (surface.Width - logicalRect.Width, yOffset - inkRect.Height); + + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Color = new Cairo.Color (1, 1, 1, 0.8); + cr.Fill (); + } + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } } @@ -450,8 +455,8 @@ public void ShowSettings () { if (ClockThemeSelector.instance == null) - ClockThemeSelector.instance = new ClockThemeSelector (this); - ClockThemeSelector.instance.Show (); + ClockThemeSelector.instance = new ClockThemeSelector (this); + ClockThemeSelector.instance.Show (); } public override void Dispose () @@ -460,6 +465,7 @@ ClockThemeSelector.instance.Destroy (); ClockThemeSelector.instance = null; } + painter.Dispose (); if (timer > 0) GLib.Source.Remove (timer); base.Dispose (); diff -Nru docky-2.0.4/StandardPlugins/Clock/Themes/Default/Makefile.in docky-2.0.5/StandardPlugins/Clock/Themes/Default/Makefile.in --- docky-2.0.4/StandardPlugins/Clock/Themes/Default/Makefile.in 2010-05-31 08:00:11.015621413 +0200 +++ docky-2.0.5/StandardPlugins/Clock/Themes/Default/Makefile.in 2010-07-01 19:05:32.035184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Clock/Themes/Default24/Makefile.in docky-2.0.5/StandardPlugins/Clock/Themes/Default24/Makefile.in --- docky-2.0.4/StandardPlugins/Clock/Themes/Default24/Makefile.in 2010-05-31 08:00:11.065621348 +0200 +++ docky-2.0.5/StandardPlugins/Clock/Themes/Default24/Makefile.in 2010-07-01 19:05:32.085184001 +0200 @@ -188,6 +188,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Clock/Themes/Makefile.in docky-2.0.5/StandardPlugins/Clock/Themes/Makefile.in --- docky-2.0.4/StandardPlugins/Clock/Themes/Makefile.in 2010-05-31 08:00:11.105621387 +0200 +++ docky-2.0.5/StandardPlugins/Clock/Themes/Makefile.in 2010-07-01 19:05:32.145184001 +0200 @@ -203,6 +203,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/CPUMonitor/Makefile.in docky-2.0.5/StandardPlugins/CPUMonitor/Makefile.in --- docky-2.0.4/StandardPlugins/CPUMonitor/Makefile.in 2010-05-31 08:00:10.915621472 +0200 +++ docky-2.0.5/StandardPlugins/CPUMonitor/Makefile.in 2010-07-01 19:05:31.905184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/GMail/Makefile.in docky-2.0.5/StandardPlugins/GMail/Makefile.in --- docky-2.0.4/StandardPlugins/GMail/Makefile.in 2010-05-31 08:00:11.155621367 +0200 +++ docky-2.0.5/StandardPlugins/GMail/Makefile.in 2010-07-01 19:05:32.215184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/GMail/src/GMailAtom.cs docky-2.0.5/StandardPlugins/GMail/src/GMailAtom.cs --- docky-2.0.4/StandardPlugins/GMail/src/GMailAtom.cs 2010-05-25 16:49:54.178614978 +0200 +++ docky-2.0.5/StandardPlugins/GMail/src/GMailAtom.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -30,9 +31,6 @@ using Docky.Services; using Docky.Widgets; -// disable the warning message about System.Net.ServicePointManager.CertificatePolicy being obsolete -#pragma warning disable 618 - namespace GMail { public enum GMailState @@ -43,15 +41,6 @@ Error } - // remove when ServicePointManager.ServerCertificateValidationCallback implemented in mono - class CertHandler : System.Net.ICertificatePolicy - { - public bool CheckValidationResult(System.Net.ServicePoint srvPoint, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Net.WebRequest request, int certificateProblem) - { - return true; - } - } - public struct UnreadMessage { public string Topic; @@ -84,9 +73,7 @@ public int NewCount { get; protected set; } public bool HasUnread { - get { - return UnreadCount > 0 && State != GMailState.Error; - } + get { return UnreadCount > 0 && State != GMailState.Error; } } bool IsChecking { get; set; } @@ -95,21 +82,15 @@ { CurrentLabel = label; State = GMailState.ManualReload; + + ServicePointManager.ServerCertificateValidationCallback += delegate { return true; }; + DockServices.System.ConnectionStatusChanged += HandleNeedReset; - // this is not implemented in mono yet -// ServicePointManager.ServerCertificateValidationCallback += -// (sender, cert, chain, errors) => { return true; }; ResetNeeded += HandleNeedReset; } Thread checkerThread; - public void Dispose () - { - DockServices.System.ConnectionStatusChanged -= HandleNeedReset; - ResetNeeded -= HandleNeedReset; - } - void HandleNeedReset (object o, EventArgs state) { ResetTimer (); @@ -118,9 +99,7 @@ List messages = new List (); public IEnumerable Messages { - get { - return messages as IEnumerable; - } + get { return messages as IEnumerable; } } uint UpdateTimer { get; set; } @@ -146,17 +125,10 @@ { StopTimer (); - if (!DockServices.System.NetworkConnected) - return; - - if (!IsChecking) { - IsChecking = true; - CheckGMail (); - } + CheckGMail (); UpdateTimer = GLib.Timeout.Add (GMailPreferences.RefreshRate * 60 * 1000, () => { - if (!IsChecking && DockServices.System.NetworkConnected) - CheckGMail (); + CheckGMail (); return true; }); } @@ -180,8 +152,6 @@ request.Credentials = new NetworkCredential (username, password); if (DockServices.System.UseProxy) request.Proxy = DockServices.System.Proxy; - // FIXME: remove when ServicePointManager.ServerCertificateValidationCallback implemented in mono - System.Net.ServicePointManager.CertificatePolicy = new CertHandler (); using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) try { } finally { @@ -196,6 +166,9 @@ void CheckGMail () { + if (IsChecking || !DockServices.System.NetworkConnected) + return; + string password = GMailPreferences.Password; if (string.IsNullOrEmpty (GMailPreferences.User) || string.IsNullOrEmpty (password)) { Gtk.Application.Invoke (delegate { @@ -204,6 +177,8 @@ return; } + IsChecking = true; + checkerThread = DockServices.System.RunOnThread (() => { try { Gtk.Application.Invoke (delegate { OnGMailChecking (); }); @@ -223,8 +198,6 @@ request.Credentials = new NetworkCredential (GMailPreferences.User, password); if (DockServices.System.UseProxy) request.Proxy = DockServices.System.Proxy; - // FIXME remove when ServicePointManager.ServerCertificateValidationCallback implemented in mono - System.Net.ServicePointManager.CertificatePolicy = new CertHandler (); XmlDocument xml = new XmlDocument (); XmlNamespaceManager nsmgr = new XmlNamespaceManager (xml.NameTable); @@ -282,7 +255,7 @@ messages = tmp; Gtk.Application.Invoke (delegate { OnGMailChecked (); }); } catch (ThreadAbortException) { - // do nothing + Log.Debug ("Stoping Atom thread"); } catch (NullReferenceException) { Gtk.Application.Invoke (delegate { OnGMailFailed (Catalog.GetString ("Feed Error")); @@ -309,13 +282,14 @@ Gtk.Application.Invoke (delegate { OnGMailFailed (Catalog.GetString ("General Error")); }); + } finally { + IsChecking = false; } }); } void OnGMailChecked () { - IsChecking = false; State = GMailState.Normal; if (GMailChecked != null) GMailChecked (null, EventArgs.Empty); @@ -323,7 +297,6 @@ void OnGMailChecking () { - IsChecking = true; if (State != GMailState.ManualReload) State = GMailState.Reloading; if (GMailChecking != null) @@ -332,10 +305,16 @@ void OnGMailFailed (string error) { - IsChecking = false; State = GMailState.Error; if (GMailFailed != null) GMailFailed (null, new GMailErrorArgs (error)); } + + public void Dispose () + { + StopTimer (); + DockServices.System.ConnectionStatusChanged -= HandleNeedReset; + ResetNeeded -= HandleNeedReset; + } } } diff -Nru docky-2.0.4/StandardPlugins/GMail/src/GMailDockItem.cs docky-2.0.5/StandardPlugins/GMail/src/GMailDockItem.cs --- docky-2.0.4/StandardPlugins/GMail/src/GMailDockItem.cs 2010-05-25 13:20:43.789601796 +0200 +++ docky-2.0.5/StandardPlugins/GMail/src/GMailDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -138,8 +138,7 @@ if (Atom.State != GMailState.Error) return pbuf; - - return DockServices.Drawing.MonochromePixbuf (pbuf); + return pbuf.MonochromePixbuf (); } protected override void PostProcessIconSurface (DockySurface surface) diff -Nru docky-2.0.4/StandardPlugins/Makefile.in docky-2.0.5/StandardPlugins/Makefile.in --- docky-2.0.4/StandardPlugins/Makefile.in 2010-05-31 08:00:11.205621367 +0200 +++ docky-2.0.5/StandardPlugins/Makefile.in 2010-07-01 19:05:32.275184001 +0200 @@ -203,6 +203,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Mounter/Makefile.in docky-2.0.5/StandardPlugins/Mounter/Makefile.in --- docky-2.0.4/StandardPlugins/Mounter/Makefile.in 2010-05-31 08:00:11.255621566 +0200 +++ docky-2.0.5/StandardPlugins/Mounter/Makefile.in 2010-07-01 19:05:32.335184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Mounter/src/MountItem.cs docky-2.0.5/StandardPlugins/Mounter/src/MountItem.cs --- docky-2.0.4/StandardPlugins/Mounter/src/MountItem.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Mounter/src/MountItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Chris Szikszoy +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -29,10 +30,8 @@ namespace Mounter { - public class MountItem : FileDockItem { - #region IconDockItem implementation public override string UniqueID () @@ -42,6 +41,8 @@ #endregion + public Mount Mnt { get; private set; } + public MountItem (Mount mount) : base (mount.Root.StringUri ()) { Mnt = mount; @@ -50,10 +51,13 @@ HoverText = Mnt.Name; - Mnt.Changed += (o, a) => SetIconFromGIcon (Mnt.Icon); + Mnt.Changed += HandleMountChanged; } - public Mount Mnt { get; private set; } + void HandleMountChanged (object o, EventArgs args) + { + SetIconFromGIcon (Mnt.Icon); + } protected override ClickAnimation OnClicked (uint button, Gdk.ModifierType mod, double xPercent, double yPercent) { @@ -65,42 +69,55 @@ return ClickAnimation.None; } - public void UnMount () + public bool UnMount () { + bool successful = false; if (Mnt.CanEject ()) Mnt.EjectWithOperation (MountUnmountFlags.Force, new Gtk.MountOperation (null), null, (s, result) => { try { if (!Mnt.EjectWithOperationFinish (result)) Log.Error ("Failed to eject {0}", Mnt.Name); + else + successful = true; } catch (Exception e) { Log.Error ("An error when ejecting {0} was encountered: {1}", Mnt.Name, e.Message); Log.Debug (e.StackTrace); } }); - else + else if (Mnt.CanUnmount) Mnt.UnmountWithOperation (MountUnmountFlags.Force, new Gtk.MountOperation (null), null, (s, result) => { try { if (!Mnt.UnmountWithOperationFinish (result)) Log.Error ("Failed to unmount {0}", Mnt.Name); + else + successful = true; } catch (Exception e) { Log.Error ("An error when unmounting {0} was encountered: {1}", Mnt.Name, e.Message); Log.Debug (e.StackTrace); } }); + return successful; } protected override MenuList OnGetMenuItems () { MenuList list = new MenuList (); + list[MenuListContainer.Actions].Add (new MenuItem (Catalog.GetString ("_Open"), Icon, (o, a) => Open ())); - if (Mnt.CanEject () || Mnt.CanUnmount) { - string removeLabel = (Mnt.CanEject ()) ? Catalog.GetString ("_Eject") : Catalog.GetString ("_Unmount"); - list[MenuListContainer.Actions].Add (new MenuItem (removeLabel, "media-eject", (o, a) => UnMount ())); - } + + if (Mnt.CanEject () || Mnt.CanUnmount) + list[MenuListContainer.Actions].Add (new MenuItem (Mnt.CanEject () ? Catalog.GetString ("_Eject") : Catalog.GetString ("_Unmount"), "media-eject", (o, a) => UnMount ())); return list; } + + public override void Dispose () + { + Mnt.Changed -= HandleMountChanged; + + base.Dispose (); + } } } diff -Nru docky-2.0.4/StandardPlugins/Mounter/src/MountProvider.cs docky-2.0.5/StandardPlugins/Mounter/src/MountProvider.cs --- docky-2.0.4/StandardPlugins/Mounter/src/MountProvider.cs 2010-04-11 08:14:01.044105312 +0200 +++ docky-2.0.5/StandardPlugins/Mounter/src/MountProvider.cs 2010-06-30 07:50:13.400310994 +0200 @@ -44,6 +44,9 @@ { foreach (MountItem m in Mounts) m.Dispose (); + + Monitor.MountAdded -= HandleMountAdded; + Monitor.MountRemoved -= HandleMountRemoved; } #endregion @@ -94,7 +97,7 @@ // FIXME: due to a bug in GIO#, this will crash when trying to get args.Mount Mount m = MountAdapter.GetObject (args.Args[0] as GLib.Object); - if (!IsTrash (m) && Mounts.Any (d => d.Mnt.Handle == m.Handle)) { + if (Mounts.Any (d => d.Mnt.Handle == m.Handle)) { MountItem mntToRemove = Mounts.First (d => d.Mnt.Handle == m.Handle); Mounts.Remove (mntToRemove); SetItems (); @@ -105,8 +108,10 @@ // determine if the mount should be handled or not bool IsTrash (Mount m) - { - return m == null || (m.Volume == null && m.Root != null && m.Root.Path != null && m.Root.Path.Contains ("cdda")); + { + return m == null + || (m.Root != null && Mounts.Find (mnt => mnt.Mnt.Root != null && mnt.Mnt.Root.StringUri () == m.Root.StringUri ()) != null) + || (m.Root == null && Mounts.Find (mnt => mnt.Mnt.Root == null && mnt.Mnt.Handle == m.Handle) != null); } public override bool ItemCanBeRemoved (AbstractDockItem item) @@ -116,11 +121,9 @@ public override bool RemoveItem (AbstractDockItem item) { - Mounts.Remove (item as MountItem); - SetItems (); - (item as MountItem).UnMount (); - - return true; + if ((item as MountItem).UnMount ()) + return base.RemoveItem (item); + return false; } } } diff -Nru docky-2.0.4/StandardPlugins/NetworkManager/Makefile.in docky-2.0.5/StandardPlugins/NetworkManager/Makefile.in --- docky-2.0.4/StandardPlugins/NetworkManager/Makefile.in 2010-05-31 08:00:11.355621432 +0200 +++ docky-2.0.5/StandardPlugins/NetworkManager/Makefile.in 2010-07-01 19:05:32.475184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/NetworkManager/src/ConnectionManager.cs docky-2.0.5/StandardPlugins/NetworkManager/src/ConnectionManager.cs --- docky-2.0.4/StandardPlugins/NetworkManager/src/ConnectionManager.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/NetworkManager/src/ConnectionManager.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Chris Szikszoy +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -22,6 +23,8 @@ using NDesk.DBus; using org.freedesktop.DBus; +using Docky.Services; + namespace NetworkManagerDocklet { public class ConnectionManager @@ -71,34 +74,44 @@ { lock (SystemConnections) { SystemConnections.Clear (); - foreach (string con in SystemConnectionManager.BusObject.ListConnections ()) - { - NetworkConnection connection = new NetworkConnection (SystemBus, con, ConnectionOwner.System); - if (connection.Settings.ContainsKey ("802-11-wireless")) - connection = new WirelessConnection (SystemBus, con, ConnectionOwner.System); - else if (connection.Settings.ContainsKey ("802-3-ethernet")) - connection = new WiredConnection (SystemBus, con, ConnectionOwner.System); - else - continue; - //connection.ConnectionRemoved += OnNetworkConnectionRemoved; - SystemConnections.Add (connection); + try { + foreach (string con in SystemConnectionManager.BusObject.ListConnections ()) + { + NetworkConnection connection = new NetworkConnection (SystemBus, con, ConnectionOwner.System); + if (connection.Settings.ContainsKey ("802-11-wireless")) + connection = new WirelessConnection (SystemBus, con, ConnectionOwner.System); + else if (connection.Settings.ContainsKey ("802-3-ethernet")) + connection = new WiredConnection (SystemBus, con, ConnectionOwner.System); + else + continue; + //connection.ConnectionRemoved += OnNetworkConnectionRemoved; + SystemConnections.Add (connection); + } + } catch (Exception e) { + Log.Error (e.Message); + Log.Debug (e.StackTrace); } } lock (UserConnections) { UserConnections.Clear (); - foreach (string con in UserConnectionManager.BusObject.ListConnections ()) - { - NetworkConnection connection = new NetworkConnection (UserBus, con, ConnectionOwner.User); - if (connection.Settings.ContainsKey ("802-11-wireless")) - connection = new WirelessConnection (UserBus, con, ConnectionOwner.User); - else if (connection.Settings.ContainsKey ("802-3-ethernet")) - connection = new WiredConnection (UserBus, con, ConnectionOwner.User); - else - continue; - - //connection.ConnectionRemoved += OnNetworkConnectionRemoved; - UserConnections.Add (connection); + try { + foreach (string con in UserConnectionManager.BusObject.ListConnections ()) + { + NetworkConnection connection = new NetworkConnection (UserBus, con, ConnectionOwner.User); + if (connection.Settings.ContainsKey ("802-11-wireless")) + connection = new WirelessConnection (UserBus, con, ConnectionOwner.User); + else if (connection.Settings.ContainsKey ("802-3-ethernet")) + connection = new WiredConnection (UserBus, con, ConnectionOwner.User); + else + continue; + + //connection.ConnectionRemoved += OnNetworkConnectionRemoved; + UserConnections.Add (connection); + } + } catch (Exception e) { + Log.Error (e.Message); + Log.Debug (e.StackTrace); } } } diff -Nru docky-2.0.4/StandardPlugins/NetworkManager/src/NetworkManagerDocklet.cs docky-2.0.5/StandardPlugins/NetworkManager/src/NetworkManagerDocklet.cs --- docky-2.0.4/StandardPlugins/NetworkManager/src/NetworkManagerDocklet.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/NetworkManager/src/NetworkManagerDocklet.cs 2010-06-26 15:47:36.543229000 +0200 @@ -122,15 +122,15 @@ string APIconFromStrength (byte strength) { - string icon = "gnome-netstatus-{0}"; + string icon = "network-wireless-connected-{0};;gnome-netstatus-{1};;nm-signal-{0}"; if (strength >= 75) - icon = string.Format (icon, "75-100"); + icon = string.Format (icon, "75", "75-100"); else if (strength >= 50) - icon = string.Format (icon, "50-74"); + icon = string.Format (icon, "50", "50-74"); else if (strength >= 25) - icon = string.Format (icon, "25-49"); + icon = string.Format (icon, "25", "25-49"); else - icon = string.Format (icon, "0-24"); + icon = string.Format (icon, "00", "0-24"); return icon; } diff -Nru docky-2.0.4/StandardPlugins/NPR/Makefile.in docky-2.0.5/StandardPlugins/NPR/Makefile.in --- docky-2.0.4/StandardPlugins/NPR/Makefile.in 2010-05-31 08:00:11.305621395 +0200 +++ docky-2.0.5/StandardPlugins/NPR/Makefile.in 2010-07-01 19:05:32.405184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/NPR/src/NPRItemProvider.cs docky-2.0.5/StandardPlugins/NPR/src/NPRItemProvider.cs --- docky-2.0.4/StandardPlugins/NPR/src/NPRItemProvider.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/NPR/src/NPRItemProvider.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 Chris Szikszoy +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -80,20 +81,18 @@ StationDockItem sdi = items.Cast ().Where (s => s.OwnedStation == station).First (); items.Remove (sdi); - Items = items; - - sdi.Dispose (); MaybeAddNullStation (); + Items = items; + + sdi.Dispose (); } void MaybeAddNullStation () { if (items.Count () == 0) items.Add (new StationDockItem (NPR.LookupStation (-1))); - - Items = items; } public void ReloadStations () @@ -101,12 +100,12 @@ items.Clear (); NPR.MyStations.ToList ().ForEach (s => { - items.Add (new StationDockItem (NPR.LookupStation (s))); + items.Add (new StationDockItem (NPR.LookupStation (s))); }); - - Items = items; MaybeAddNullStation (); + + Items = items; } } } diff -Nru docky-2.0.4/StandardPlugins/NPR/src/Station.cs docky-2.0.5/StandardPlugins/NPR/src/Station.cs --- docky-2.0.4/StandardPlugins/NPR/src/Station.cs 2010-05-28 16:49:50.255126135 +0200 +++ docky-2.0.5/StandardPlugins/NPR/src/Station.cs 2010-06-26 15:47:36.543229000 +0200 @@ -64,8 +64,7 @@ public Station (int id) { IsLoaded = false; - Icon = DefaultLogo = "nprlogo.gif@" + GetType ().Assembly.FullName; - DockServices.System.ConnectionStatusChanged += HandleConnectionStatusChanged; + ForcePixbuf = DockServices.Drawing.LoadIcon ("nprlogo.gif@" + GetType ().Assembly.FullName, 128, -1); ID = id; if (ID > 0) { @@ -132,7 +131,7 @@ // delete the bad logofile, if it exists if (System.IO.File.Exists (LogoFile)) System.IO.File.Delete (LogoFile); - Icon = DefaultLogo; + ForcePixbuf = DockServices.Drawing.LoadIcon ("nprlogo.gif@" + GetType ().Assembly.FullName, 128, -1); } IsLoaded = true; diff -Nru docky-2.0.4/StandardPlugins/NPR/src/StationDockItem.cs docky-2.0.5/StandardPlugins/NPR/src/StationDockItem.cs --- docky-2.0.4/StandardPlugins/NPR/src/StationDockItem.cs 2010-05-28 16:49:50.266377057 +0200 +++ docky-2.0.5/StandardPlugins/NPR/src/StationDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -47,7 +47,10 @@ OwnedStation = station; - Icon = OwnedStation.Icon; + if (OwnedStation.ForcePixbuf != null) + ForcePixbuf = OwnedStation.ForcePixbuf.Copy (); + else + Icon = OwnedStation.Icon; OwnedStation.FinishedLoading += delegate { SetInfo (); @@ -59,7 +62,10 @@ void SetInfo () { - Icon = OwnedStation.Icon; + if (OwnedStation.ForcePixbuf != null) + ForcePixbuf = OwnedStation.ForcePixbuf.Copy (); + else + Icon = OwnedStation.Icon; string hover = (string.IsNullOrEmpty (OwnedStation.Description)) ? OwnedStation.Name : string.Format ("{0} : {1}", OwnedStation.Name, OwnedStation.Description); if (OwnedStation.ID < 1) diff -Nru docky-2.0.4/StandardPlugins/RecentDocuments/Makefile.in docky-2.0.5/StandardPlugins/RecentDocuments/Makefile.in --- docky-2.0.4/StandardPlugins/RecentDocuments/Makefile.in 2010-05-31 08:00:11.415621454 +0200 +++ docky-2.0.5/StandardPlugins/RecentDocuments/Makefile.in 2010-07-01 19:05:32.535184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/RecentDocuments/src/RecentDocumentsItem.cs docky-2.0.5/StandardPlugins/RecentDocuments/src/RecentDocumentsItem.cs --- docky-2.0.4/StandardPlugins/RecentDocuments/src/RecentDocumentsItem.cs 2010-05-25 13:11:18.425680210 +0200 +++ docky-2.0.5/StandardPlugins/RecentDocuments/src/RecentDocumentsItem.cs 2010-06-30 10:26:14.750310993 +0200 @@ -1,5 +1,6 @@ // -// Copyright (C) 2009 Jason Smith +// Copyright (C) 2009 Chris Szikszoy, Robert Dyer +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -40,6 +41,8 @@ #endregion + public bool CanClear { get; protected set; } + const int NumRecentDocs = 7; List RecentDocs; @@ -59,7 +62,9 @@ currentFile = value; if (watcher != null) { + watcher.Cancel (); watcher.Changed -= WatcherChanged; + watcher.Dispose (); watcher = null; } @@ -88,8 +93,11 @@ void RefreshRecentDocs () { GLib.List recent_items = new GLib.List (Gtk.RecentManager.Default.Items.Handle, typeof(Gtk.RecentInfo)); + CanClear = recent_items.Cast ().Count () != 0; lock (RecentDocs) { + foreach (FileDockItem f in RecentDocs) + f.Dispose (); RecentDocs.Clear (); RecentDocs.AddRange (recent_items.Cast () @@ -177,7 +185,11 @@ public override void Dispose () { + foreach (FileDockItem f in RecentDocs) + f.Dispose (); + RecentDocs.Clear (); if (watcher != null) { + watcher.Cancel (); watcher.Changed -= WatcherChanged; watcher.Dispose (); } diff -Nru docky-2.0.4/StandardPlugins/RecentDocuments/src/RecentDocumentsItemProvider.cs docky-2.0.5/StandardPlugins/RecentDocuments/src/RecentDocumentsItemProvider.cs --- docky-2.0.4/StandardPlugins/RecentDocuments/src/RecentDocumentsItemProvider.cs 2010-04-11 08:14:01.055356325 +0200 +++ docky-2.0.5/StandardPlugins/RecentDocuments/src/RecentDocumentsItemProvider.cs 2010-06-30 10:29:37.660310992 +0200 @@ -113,7 +113,7 @@ public override MenuList GetMenuItems (AbstractDockItem item) { MenuList list = base.GetMenuItems (item); - list[MenuListContainer.Footer].Add (new Docky.Menus.MenuItem (Catalog.GetString ("_Clear Recent Documents..."), "edit-clear", (o, a) => ClearRecent ())); + list[MenuListContainer.Footer].Add (new Docky.Menus.MenuItem (Catalog.GetString ("_Clear Recent Documents..."), "edit-clear", (o, a) => ClearRecent (), !docs.CanClear)); return list; } } diff -Nru docky-2.0.4/StandardPlugins/Trash/Makefile.in docky-2.0.5/StandardPlugins/Trash/Makefile.in --- docky-2.0.4/StandardPlugins/Trash/Makefile.in 2010-05-31 08:00:11.465621364 +0200 +++ docky-2.0.5/StandardPlugins/Trash/Makefile.in 2010-07-01 19:05:32.605184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Trash/src/TrashDockItem.cs docky-2.0.5/StandardPlugins/Trash/src/TrashDockItem.cs --- docky-2.0.4/StandardPlugins/Trash/src/TrashDockItem.cs 2010-05-25 19:00:18.626114291 +0200 +++ docky-2.0.5/StandardPlugins/Trash/src/TrashDockItem.cs 2010-06-26 15:47:36.543229000 +0200 @@ -232,5 +232,14 @@ OnPaintNeeded (); }); } + + public override void Dispose () + { + TrashMonitor.Cancel (); + TrashMonitor.Changed -= HandleChanged; + TrashMonitor.Dispose (); + + base.Dispose (); + } } } diff -Nru docky-2.0.4/StandardPlugins/Weather/Makefile.in docky-2.0.5/StandardPlugins/Weather/Makefile.in --- docky-2.0.4/StandardPlugins/Weather/Makefile.in 2010-05-31 08:00:11.515621367 +0200 +++ docky-2.0.5/StandardPlugins/Weather/Makefile.in 2010-07-01 19:05:32.675184001 +0200 @@ -199,6 +199,8 @@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ diff -Nru docky-2.0.4/StandardPlugins/Weather/src/Sources/WeatherChannelWeatherSource.cs docky-2.0.5/StandardPlugins/Weather/src/Sources/WeatherChannelWeatherSource.cs --- docky-2.0.4/StandardPlugins/Weather/src/Sources/WeatherChannelWeatherSource.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Weather/src/Sources/WeatherChannelWeatherSource.cs 2010-06-26 15:47:36.543229000 +0200 @@ -167,12 +167,12 @@ int temp; Int32.TryParse (item.SelectSingleNode ("tmp").InnerText, out temp); Temp = temp; + FeelsLike = temp; if (!item.SelectSingleNode ("flik").InnerText.Equals ("N/A")) { Int32.TryParse (item.SelectSingleNode ("flik").InnerText, out temp); FeelsLike = temp; - } else - FeelsLike = Temp; + } Int32.TryParse(item.SelectSingleNode ("wind").SelectSingleNode ("s").InnerText, out temp); Wind = temp; diff -Nru docky-2.0.4/StandardPlugins/Weather/src/Sources/WunderWeatherSource.cs docky-2.0.5/StandardPlugins/Weather/src/Sources/WunderWeatherSource.cs --- docky-2.0.4/StandardPlugins/Weather/src/Sources/WunderWeatherSource.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Weather/src/Sources/WunderWeatherSource.cs 2010-06-26 15:47:36.543229000 +0200 @@ -190,9 +190,11 @@ double tmp; Double.TryParse(item.SelectSingleNode ("temp_f").InnerText, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out tmp); Temp = (int)tmp; + FeelsLike = (int)tmp; } else { Int32.TryParse (item.SelectSingleNode ("temp_f").InnerText, out temp); Temp = temp; + FeelsLike = temp; } if (!item.SelectSingleNode ("heat_index_f").InnerText.Equals ("NA") && item.SelectSingleNode ("heat_index_f").InnerText.Length > 0) { @@ -201,8 +203,7 @@ } else if (!item.SelectSingleNode ("windchill_f").InnerText.Equals ("NA") && item.SelectSingleNode ("windchill_f").InnerText.Length > 0) { Int32.TryParse (item.SelectSingleNode ("windchill_f").InnerText, out temp); FeelsLike = temp; - } else - FeelsLike = Temp; + } Int32.TryParse (item.SelectSingleNode ("wind_mph").InnerText, out temp); Wind = temp; diff -Nru docky-2.0.4/StandardPlugins/Weather/src/WeatherDocklet.cs docky-2.0.5/StandardPlugins/Weather/src/WeatherDocklet.cs --- docky-2.0.4/StandardPlugins/Weather/src/WeatherDocklet.cs 2010-03-09 12:08:41.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Weather/src/WeatherDocklet.cs 2010-06-26 15:47:36.543229000 +0200 @@ -152,30 +152,35 @@ int size = Math.Min (surface.Width, surface.Height); Context cr = surface.Context; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - - Pango.Rectangle inkRect, logicalRect; - - layout.Width = Pango.Units.FromPixels (size); - layout.SetText (WeatherController.Weather.Temp + WeatherUnits.TempUnit); - if (IsSmall) - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (size / 2.5)); - else - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (size / 3.5)); - - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo ((size - inkRect.Width) / 2, size - logicalRect.Height); - - Pango.CairoHelper.LayoutPath (cr, layout); - cr.LineWidth = 2; - cr.Color = new Cairo.Color (0, 0, 0, 0.8); - cr.StrokePreserve (); - - cr.Color = new Cairo.Color (1, 1, 1, 0.8); - cr.Fill (); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) + { + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + + Pango.Rectangle inkRect, logicalRect; + + layout.Width = Pango.Units.FromPixels (size); + layout.SetText (WeatherController.Weather.Temp + WeatherUnits.TempUnit); + if (IsSmall) + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (size / 2.5)); + else + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (size / 3.5)); + + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo ((size - inkRect.Width) / 2, size - logicalRect.Height); + + Pango.CairoHelper.LayoutPath (cr, layout); + cr.LineWidth = 2; + cr.Color = new Cairo.Color (0, 0, 0, 0.8); + cr.StrokePreserve (); + + cr.Color = new Cairo.Color (1, 1, 1, 0.8); + cr.Fill (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); + } } protected override Gdk.Pixbuf ProcessPixbuf (Gdk.Pixbuf pbuf) @@ -183,7 +188,7 @@ if (Status != WeatherDockletStatus.Error && Status != WeatherDockletStatus.Initializing) return pbuf; - return DockServices.Drawing.MonochromePixbuf (pbuf); + return pbuf.MonochromePixbuf (); } protected override ClickAnimation OnClicked (uint button, Gdk.ModifierType mod, double xPercent, double yPercent) diff -Nru docky-2.0.4/StandardPlugins/Weather/src/WeatherPainter.cs docky-2.0.5/StandardPlugins/Weather/src/WeatherPainter.cs --- docky-2.0.4/StandardPlugins/Weather/src/WeatherPainter.cs 2010-02-14 19:56:42.000000000 +0100 +++ docky-2.0.5/StandardPlugins/Weather/src/WeatherPainter.cs 2010-06-26 15:47:36.543229000 +0200 @@ -1,5 +1,6 @@ // // Copyright (C) 2009 GNOME Do +// Copyright (C) 2010 Robert Dyer // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -99,65 +100,71 @@ void DrawForecast (Cairo.Context cr) { int xOffset = BUTTON_SIZE; + int cellWidth = (Allocation.Width - 2 * BUTTON_SIZE) / (WeatherController.Weather.ForecastDays * 2); - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - Pango.Rectangle inkRect, logicalRect; - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (Allocation.Height); - - for (int day = 0; day < WeatherController.Weather.ForecastDays; day++) + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 5)); + Pango.Rectangle inkRect, logicalRect; - cr.Color = colorTitle; - layout.SetText (string.Format ("{0}", WeatherForecast.DayShortName (WeatherController.Weather.Forecasts [day].dow))); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + (Allocation.Height - inkRect.Width) / 2, 0); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (cellWidth); - cr.Color = colorHigh; - layout.SetText (string.Format ("{0}{1}", WeatherController.Weather.Forecasts [day].high, WeatherUnits.TempUnit)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + (Allocation.Height - inkRect.Width) / 2, Allocation.Height / 2 - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - - cr.Color = colorLow; - layout.SetText (string.Format ("{0}{1}", WeatherController.Weather.Forecasts [day].low, WeatherUnits.TempUnit)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + (Allocation.Height - inkRect.Width) / 2, Allocation.Height - logicalRect.Height); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - - using (Gdk.Pixbuf pbuf = DockServices.Drawing.LoadIcon (WeatherController.Weather.Forecasts [day].image, Allocation.Height - 5)) + for (int day = 0; day < WeatherController.Weather.ForecastDays; day++) { - Gdk.CairoHelper.SetSourcePixbuf (cr, pbuf, xOffset + Allocation.Height + 2, 5); - cr.PaintWithAlpha (WeatherController.Weather.Forecasts [day].chanceOf ? .6 : 1); - } - - if (WeatherController.Weather.Forecasts [day].chanceOf) - { - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 2)); - - layout.SetText ("?"); + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (cellWidth / 5)); + cr.Color = colorTitle; + layout.SetText (string.Format ("{0}", WeatherForecast.DayShortName (WeatherController.Weather.Forecasts [day].dow))); layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + Allocation.Height + (Allocation.Height - inkRect.Width) / 2, Allocation.Height / 2 - logicalRect.Height / 2); + cr.MoveTo (xOffset + (cellWidth - inkRect.Width) / 2, 0); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); - cr.LineWidth = 4; - cr.Color = new Cairo.Color (0, 0, 0, 0.3); + cr.Color = colorHigh; + layout.SetText (string.Format ("{0}{1}", WeatherController.Weather.Forecasts [day].high, WeatherUnits.TempUnit)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (xOffset + (cellWidth - inkRect.Width) / 2, Allocation.Height / 2 - logicalRect.Height / 2); Pango.CairoHelper.LayoutPath (cr, layout); - cr.StrokePreserve (); + cr.Fill (); - cr.Color = new Cairo.Color (1, 1, 1, .6); + cr.Color = colorLow; + layout.SetText (string.Format ("{0}{1}", WeatherController.Weather.Forecasts [day].low, WeatherUnits.TempUnit)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (xOffset + (cellWidth - inkRect.Width) / 2, Allocation.Height - logicalRect.Height); + Pango.CairoHelper.LayoutPath (cr, layout); cr.Fill (); + + using (Gdk.Pixbuf pbuf = DockServices.Drawing.LoadIcon (WeatherController.Weather.Forecasts [day].image, cellWidth - 5)) + { + Gdk.CairoHelper.SetSourcePixbuf (cr, pbuf, xOffset + cellWidth + 2, 5 + (Allocation.Height - cellWidth) / 2); + cr.PaintWithAlpha (WeatherController.Weather.Forecasts [day].chanceOf ? .6 : 1); + } + + if (WeatherController.Weather.Forecasts [day].chanceOf) + { + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (cellWidth / 2)); + + layout.SetText ("?"); + + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (xOffset + cellWidth + (cellWidth - inkRect.Width) / 2, Allocation.Height / 2 - logicalRect.Height / 2); + + cr.LineWidth = 4; + cr.Color = new Cairo.Color (0, 0, 0, 0.3); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.StrokePreserve (); + + cr.Color = new Cairo.Color (1, 1, 1, .6); + cr.Fill (); + } + + xOffset += 2 * cellWidth; } - xOffset += 2 * (Allocation.Height); + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } } @@ -186,43 +193,48 @@ if (max <= min) return; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - Pango.Rectangle inkRect, logicalRect; - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 5)); - - // high/low temp - layout.Width = Pango.Units.FromPixels (Allocation.Height); - cr.Color = colorHigh; - layout.SetText (string.Format ("{0}{1}", max, WeatherUnits.TempUnit)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (Allocation.Width - Allocation.Height + (Allocation.Height - inkRect.Width) / 2 - BUTTON_SIZE, Allocation.Height / 6 - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - - cr.Color = colorLow; - layout.SetText (string.Format ("{0}{1}", min, WeatherUnits.TempUnit)); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (Allocation.Width - Allocation.Height + (Allocation.Height - inkRect.Width) / 2 - BUTTON_SIZE, Allocation.Height * 6 / 9 - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - - // day names - layout.Width = Pango.Units.FromPixels (2 * Allocation.Height); - - cr.Color = colorTitle; - for (int day = 0; day < WeatherController.Weather.ForecastDays; day++) + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) { - layout.SetText (WeatherForecast.DayShortName (WeatherController.Weather.Forecasts [day].dow)); + Pango.Rectangle inkRect, logicalRect; + + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 5)); + + // high/low temp + layout.Width = Pango.Units.FromPixels (Allocation.Height); + cr.Color = colorHigh; + layout.SetText (string.Format ("{0}{1}", max, WeatherUnits.TempUnit)); layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (BUTTON_SIZE + day * Allocation.Height * 2 + (Allocation.Height - inkRect.Width) / 2, Allocation.Height * 8 / 9 - logicalRect.Height / 2); + cr.MoveTo (Allocation.Width - Allocation.Height + (Allocation.Height - inkRect.Width) / 2 - BUTTON_SIZE, Allocation.Height / 6 - logicalRect.Height / 2); Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + cr.Color = colorLow; + layout.SetText (string.Format ("{0}{1}", min, WeatherUnits.TempUnit)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (Allocation.Width - Allocation.Height + (Allocation.Height - inkRect.Width) / 2 - BUTTON_SIZE, Allocation.Height * 6 / 9 - logicalRect.Height / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + // day names + layout.Width = Pango.Units.FromPixels (2 * Allocation.Height); + + cr.Color = colorTitle; + for (int day = 0; day < WeatherController.Weather.ForecastDays; day++) + { + layout.SetText (WeatherForecast.DayShortName (WeatherController.Weather.Forecasts [day].dow)); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (BUTTON_SIZE + day * Allocation.Height * 2 + (Allocation.Height - inkRect.Width) / 2, Allocation.Height * 8 / 9 - logicalRect.Height / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + } + cr.Fill (); + cr.Save (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); } - cr.Fill (); - cr.Save (); // draw tick lines cr.Color = new Cairo.Color (0.627, 0.627, 0.627, .8); @@ -290,23 +302,28 @@ /// void DrawCurrentCondition (Cairo.Context cr) { - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - Pango.Rectangle inkRect, logicalRect; - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels ((int) ((Allocation.Width - 4 * BUTTON_SIZE) / 4.5)); - - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 3)); - - cr.Color = new Cairo.Color (1, 1, 1, 1); - - layout.SetText (WeatherController.Weather.City); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (2 * BUTTON_SIZE, Allocation.Height / 3.5 - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) + { + Pango.Rectangle inkRect, logicalRect; + + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels ((int) ((Allocation.Width - 4 * BUTTON_SIZE) / 4.5)); + + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 3)); + + cr.Color = new Cairo.Color (1, 1, 1, 1); + + layout.SetText (WeatherController.Weather.City); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (2 * BUTTON_SIZE, Allocation.Height / 3.5 - logicalRect.Height / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); + } DrawCondition (cr, WeatherController.Weather.SupportsFeelsLike ? 1 : 2, 2, Catalog.GetString ("Humidity"), WeatherController.Weather.Humidity); @@ -325,36 +342,41 @@ { int xWidth = (Allocation.Width - 4 * BUTTON_SIZE) / 8; - Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout (); - Pango.Rectangle inkRect, logicalRect; - - layout.FontDescription = new Gtk.Style().FontDescription; - layout.FontDescription.Weight = Pango.Weight.Bold; - layout.Ellipsize = Pango.EllipsizeMode.None; - layout.Width = Pango.Units.FromPixels (xWidth); - - if (WeatherController.Weather.ForecastDays < 6) - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 6.5)); - else - layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 4.5)); - - int xOffset = 2 * BUTTON_SIZE + (column - 1) * 2 * xWidth; - int yOffset = row == 1 ? Allocation.Height : (int) (Allocation.Height * 2.5); - yOffset = (int) (yOffset / 3.5); - - cr.Color = new Cairo.Color (1, 1, 1, 0.9); - layout.SetText (label); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + (xWidth - inkRect.Width) / 2, yOffset - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); - - cr.Color = new Cairo.Color (1, 1, 1, 0.7); - layout.SetText (val); - layout.GetPixelExtents (out inkRect, out logicalRect); - cr.MoveTo (xOffset + xWidth + (xWidth - inkRect.Width) / 2, yOffset - logicalRect.Height / 2); - Pango.CairoHelper.LayoutPath (cr, layout); - cr.Fill (); + using (Pango.Layout layout = DockServices.Drawing.ThemedPangoLayout ()) + { + Pango.Rectangle inkRect, logicalRect; + + layout.FontDescription = new Gtk.Style().FontDescription; + layout.FontDescription.Weight = Pango.Weight.Bold; + layout.Ellipsize = Pango.EllipsizeMode.None; + layout.Width = Pango.Units.FromPixels (xWidth); + + if (WeatherController.Weather.ForecastDays < 6) + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 6.5)); + else + layout.FontDescription.AbsoluteSize = Pango.Units.FromPixels ((int) (Allocation.Height / 4.5)); + + int xOffset = 2 * BUTTON_SIZE + (column - 1) * 2 * xWidth; + int yOffset = row == 1 ? Allocation.Height : (int) (Allocation.Height * 2.5); + yOffset = (int) (yOffset / 3.5); + + cr.Color = new Cairo.Color (1, 1, 1, 0.9); + layout.SetText (label); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (xOffset + (xWidth - inkRect.Width) / 2, yOffset - logicalRect.Height / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + cr.Color = new Cairo.Color (1, 1, 1, 0.7); + layout.SetText (val); + layout.GetPixelExtents (out inkRect, out logicalRect); + cr.MoveTo (xOffset + xWidth + (xWidth - inkRect.Width) / 2, yOffset - logicalRect.Height / 2); + Pango.CairoHelper.LayoutPath (cr, layout); + cr.Fill (); + + layout.FontDescription.Dispose (); + layout.Context.Dispose (); + } } ///