--- gnome-panel-2.14.1.orig/debian/patches/09_help_submenu.patch +++ gnome-panel-2.14.1/debian/patches/09_help_submenu.patch @@ -0,0 +1,46 @@ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-menu-items.c gnome-panel-2.14.1.new/gnome-panel/panel-menu-items.c +--- gnome-panel-2.14.1/gnome-panel/panel-menu-items.c 2006-04-14 14:52:06.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-menu-items.c 2006-04-14 14:52:27.000000000 +0200 +@@ -721,6 +721,7 @@ + { + gboolean add_separator; + GList *children; ++ GtkWidget *add_menu, *item; + + if (!g_object_get_data (G_OBJECT (menu), "panel-menu-needs-appending")) + return; +@@ -745,7 +746,33 @@ + if (add_separator) + add_menu_separator (menu); + +- panel_menu_items_append_from_desktop (menu, "yelp.desktop", NULL); ++ item = gtk_image_menu_item_new (); ++ setup_menu_item_with_icon (item, panel_menu_icon_get_size (), ++ "stock_help-agent", NULL, ++ _("Help"), TRUE); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); ++ gtk_widget_show (item); ++ ++ add_menu = create_empty_menu (); ++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), add_menu); ++ ++ panel_menu_items_append_from_desktop (add_menu, "yelp.desktop", _("System Documentation")); ++ ++ panel_menu_items_append_place_item ("gnome-globe", ++ _("Online Support"), ++ _("Online Support"), ++ add_menu, ++ G_CALLBACK (activate_uri), ++ "http://help.ubuntu.com"); ++ ++ panel_menu_items_append_place_item ("config-language", ++ _("Find Local Support"), ++ _("Find Local Support"), ++ add_menu, ++ G_CALLBACK (activate_uri), ++ "http://www.ubuntu.com/support/marketplace"); ++ + panel_menu_items_append_from_desktop (menu, "gnome-about.desktop", NULL); + + if (g_file_test (DATADIR"/omf/about-ubuntu/about-ubuntu-C.omf", --- gnome-panel-2.14.1.orig/debian/patches/08_default_clock_setting.patch +++ gnome-panel-2.14.1/debian/patches/08_default_clock_setting.patch @@ -0,0 +1,12 @@ +diff -Nur gnome-panel-2.13.91/applets/clock/clock.schemas.in gnome-panel-2.13.91.new/applets/clock/clock.schemas.in +--- gnome-panel-2.13.91/applets/clock/clock.schemas.in 2005-12-30 12:13:11.000000000 +0100 ++++ gnome-panel-2.13.91.new/applets/clock/clock.schemas.in 2006-03-02 18:58:37.000000000 +0100 +@@ -69,7 +69,7 @@ + /schemas/apps/clock_applet/prefs/show_date + clock-applet + bool +- false ++ true + + Show date in clock + If true, display date in the clock, in addition to time. --- gnome-panel-2.14.1.orig/debian/patches/07_use_beagle.patch +++ gnome-panel-2.14.1/debian/patches/07_use_beagle.patch @@ -0,0 +1,21 @@ +--- gnome-panel-2.13.90/gnome-panel/panel-menu-items.c.use-beagle 2006-02-13 13:26:43.000000000 -0500 ++++ gnome-panel-2.13.90/gnome-panel/panel-menu-items.c 2006-02-13 13:28:08.000000000 -0500 +@@ -634,9 +634,15 @@ + + add_menu_separator (places_menu); + +- panel_menu_items_append_from_desktop (places_menu, +- "gnome-search-tool.desktop", +- NULL); ++ if (panel_is_program_in_path ("beagle-search")) { ++ panel_menu_items_append_from_desktop (places_menu, ++ "beagle-search.desktop", ++ NULL); ++ } else { ++ panel_menu_items_append_from_desktop (places_menu, ++ "gnome-search-tool.desktop", ++ NULL); ++ } + + *recent_view = panel_recent_append_documents_menu (places_menu, + *recent_view); --- gnome-panel-2.14.1.orig/debian/patches/11_applet_use_session_dialog.patch +++ gnome-panel-2.14.1/debian/patches/11_applet_use_session_dialog.patch @@ -0,0 +1,67 @@ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-action-button.c gnome-panel-2.14.1.new/gnome-panel/panel-action-button.c +--- gnome-panel-2.14.1/gnome-panel/panel-action-button.c 2006-02-12 13:36:56.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-action-button.c 2006-04-14 15:58:55.000000000 +0200 +@@ -153,9 +153,15 @@ + static void + panel_action_logout (GtkWidget *widget) + { +- panel_logout_new (PANEL_LOGOUT_DIALOG_LOGOUT, +- gtk_widget_get_screen (widget), +- gtk_get_current_event_time ()); ++ const char *key; ++ ++ if (!gconf_client_get_bool (panel_gconf_get_client (), "/apps/panel/global/upstream_session", NULL)) ++ panel_session_request_logout (); ++ else { ++ panel_logout_new (PANEL_LOGOUT_DIALOG_LOGOUT, ++ gtk_widget_get_screen (widget), ++ gtk_get_current_event_time ()); ++ } + } + + static void +@@ -169,7 +175,8 @@ + static gboolean + panel_action_shutdown_is_disabled (void) + { +- return (panel_lockdown_get_disable_log_out() || ++ return (!gconf_client_get_bool (panel_gconf_get_client (), "/apps/panel/global/upstream_session", NULL) || ++ panel_lockdown_get_disable_log_out() || + !gdm_supports_logout_action (GDM_LOGOUT_ACTION_SHUTDOWN)); + } + +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-global.schemas.in gnome-panel-2.14.1.new/gnome-panel/panel-global.schemas.in +--- gnome-panel-2.14.1/gnome-panel/panel-global.schemas.in 2005-06-06 22:18:18.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-global.schemas.in 2006-04-14 15:58:23.000000000 +0200 +@@ -195,6 +195,19 @@ + + + ++ /schemas/apps/panel/global/upstream_session ++ /apps/panel/global/upstream_session ++ panel ++ bool ++ false ++ ++ Use the upstream session dialogs instead of the Ubuntu one ++ If true, the panel will use the upstream dialogs instead of the Ubuntu one ++ ++ ++ ++ ++ + /schemas/apps/panel/global/locked_down + /apps/panel/global/locked_down + panel +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-session.c gnome-panel-2.14.1.new/gnome-panel/panel-session.c +--- gnome-panel-2.14.1/gnome-panel/panel-session.c 2006-01-16 18:42:06.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-session.c 2006-04-14 15:58:23.000000000 +0200 +@@ -54,7 +54,7 @@ + GNOME_SAVE_GLOBAL, + TRUE, + GNOME_INTERACT_ANY, +- TRUE, /* do not use the gnome-session gui */ ++ gconf_client_get_bool (panel_gconf_get_client (), "/apps/panel/global/upstream_session", NULL), /* use the gnome-session gui */ + TRUE); + + recursion_guard--; --- gnome-panel-2.14.1.orig/debian/patches/12_autoconf.patch +++ gnome-panel-2.14.1/debian/patches/12_autoconf.patch @@ -0,0 +1,1447 @@ +diff -Nur gnome-panel-2.13.91/configure gnome-panel-2.13.91.new/configure +--- gnome-panel-2.13.91/configure 2006-02-13 20:57:34.000000000 +0100 ++++ gnome-panel-2.13.91.new/configure 2006-02-14 13:26:33.000000000 +0100 +@@ -1249,7 +1249,7 @@ + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi +- cd $ac_popdir ++ cd "$ac_popdir" + done + fi + +@@ -3051,8 +3051,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3110,8 +3109,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3227,8 +3225,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3282,8 +3279,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3328,8 +3324,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3373,8 +3368,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3561,8 +3555,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3616,8 +3609,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4016,8 +4008,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4075,8 +4066,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4192,8 +4182,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4247,8 +4236,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4293,8 +4281,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4338,8 +4325,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4770,8 +4756,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -5495,7 +5480,7 @@ + ;; + *-*-irix6*) + # Find out which ABI we are using. +- echo '#line 5498 "configure"' > conftest.$ac_ext ++ echo '#line 5483 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -5615,8 +5600,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -5937,8 +5921,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6005,8 +5988,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6266,8 +6248,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6325,8 +6306,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6397,8 +6377,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6442,8 +6421,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -6915,7 +6893,7 @@ + + + # Provide some information about the compiler. +-echo "$as_me:6918:" \ ++echo "$as_me:6896:" \ + "checking for Fortran 77 compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` + { (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +@@ -6961,8 +6939,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -7011,8 +6988,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -8013,11 +7989,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8016: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:7992: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:8020: \$? = $ac_status" >&5 ++ echo "$as_me:7996: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -8275,11 +8251,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8278: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:8254: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:8282: \$? = $ac_status" >&5 ++ echo "$as_me:8258: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -8337,11 +8313,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:8340: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:8316: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:8344: \$? = $ac_status" >&5 ++ echo "$as_me:8320: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -8765,8 +8741,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -8826,8 +8801,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -9723,7 +9697,7 @@ + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) +- echo '#line 9726 "configure"' > conftest.$ac_ext ++ echo '#line 9700 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -10058,8 +10032,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10162,8 +10135,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10228,8 +10200,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10322,8 +10293,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10388,8 +10358,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10455,8 +10424,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10522,8 +10490,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -10598,7 +10565,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < conftest.$ac_ext <&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -11827,8 +11793,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -12944,11 +12909,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:12947: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:12912: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:12951: \$? = $ac_status" >&5 ++ echo "$as_me:12916: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -13006,11 +12971,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:13009: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:12974: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:13013: \$? = $ac_status" >&5 ++ echo "$as_me:12978: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -13521,7 +13486,7 @@ + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) +- echo '#line 13524 "configure"' > conftest.$ac_ext ++ echo '#line 13489 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -13856,8 +13821,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -13960,8 +13924,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14026,8 +13989,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14120,8 +14082,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14186,8 +14147,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14253,8 +14213,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14320,8 +14279,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_cxx_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_cxx_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -14396,7 +14354,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < conftest.$ac_ext <&5) ++ (eval echo "\"\$as_me:15340: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:15386: \$? = $ac_status" >&5 ++ echo "$as_me:15344: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -15441,11 +15399,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:15444: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:15402: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:15448: \$? = $ac_status" >&5 ++ echo "$as_me:15406: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -15859,8 +15817,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -15910,8 +15867,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_f77_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_f77_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -16807,7 +16763,7 @@ + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) +- echo '#line 16810 "configure"' > conftest.$ac_ext ++ echo '#line 16766 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -17584,11 +17540,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17587: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:17543: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:17591: \$? = $ac_status" >&5 ++ echo "$as_me:17547: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -17846,11 +17802,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17849: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:17805: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 +- echo "$as_me:17853: \$? = $ac_status" >&5 ++ echo "$as_me:17809: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. +@@ -17908,11 +17864,11 @@ + -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:17911: $lt_compile\"" >&5) ++ (eval echo "\"\$as_me:17867: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 +- echo "$as_me:17915: \$? = $ac_status" >&5 ++ echo "$as_me:17871: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized +@@ -18336,8 +18292,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -18397,8 +18352,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -19294,7 +19248,7 @@ + libsuff= + case "$host_cpu" in + x86_64*|s390x*|powerpc64*) +- echo '#line 19297 "configure"' > conftest.$ac_ext ++ echo '#line 19251 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? +@@ -19629,8 +19583,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -19733,8 +19686,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -19799,8 +19751,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -19893,8 +19844,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -19959,8 +19909,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -20026,8 +19975,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -20093,8 +20041,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -20169,7 +20116,7 @@ + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < conftest.$ac_ext <&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -21676,12 +21622,12 @@ + + if test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ORBit-2.0 >= \$ORBIT_REQUIRED gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnome-2.0 >= \$LIBGNOME_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= \$GNOME_VFS_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gconf-2.0 >= \$GCONF_REQUIRED libgnome-menu >= \$LIBGNOME_MENU_REQUIRED\"") >&5 +- ($PKG_CONFIG --exists --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED") 2>&5 ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ORBit-2.0 >= \$ORBIT_REQUIRED gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnome-2.0 >= \$LIBGNOME_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= \$GNOME_VFS_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gconf-2.0 >= \$GCONF_REQUIRED libgnome-menu >= \$LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED" 2>/dev/null` ++ pkg_cv_PANEL_CFLAGS=`$PKG_CONFIG --cflags "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -21690,12 +21636,12 @@ + fi + if test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ORBit-2.0 >= \$ORBIT_REQUIRED gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnome-2.0 >= \$LIBGNOME_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= \$GNOME_VFS_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gconf-2.0 >= \$GCONF_REQUIRED libgnome-menu >= \$LIBGNOME_MENU_REQUIRED\"") >&5 +- ($PKG_CONFIG --exists --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED") 2>&5 ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"ORBit-2.0 >= \$ORBIT_REQUIRED gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnome-2.0 >= \$LIBGNOME_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= \$GNOME_VFS_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gconf-2.0 >= \$GCONF_REQUIRED libgnome-menu >= \$LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED" 2>/dev/null` ++ pkg_cv_PANEL_LIBS=`$PKG_CONFIG --libs "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -21704,18 +21650,18 @@ + fi + + if test $pkg_failed = yes; then +- PANEL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED"` ++ PANEL_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration"` + # Put the nasty error message in config.log where it belongs + echo "$PANEL_PKG_ERRORS" 1>&5 + +- { { echo "$as_me:$LINENO: error: Package requirements (ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED) were not met. ++ { { echo "$as_me:$LINENO: error: Package requirements (ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration) were not met. + Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. + + Alternatively you may set the PANEL_CFLAGS and PANEL_LIBS environment variables + to avoid the need to call pkg-config. See the pkg-config man page for + more details." >&5 +-echo "$as_me: error: Package requirements (ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED) were not met. ++echo "$as_me: error: Package requirements (ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration) were not met. + Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. + +@@ -21848,12 +21794,12 @@ + + if test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED libwnck-1.0 >= \$LIBWNCK_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED\"") >&5 +- ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED") 2>&5 ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED libwnck-1.0 >= \$LIBWNCK_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_WNCKLET_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED" 2>/dev/null` ++ pkg_cv_WNCKLET_CFLAGS=`$PKG_CONFIG --cflags "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -21862,12 +21808,12 @@ + fi + if test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ +- { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED libwnck-1.0 >= \$LIBWNCK_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED\"") >&5 +- ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED") 2>&5 ++ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gdk-pixbuf-2.0 >= \$GDK_PIXBUF_REQUIRED gtk+-2.0 >= \$GTK_REQUIRED libgnomeui-2.0 >= \$LIBGNOMEUI_REQUIRED libwnck-1.0 >= \$LIBWNCK_REQUIRED libglade-2.0 >= \$LIBGLADE_REQUIRED gnome-desktop-2.0 >= \$LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration\"") >&5 ++ ($PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- pkg_cv_WNCKLET_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED" 2>/dev/null` ++ pkg_cv_WNCKLET_LIBS=`$PKG_CONFIG --libs "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration" 2>/dev/null` + else + pkg_failed=yes + fi +@@ -21876,18 +21822,18 @@ + fi + + if test $pkg_failed = yes; then +- WNCKLET_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED"` ++ WNCKLET_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration"` + # Put the nasty error message in config.log where it belongs + echo "$WNCKLET_PKG_ERRORS" 1>&5 + +- { { echo "$as_me:$LINENO: error: Package requirements (gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED) were not met. ++ { { echo "$as_me:$LINENO: error: Package requirements (gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration) were not met. + Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. + + Alternatively you may set the WNCKLET_CFLAGS and WNCKLET_LIBS environment variables + to avoid the need to call pkg-config. See the pkg-config man page for + more details." >&5 +-echo "$as_me: error: Package requirements (gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED) were not met. ++echo "$as_me: error: Package requirements (gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration) were not met. + Consider adjusting the PKG_CONFIG_PATH environment variable if you + installed software in a non-standard prefix. + +@@ -22182,8 +22128,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22255,8 +22200,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22310,8 +22254,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22382,8 +22325,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22437,8 +22379,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22517,8 +22458,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22624,8 +22564,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22678,9 +22617,12 @@ + esac + + if test $pango_omitted_x_deps = yes ; then ++ ++if test "x$ac_path_x_has_been_run" != xyes; then + echo "$as_me:$LINENO: checking for X" >&5 + echo $ECHO_N "checking for X... $ECHO_C" >&6 + ++ac_path_x_has_been_run=yes + + # Check whether --with-x or --without-x was given. + if test "${with_x+set}" = set; then +@@ -22773,7 +22715,7 @@ + /usr/openwin/share/include' + + if test "$ac_x_includes" = no; then +- # Guess where to find include files, by looking for Intrinsic.h. ++ # Guess where to find include files, by looking for a specified header file. + # First, try using that file with no special directory specified. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -22781,7 +22723,7 @@ + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + _ACEOF + if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +@@ -22808,7 +22750,7 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + for ac_dir in $ac_x_header_dirs; do +- if test -r "$ac_dir/X11/Intrinsic.h"; then ++ if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +@@ -22822,18 +22764,18 @@ + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS +- LIBS="-lXt $LIBS" ++ LIBS="-lX11 $LIBS" + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include ++#include + int + main () + { +-XtMalloc (0) ++XrmInitialize () + ; + return 0; + } +@@ -22847,8 +22789,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -22872,7 +22813,7 @@ + do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl; do +- if test -r $ac_dir/libXt.$ac_extension; then ++ if test -r $ac_dir/libX11.$ac_extension; then + ac_x_libraries=$ac_dir + break 2 + fi +@@ -22908,10 +22849,15 @@ + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" +- echo "$as_me:$LINENO: result: libraries $x_libraries, headers $x_includes" >&5 +-echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 ++ # It might be that x_includes is empty (headers are found in the ++ # standard search path. Then output the corresponding message ++ ac_out_x_includes=$x_includes ++ test "x$x_includes" = x && ac_out_x_includes="in standard search path" ++ echo "$as_me:$LINENO: result: libraries $x_libraries, headers $ac_out_x_includes" >&5 ++echo "${ECHO_T}libraries $x_libraries, headers $ac_out_x_includes" >&6 + fi + ++fi + if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +@@ -22959,8 +22905,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23011,8 +22956,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23088,8 +23032,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23144,8 +23087,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23213,8 +23155,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23322,8 +23263,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23387,8 +23327,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23456,8 +23395,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23561,8 +23499,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23626,8 +23563,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23724,8 +23660,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23789,8 +23724,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23887,8 +23821,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -23952,8 +23885,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24032,8 +23964,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24133,8 +24064,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24279,8 +24209,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24351,8 +24280,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24496,8 +24424,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24555,8 +24482,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24653,8 +24579,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24733,8 +24658,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24798,8 +24722,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24863,8 +24786,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -24941,8 +24863,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -25006,8 +24927,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -25123,8 +25043,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -25291,8 +25210,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -25425,8 +25343,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -25511,8 +25428,7 @@ + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' ++ { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -27217,11 +27133,6 @@ + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + +- if test x"$ac_file" != x-; then +- { echo "$as_me:$LINENO: creating $ac_file" >&5 +-echo "$as_me: creating $ac_file" >&6;} +- rm -f "$ac_file" +- fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ +@@ -27260,6 +27171,12 @@ + fi;; + esac + done` || { (exit 1); exit 1; } ++ ++ if test x"$ac_file" != x-; then ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ rm -f "$ac_file" ++ fi + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +diff -Nur gnome-panel-2.13.91/gnome-panel/Makefile.in gnome-panel-2.13.91.new/gnome-panel/Makefile.in +--- gnome-panel-2.13.91/gnome-panel/Makefile.in 2006-02-13 20:57:37.000000000 +0100 ++++ gnome-panel-2.13.91.new/gnome-panel/Makefile.in 2006-02-14 13:26:27.000000000 +0100 +@@ -91,7 +91,9 @@ + panel-multiscreen.$(OBJEXT) panel-a11y.$(OBJEXT) \ + panel-bindings.$(OBJEXT) panel-profile.$(OBJEXT) \ + panel-force-quit.$(OBJEXT) panel-lockdown.$(OBJEXT) \ +- panel-addto.$(OBJEXT) panel-logout.$(OBJEXT) \ ++ panel-addto.$(OBJEXT) panel-addto-canvas.$(OBJEXT) \ ++ panel-addto-rounded-rect.$(OBJEXT) \ ++ panel-addto-event-box.$(OBJEXT) panel-logout.$(OBJEXT) \ + panel-gdm.$(OBJEXT) $(am__objects_4) $(am__objects_1) + am__objects_6 = $(am__objects_1) $(am__objects_1) + am_gnome_panel_OBJECTS = $(am__objects_2) $(am__objects_3) \ +@@ -428,6 +430,9 @@ + panel-force-quit.c \ + panel-lockdown.c \ + panel-addto.c \ ++ panel-addto-canvas.c \ ++ panel-addto-rounded-rect.c \ ++ panel-addto-event-box.c \ + panel-logout.c \ + panel-gdm.c \ + $(EGG_RECENT_FILES_C) \ +@@ -476,6 +481,10 @@ + panel-force-quit.h \ + panel-lockdown.h \ + panel-addto.h \ ++ panel-addto-canvas.h \ ++ panel-addto-rounded-rect.h \ ++ panel-addto-rounded-rect-pixbuf.h \ ++ panel-addto-event-box.h \ + panel-logout.h \ + panel-gdm.h \ + $(EGG_RECENT_FILES_H) \ +@@ -649,6 +658,9 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-a11y.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-action-button.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-action-protocol.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-addto-canvas.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-addto-event-box.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-addto-rounded-rect.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-addto.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-applet-frame.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/panel-background-monitor.Po@am__quote@ --- gnome-panel-2.14.1.orig/debian/patches/01_distrologo.patch +++ gnome-panel-2.14.1/debian/patches/01_distrologo.patch @@ -0,0 +1,124 @@ +Index: panel-addto.c +=================================================================== +RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-addto.c,v +retrieving revision 1.38 +diff -u -p -r1.38 panel-addto.c +--- panel-addto.c 22 Jul 2005 07:36:55 -0000 1.38 ++++ gnome-panel/panel-addto.c 28 Sep 2005 20:49:56 -0000 +@@ -203,6 +203,15 @@ panel_addto_prepend_internal_applets (GS + internal_addto_items [i].description = _(internal_addto_items [i].description); + } + ++ if (internal_addto_items [i].type == PANEL_ADDTO_MENU || ++ internal_addto_items [i].type == PANEL_ADDTO_MENUBAR) { ++ const char *logo; ++ ++ logo = panel_get_distributor_logo (); ++ if (logo != NULL) ++ internal_addto_items [i].icon = logo; ++ } ++ + list = g_slist_prepend (list, &internal_addto_items [i]); + } + +Index: panel-menu-bar.c +=================================================================== +RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-menu-bar.c,v +retrieving revision 1.65 +diff -u -p -r1.65 panel-menu-bar.c +--- panel-menu-bar.c 4 Aug 2005 07:08:24 -0000 1.65 ++++ gnome-panel/panel-menu-bar.c 28 Sep 2005 20:49:56 -0000 +@@ -69,6 +69,7 @@ panel_menu_bar_instance_init (PanelMenuB + PanelMenuBarClass *klass) + { + GtkWidget *image; ++ const char *logo; + + menubar->priv = PANEL_MENU_BAR_GET_PRIVATE (menubar); + +@@ -77,8 +78,15 @@ panel_menu_bar_instance_init (PanelMenuB + menubar->priv->applications_menu = create_applications_menu ("applications.menu", NULL); + + menubar->priv->applications_item = gtk_image_menu_item_new_with_label (_("Applications")); +- image = gtk_image_new_from_icon_name (PANEL_GNOME_LOGO_ICON, +- panel_menu_bar_icon_get_size ()); ++ ++ logo = panel_get_distributor_logo (); ++ if (logo != NULL) ++ image = gtk_image_new_from_icon_name (logo, ++ panel_menu_bar_icon_get_size ()); ++ else ++ image = gtk_image_new_from_icon_name (PANEL_GNOME_LOGO_ICON, ++ panel_menu_bar_icon_get_size ()); ++ + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menubar->priv->applications_item), + image); + +Index: panel-menu-button.c +=================================================================== +RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-menu-button.c,v +retrieving revision 1.45 +diff -u -p -r1.45 panel-menu-button.c +--- panel-menu-button.c 18 Sep 2005 07:29:05 -0000 1.45 ++++ gnome-panel/panel-menu-button.c 28 Sep 2005 20:49:57 -0000 +@@ -736,8 +736,15 @@ panel_menu_button_get_icon (PanelMenuBut + retval = g_strdup (gmenu_tree_directory_get_icon (directory)); + } + +- if (!retval) +- retval = g_strdup (PANEL_MAIN_MENU_ICON); ++ if (!retval) { ++ const char *logo; ++ ++ logo = panel_get_distributor_logo (); ++ if (logo != NULL) ++ retval = g_strdup (logo); ++ else ++ retval = g_strdup (PANEL_MAIN_MENU_ICON); ++ } + + return retval; + } +Index: panel-util.c +=================================================================== +RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-util.c,v +retrieving revision 1.159 +diff -u -p -r1.159 panel-util.c +--- panel-util.c 2 Aug 2005 10:10:49 -0000 1.159 ++++ gnome-panel/panel-util.c 28 Sep 2005 20:49:57 -0000 +@@ -872,3 +872,19 @@ panel_lookup_in_data_dirs (const char *b + + return NULL; + } ++ ++#define PANEL_DISTRIBUTOR_LOGO_ICON "distributor-logo" ++const char * ++panel_get_distributor_logo (void) ++{ ++ int desired_width, desired_height; ++ ++ if (gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, ++ &desired_width, &desired_height) && ++ panel_find_icon (gtk_icon_theme_get_default (), ++ PANEL_DISTRIBUTOR_LOGO_ICON, ++ desired_height)) ++ return PANEL_DISTRIBUTOR_LOGO_ICON; ++ else ++ return NULL; ++} +Index: panel-util.h +=================================================================== +RCS file: /cvs/gnome/gnome-panel/gnome-panel/panel-util.h,v +retrieving revision 1.89 +diff -u -p -r1.89 panel-util.h +--- panel-util.h 2 Aug 2005 10:10:49 -0000 1.89 ++++ gnome-panel/panel-util.h 28 Sep 2005 20:49:57 -0000 +@@ -84,6 +84,8 @@ char *panel_make_unique_uri (const char + const char *suffix); + char *panel_lookup_in_data_dirs (const char *basename); + ++const char *panel_get_distributor_logo (void); ++ + G_END_DECLS + + #endif /* PANEL_UTIL_H */ --- gnome-panel-2.14.1.orig/debian/patches/04_default_panel_config.patch +++ gnome-panel-2.14.1/debian/patches/04_default_panel_config.patch @@ -0,0 +1,269 @@ +diff -Nur gnome-panel-2.13.91/gnome-panel/panel-default-setup.entries gnome-panel-2.13.91.new/gnome-panel/panel-default-setup.entries +--- gnome-panel-2.13.91/gnome-panel/panel-default-setup.entries 2006-01-22 12:34:03.000000000 +0100 ++++ gnome-panel-2.13.91.new/gnome-panel/panel-default-setup.entries 2006-02-16 16:22:10.000000000 +0100 +@@ -35,6 +35,9 @@ + + email_launcher + ++ ++ session_dialog ++ + + + +@@ -47,9 +50,6 @@ + + + +- window_menu +- +- + mixer + + +@@ -67,6 +67,9 @@ + + workspace_switcher + ++ ++ trashapplet ++ + + + +@@ -252,7 +255,7 @@ + objects/browser_launcher/launcher_location + /schemas/apps/panel/objects/launcher_location + +- epiphany.desktop ++ firefox.desktop + + + +@@ -306,7 +309,7 @@ + objects/email_launcher/launcher_location + /schemas/apps/panel/objects/launcher_location + +- evolution.desktop ++ evolution-mail.desktop + + + +@@ -319,61 +322,7 @@ + objects/email_launcher/menu_path/schemas/apps/panel/objects/menu_path + objects/email_launcher/action_type/schemas/apps/panel/objects/action_type + +- +- +- +- applets/window_menu/object_type +- /schemas/apps/panel/objects/object_type +- +- bonobo-applet +- +- +- +- applets/window_menu/toplevel_id +- /schemas/apps/panel/objects/toplevel_id +- +- top_panel +- +- +- +- applets/window_menu/position +- /schemas/apps/panel/objects/position +- +- 0 +- +- +- +- applets/window_menu/panel_right_stick +- /schemas/apps/panel/objects/panel_right_stick +- +- true +- +- +- +- applets/window_menu/locked +- /schemas/apps/panel/objects/locked +- +- true +- +- +- +- applets/window_menu/bonobo_iid +- /schemas/apps/panel/objects/bonobo_iid +- +- OAFIID:GNOME_WindowMenuApplet +- +- +- +- applets/window_menu/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id +- applets/window_menu/tooltip/schemas/apps/panel/objects/tooltip +- applets/window_menu/use_custom_icon/schemas/apps/panel/objects/use_custom_icon +- applets/window_menu/custom_icon/schemas/apps/panel/objects/custom_icon +- applets/window_menu/use_menu_path/schemas/apps/panel/objects/use_menu_path +- applets/window_menu/menu_path/schemas/apps/panel/objects/menu_path +- applets/window_menu/launcher_location/schemas/apps/panel/objects/launcher_location +- applets/window_menu/action_type/schemas/apps/panel/objects/action_type +- +- ++ + + + applets/mixer/object_type +@@ -393,7 +342,7 @@ + applets/mixer/position + /schemas/apps/panel/objects/position + +- 1 ++ 2 + + + +@@ -447,7 +396,7 @@ + applets/clock/position + /schemas/apps/panel/objects/position + +- 2 ++ 1 + + + +@@ -589,6 +538,67 @@ + applets/show_desktop_button/launcher_location/schemas/apps/panel/objects/launcher_location + applets/show_desktop_button/action_type/schemas/apps/panel/objects/action_type + ++ ++ ++ ++ objects/session_dialog/object_type ++ /schemas/apps/panel/objects/object_type ++ ++ action-applet ++ ++ ++ ++ objects/session_dialog/toplevel_id ++ /schemas/apps/panel/objects/toplevel_id ++ ++ top_panel ++ ++ ++ ++ objects/session_dialog/position ++ /schemas/apps/panel/objects/position ++ ++ 0 ++ ++ ++ ++ objects/session_dialog/panel_right_stick ++ /schemas/apps/panel/objects/panel_right_stick ++ ++ true ++ ++ ++ ++ objects/session_dialog/locked ++ /schemas/apps/panel/objects/locked ++ ++ true ++ ++ ++ ++ objects/session_dialog/action_type ++ /schemas/apps/panel/objects/action_type ++ ++ logout ++ ++ ++ ++ objects/session_dialog/launcher_location ++ /schemas/apps/panel/objects/launcher_location ++ ++ ++ ++ ++ ++ objects/session_dialog/bonobo_iid/schemas/apps/panel/objects/bonobo_iid ++ objects/session_dialog/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id ++ objects/session_dialog/tooltip/schemas/apps/panel/objects/tooltip ++ objects/session_dialog/use_custom_icon/schemas/apps/panel/objects/use_custom_icon ++ objects/session_dialog/custom_icon/schemas/apps/panel/objects/custom_icon ++ objects/session_dialog/use_menu_path/schemas/apps/panel/objects/use_menu_path ++ objects/session_dialog/menu_path/schemas/apps/panel/objects/menu_path ++ objects/session_dialog/action_type/schemas/apps/panel/objects/action_type ++ + + + +@@ -663,7 +673,7 @@ + applets/workspace_switcher/position + /schemas/apps/panel/objects/position + +- 0 ++ 1 + + + +@@ -697,6 +707,59 @@ + applets/workspace_switcher/launcher_location/schemas/apps/panel/objects/launcher_location + applets/workspace_switcher/action_type/schemas/apps/panel/objects/action_type + ++ ++ ++ ++ applets/trashapplet/object_type ++ /schemas/apps/panel/objects/object_type ++ ++ bonobo-applet ++ ++ ++ ++ applets/trashapplet/toplevel_id ++ /schemas/apps/panel/objects/toplevel_id ++ ++ bottom_panel ++ ++ ++ ++ applets/trashapplet/position ++ /schemas/apps/panel/objects/position ++ ++ 0 ++ ++ ++ ++ applets/trashapplet/panel_right_stick ++ /schemas/apps/panel/objects/panel_right_stick ++ ++ true ++ ++ ++ ++ applets/trashapplet/locked ++ /schemas/apps/panel/objects/locked ++ ++ true ++ ++ ++ ++ applets/trashapplet/bonobo_iid ++ /schemas/apps/panel/objects/bonobo_iid ++ ++ OAFIID:GNOME_Panel_TrashApplet ++ ++ ++ ++ applets/trashapplet/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id ++ applets/trashapplet/tooltip/schemas/apps/panel/objects/tooltip ++ applets/trashapplet/use_custom_icon/schemas/apps/panel/objects/use_custom_icon ++ applets/trashapplet/custom_icon/schemas/apps/panel/objects/custom_icon ++ applets/trashapplet/use_menu_path/schemas/apps/panel/objects/use_menu_path ++ applets/trashapplet/menu_path/schemas/apps/panel/objects/menu_path ++ applets/trashapplet/launcher_location/schemas/apps/panel/objects/launcher_location ++ + + + --- gnome-panel-2.14.1.orig/debian/patches/01_layout.patch +++ gnome-panel-2.14.1/debian/patches/01_layout.patch @@ -0,0 +1,52 @@ +=== modified file 'gnome-panel/panel-menu-items.c' +--- gnome-panel/panel-menu-items.c ++++ gnome-panel/panel-menu-items.c +@@ -521,6 +521,7 @@ + GtkWidget *places_menu; + GtkWidget *item; + char *gconf_name; ++ char *path; + + places_menu = panel_create_menu (); + +@@ -532,6 +533,16 @@ + gconf_name); + if (gconf_name) + g_free (gconf_name); ++ ++ path = g_build_filename (g_get_home_dir (), "Documents", NULL); ++ if (g_file_test (path, G_FILE_TEST_IS_DIR)) ++ panel_menu_items_append_place_item ("gnome-fs-directory", ++ _("Documents"), ++ _("Documents directory"), ++ places_menu, ++ G_CALLBACK (activate_uri), ++ "Documents"); ++ g_free (path); + + if (!gconf_client_get_bool (panel_gconf_get_client (), + DESKTOP_IS_HOME_DIR_KEY, +@@ -666,6 +677,10 @@ + panel_menu_items_append_from_desktop (menu, "yelp.desktop", NULL); + panel_menu_items_append_from_desktop (menu, "gnome-about.desktop", NULL); + ++ if (g_file_test (DATADIR"/omf/about-ubuntu/about-ubuntu-C.omf", ++ G_FILE_TEST_IS_REGULAR)) ++ panel_menu_items_append_from_desktop (menu, "ubuntu-about.desktop", NULL); ++ + if (parent->priv->append_lock_logout) + panel_menu_items_append_lock_logout (menu); + } +@@ -932,10 +947,7 @@ + + menuitem = g_object_new (PANEL_TYPE_DESKTOP_MENU_ITEM, NULL); + +- /* Translators: Desktop is used here as in "Desktop Environment" (this +- * is not the Desktop folder). Do not keep "Desktop Environment|" in +- * the translation. */ +- accel_label = gtk_accel_label_new (Q_("Desktop Environment|Desktop")); ++ accel_label = gtk_accel_label_new (_("System")); + gtk_misc_set_alignment (GTK_MISC (accel_label), 0.0, 0.5); + + gtk_container_add (GTK_CONTAINER (menuitem), accel_label); + --- gnome-panel-2.14.1.orig/debian/patches/09_lpi_src.patch +++ gnome-panel-2.14.1/debian/patches/09_lpi_src.patch @@ -0,0 +1,181 @@ +diff -Nur gnome-panel-2.13.3.orig/applets/notification_area/GNOME_NotificationAreaApplet.xml gnome-panel-2.13.3/applets/notification_area/GNOME_NotificationAreaApplet.xml +--- gnome-panel-2.13.3.orig/applets/notification_area/GNOME_NotificationAreaApplet.xml 2004-06-11 12:53:16.000000000 +0200 ++++ gnome-panel-2.13.3/applets/notification_area/GNOME_NotificationAreaApplet.xml 2005-12-13 12:24:31.000000000 +0100 +@@ -3,6 +3,9 @@ + + ++ ++ ++ + + +diff -Nur gnome-panel-2.13.3.orig/applets/notification_area/main.c gnome-panel-2.13.3/applets/notification_area/main.c +--- gnome-panel-2.13.3.orig/applets/notification_area/main.c 2005-02-26 15:42:49.000000000 +0100 ++++ gnome-panel-2.13.3/applets/notification_area/main.c 2005-12-13 12:24:31.000000000 +0100 +@@ -43,6 +43,7 @@ + #ifndef N_ + #define N_(x) x + #endif ++#include + + static EggTrayManager *tray_manager = NULL; + static GSList *all_trays = NULL; +@@ -304,6 +305,7 @@ + { + SystemTray *tray; + AtkObject *atko; ++ BonoboUIComponent* popup_component; + + if (!(strcmp (iid, "OAFIID:GNOME_NotificationAreaApplet") == 0 || + strcmp (iid, "OAFIID:GNOME_SystemTrayApplet") == 0)) +@@ -393,6 +395,10 @@ + NULL, + menu_verbs, + tray); ++ ++ popup_component = panel_applet_get_popup_component (applet); ++ ++ launchpad_integration_add_bonobo_ui(popup_component, "/popups/button3/LaunchpadItems"); + + return TRUE; + } +diff -Nur gnome-panel-2.13.3.orig/applets/wncklet/GNOME_ShowDesktopApplet.xml gnome-panel-2.13.3/applets/wncklet/GNOME_ShowDesktopApplet.xml +--- gnome-panel-2.13.3.orig/applets/wncklet/GNOME_ShowDesktopApplet.xml 2004-06-11 12:53:17.000000000 +0200 ++++ gnome-panel-2.13.3/applets/wncklet/GNOME_ShowDesktopApplet.xml 2005-12-13 12:24:31.000000000 +0100 +@@ -3,6 +3,9 @@ + + ++ ++ ++ + + +diff -Nur gnome-panel-2.13.3.orig/applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml gnome-panel-2.13.3/applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml +--- gnome-panel-2.13.3.orig/applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml 2004-06-11 12:53:17.000000000 +0200 ++++ gnome-panel-2.13.3/applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml 2005-12-13 12:24:31.000000000 +0100 +@@ -5,6 +5,9 @@ + pixtype="stock" pixname="gtk-properties"/> + ++ ++ ++ + + +diff -Nur gnome-panel-2.13.3.orig/applets/wncklet/showdesktop.c gnome-panel-2.13.3/applets/wncklet/showdesktop.c +--- gnome-panel-2.13.3.orig/applets/wncklet/showdesktop.c 2005-02-02 21:23:53.000000000 +0100 ++++ gnome-panel-2.13.3/applets/wncklet/showdesktop.c 2005-12-13 12:24:31.000000000 +0100 +@@ -43,6 +43,7 @@ + #include + + #define TIMEOUT_ACTIVATE 1000 ++#include + + + typedef struct { +@@ -398,6 +399,7 @@ + { + ShowDesktopData *sdd; + AtkObject *atk_obj; ++ BonoboUIComponent* popup_component; + + panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR); + +@@ -478,6 +480,10 @@ + G_CALLBACK (button_drag_leave), + sdd); + ++ popup_component = panel_applet_get_popup_component (sdd->applet); ++ ++ launchpad_integration_add_bonobo_ui(popup_component, "/popups/button3/LaunchpadItems"); ++ + gtk_widget_show_all (sdd->applet); + + return TRUE; +diff -Nur gnome-panel-2.13.3.orig/applets/wncklet/workspace-switcher.c gnome-panel-2.13.3/applets/wncklet/workspace-switcher.c +--- gnome-panel-2.13.3.orig/applets/wncklet/workspace-switcher.c 2005-02-21 09:21:03.000000000 +0100 ++++ gnome-panel-2.13.3/applets/wncklet/workspace-switcher.c 2005-12-13 12:24:31.000000000 +0100 +@@ -38,6 +38,7 @@ + #define NEVER_SENSITIVE "never_sensitive" + #define NUM_WORKSPACES "/apps/metacity/general/num_workspaces" + #define WORKSPACE_NAME "/apps/metacity/workspace_names/name_1" ++#include + + typedef struct { + GtkWidget *applet; +@@ -412,6 +413,7 @@ + PagerData *pager; + GError *error; + gboolean display_names; ++ BonoboUIComponent* popup_component; + + panel_applet_add_preferences (applet, "/schemas/apps/workspace_switcher_applet/prefs", NULL); + +@@ -524,6 +526,11 @@ + NULL); + } + ++ popup_component = panel_applet_get_popup_component (PANEL_APPLET (pager->applet)); ++ ++ launchpad_integration_add_bonobo_ui(popup_component, "/popups/button3/LaunchpadItems"); ++ ++ + return TRUE; + } + +diff -Nur gnome-panel-2.13.3.orig/configure.in gnome-panel-2.13.3/configure.in +--- gnome-panel-2.13.3.orig/configure.in 2005-12-12 19:28:20.000000000 +0100 ++++ gnome-panel-2.13.3/configure.in 2005-12-13 12:25:12.000000000 +0100 +@@ -61,7 +61,7 @@ + + dnl pkg-config dependency checks + +-PKG_CHECK_MODULES(PANEL, ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED) ++PKG_CHECK_MODULES(PANEL, ORBit-2.0 >= $ORBIT_REQUIRED gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnome-2.0 >= $LIBGNOME_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gconf-2.0 >= $GCONF_REQUIRED libgnome-menu >= $LIBGNOME_MENU_REQUIRED lpint-bonobo launchpad-integration) + AC_SUBST(PANEL_CFLAGS) + AC_SUBST(PANEL_LIBS) + +@@ -69,7 +69,7 @@ + AC_SUBST(LIBPANEL_APPLET_CFLAGS) + AC_SUBST(LIBPANEL_APPLET_LIBS) + +-PKG_CHECK_MODULES(WNCKLET, gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED) ++PKG_CHECK_MODULES(WNCKLET, gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED gtk+-2.0 >= $GTK_REQUIRED libgnomeui-2.0 >= $LIBGNOMEUI_REQUIRED libwnck-1.0 >= $LIBWNCK_REQUIRED libglade-2.0 >= $LIBGLADE_REQUIRED gnome-desktop-2.0 >= $LIBGNOME_DESKTOP_REQUIRED lpint-bonobo launchpad-integration) + AC_SUBST(WNCKLET_CFLAGS) + AC_SUBST(WNCKLET_LIBS) + +diff -Nur gnome-panel-2.13.3.orig/gnome-panel/panel-context-menu.c gnome-panel-2.13.3/gnome-panel/panel-context-menu.c +--- gnome-panel-2.13.3.orig/gnome-panel/panel-context-menu.c 2005-10-22 09:06:03.000000000 +0200 ++++ gnome-panel-2.13.3/gnome-panel/panel-context-menu.c 2005-12-13 12:24:31.000000000 +0100 +@@ -44,6 +44,7 @@ + #include "panel-properties-dialog.h" + #include "panel-lockdown.h" + #include "panel-addto.h" ++#include + + static void + panel_context_menu_show_help (GtkWidget *w, +@@ -218,7 +219,7 @@ + _("_Delete This Panel")); + } + +-static void ++static void + make_panel_submenu (PanelWidget *panel_widget, + GtkWidget *menu) + { +@@ -284,6 +285,9 @@ + panel_profile_id_lists_are_writable ()); + + add_menu_separator (menu); ++ ++ launchpad_integration_add_items (menu,-1,TRUE,FALSE); ++ + } + + GtkWidget * --- gnome-panel-2.14.1.orig/debian/patches/05_submenus.patch +++ gnome-panel-2.14.1/debian/patches/05_submenus.patch @@ -0,0 +1,142 @@ +diff -Nur gnome-panel-2.11.3.orig/gnome-panel/menu.c gnome-panel-2.11.3/gnome-panel/menu.c +--- gnome-panel-2.11.3.orig/gnome-panel/menu.c 2005-06-06 21:54:00.000000000 +0200 ++++ gnome-panel-2.11.3/gnome-panel/menu.c 2005-06-27 15:21:40.770711424 +0200 +@@ -1386,7 +1386,7 @@ + return menuitem; + } + +-static void ++void + create_submenu (GtkWidget *menu, + GMenuTreeDirectory *directory, + GMenuTreeDirectory *alias_directory) +diff -Nur gnome-panel-2.11.3.orig/gnome-panel/menu.h gnome-panel-2.11.3/gnome-panel/menu.h +--- gnome-panel-2.11.3.orig/gnome-panel/menu.h 2005-04-11 16:58:41.000000000 +0200 ++++ gnome-panel-2.11.3/gnome-panel/menu.h 2005-06-27 15:21:40.770711424 +0200 +@@ -67,6 +67,9 @@ + gboolean menu_dummy_button_press_event (GtkWidget *menuitem, + GdkEventButton *event); + ++void create_submenu (GtkWidget *menu, ++ GMenuTreeDirectory *directory, ++ GMenuTreeDirectory *alias_directory); + + G_END_DECLS + +diff -Nur gnome-panel-2.11.3.orig/gnome-panel/panel-menu-items.c gnome-panel-2.11.3/gnome-panel/panel-menu-items.c +--- gnome-panel-2.11.3.orig/gnome-panel/panel-menu-items.c 2005-06-06 23:51:27.000000000 +0200 ++++ gnome-panel-2.11.3/gnome-panel/panel-menu-items.c 2005-06-27 15:25:37.614705664 +0200 +@@ -75,6 +75,8 @@ + GtkWidget *menu; + PanelWidget *panel; + ++ GMenuTree *tree; ++ + guint use_image : 1; + guint append_lock_logout : 1; + }; +@@ -84,6 +86,8 @@ + + static GnomeVFSVolumeMonitor *volume_monitor = NULL; + ++static void panel_desktop_menu_item_recreate_menu (PanelDesktopMenuItem *desktop_item); ++ + static void + activate_uri (GtkWidget *menuitem, + char *path) +@@ -607,16 +611,63 @@ + panel_menu_items_append_lock_logout (menu); + } + ++static void ++handle_menu_tree_changed (GMenuTree *tree, ++ PanelDesktopMenuItem *desktop_item) ++{ ++ panel_desktop_menu_item_recreate_menu (desktop_item); ++} ++ + static GtkWidget * + panel_desktop_menu_item_create_menu (PanelDesktopMenuItem *desktop_item) + { + GtkWidget *desktop_menu; ++ GMenuTreeDirectory *directory; ++ ++ desktop_menu = create_empty_menu (); ++ ++ /* ++ g_object_set_data_full (G_OBJECT (desktop_menu), ++ "panel-menu-tree-filename", ++ g_strdup ("settings.menu"), ++ (GDestroyNotify) g_free); ++ ++ g_object_set_data_full (G_OBJECT (desktop_menu), ++ "panel-menu-tree", ++ menu_tree_ref (tree), ++ (GDestroyNotify) menu_tree_unref); ++ ++ g_object_set_data_full (G_OBJECT (desktop_menu), ++ "panel-menu-tree-path", ++ g_strdup ("/"), ++ (GDestroyNotify) g_free); ++ ++ g_object_set_data (G_OBJECT (desktop_menu), ++ "panel-menu-needs-loading", ++ GUINT_TO_POINTER (TRUE)); ++ */ + +- desktop_menu = create_applications_menu ("settings.menu", NULL); ++ g_object_set_data (G_OBJECT (desktop_menu), ++ "panel-menu-needs-appending", ++ GUINT_TO_POINTER (TRUE)); + +- g_signal_connect (desktop_menu, "show", +- G_CALLBACK (panel_desktop_menu_item_append_menu), +- desktop_item); ++ directory = gmenu_tree_get_directory_from_path (desktop_item->priv->tree, ++ "/Preferences"); ++ ++ if (directory) { ++ create_submenu (desktop_menu, directory, NULL); ++ gmenu_tree_item_unref (directory); ++ } ++ ++ directory = gmenu_tree_get_directory_from_path (desktop_item->priv->tree, ++ "/Administration"); ++ ++ if (directory) { ++ create_submenu (desktop_menu, directory, NULL); ++ gmenu_tree_item_unref (directory); ++ } ++ ++ panel_desktop_menu_item_append_menu (desktop_menu, desktop_item); + + return desktop_menu; + } +@@ -674,6 +725,14 @@ + panel_lockdown_notify_remove (G_CALLBACK (panel_desktop_menu_item_recreate_menu), + menuitem); + desktop_parent_class->finalize (object); ++ ++ if (menuitem->priv->tree) { ++ gmenu_tree_remove_monitor (menuitem->priv->tree, ++ (GMenuTreeChangedFunc) handle_menu_tree_changed, ++ menuitem); ++ gmenu_tree_unref (menuitem->priv->tree); ++ } ++ menuitem->priv->tree = NULL; + } + + static void +@@ -736,6 +795,12 @@ + PanelDesktopMenuItemClass *klass) + { + menuitem->priv = PANEL_DESKTOP_MENU_ITEM_GET_PRIVATE (menuitem); ++ ++ menuitem->priv->tree = gmenu_tree_lookup ("settings.menu", GMENU_TREE_FLAGS_NONE); ++ ++ gmenu_tree_add_monitor (menuitem->priv->tree, ++ (GMenuTreeChangedFunc) handle_menu_tree_changed, ++ menuitem); + } + + static void --- gnome-panel-2.14.1.orig/debian/patches/05_missing_includes.patch +++ gnome-panel-2.14.1/debian/patches/05_missing_includes.patch @@ -0,0 +1,21 @@ +diff -urN gnome-panel-2.10.1.orig/applets/clock/clock.c gnome-panel-2.10.1/applets/clock/clock.c +--- gnome-panel-2.10.1.orig/applets/clock/clock.c 2005-03-07 07:15:15.000000000 -0700 ++++ gnome-panel-2.10.1/applets/clock/clock.c 2005-06-17 13:44:44.149885607 -0600 +@@ -41,6 +41,7 @@ + + #include "config.h" + ++#include + #include + #include + #include +diff -urN gnome-panel-2.10.1.orig/gnome-panel/panel.c gnome-panel-2.10.1/gnome-panel/panel.c +--- gnome-panel-2.10.1.orig/gnome-panel/panel.c 2005-03-31 13:05:04.000000000 -0700 ++++ gnome-panel-2.10.1/gnome-panel/panel.c 2005-06-17 13:43:21.107894436 -0600 +@@ -23,6 +23,7 @@ + #include + #include + #include ++#include + + #include "panel.h" --- gnome-panel-2.14.1.orig/debian/patches/07_time_cmd.patch +++ gnome-panel-2.14.1/debian/patches/07_time_cmd.patch @@ -0,0 +1,12 @@ +diff -Nur gnome-panel-2.11.90.orig/applets/clock/clock.c gnome-panel-2.11.90/applets/clock/clock.c +--- gnome-panel-2.11.90.orig/applets/clock/clock.c 2005-07-21 11:05:49.000000000 +0200 ++++ gnome-panel-2.11.90/applets/clock/clock.c 2005-07-26 13:14:08.000000000 +0200 +@@ -83,7 +83,7 @@ + "system-config-date", + "redhat-config-date", + "/sbin/yast2 timezone", +- "time-admin", ++ "/usr/bin/gksudo time-admin", + }; + + /* Needs to match the indices in the combo */ --- gnome-panel-2.14.1.orig/debian/patches/06_applets_category.patch +++ gnome-panel-2.14.1/debian/patches/06_applets_category.patch @@ -0,0 +1,68 @@ +diff -Nur gnome-panel-2.11.92.orig/applets/clock/GNOME_ClockApplet_Factory.server.in.in gnome-panel-2.11.92/applets/clock/GNOME_ClockApplet_Factory.server.in.in +--- gnome-panel-2.11.92.orig/applets/clock/GNOME_ClockApplet_Factory.server.in.in 2004-11-11 09:16:43.000000000 +0100 ++++ gnome-panel-2.11.92/applets/clock/GNOME_ClockApplet_Factory.server.in.in 2005-08-27 00:09:58.000000000 +0200 +@@ -24,6 +24,7 @@ + + + ++ + + + +diff -Nur gnome-panel-2.11.92.orig/applets/fish/GNOME_FishApplet_Factory.server.in.in gnome-panel-2.11.92/applets/fish/GNOME_FishApplet_Factory.server.in.in +--- gnome-panel-2.11.92.orig/applets/fish/GNOME_FishApplet_Factory.server.in.in 2004-08-09 14:28:10.000000000 +0200 ++++ gnome-panel-2.11.92/applets/fish/GNOME_FishApplet_Factory.server.in.in 2005-08-27 00:10:10.000000000 +0200 +@@ -24,6 +24,7 @@ + + + ++ + + + +diff -Nur gnome-panel-2.11.92.orig/applets/notification_area/GNOME_NotificationAreaApplet.server.in.in gnome-panel-2.11.92/applets/notification_area/GNOME_NotificationAreaApplet.server.in.in +--- gnome-panel-2.11.92.orig/applets/notification_area/GNOME_NotificationAreaApplet.server.in.in 2004-08-09 14:28:10.000000000 +0200 ++++ gnome-panel-2.11.92/applets/notification_area/GNOME_NotificationAreaApplet.server.in.in 2005-08-27 00:09:58.000000000 +0200 +@@ -24,6 +24,7 @@ + + + ++ + + + +diff -Nur gnome-panel-2.11.92.orig/applets/wncklet/GNOME_Wncklet_Factory.server.in.in gnome-panel-2.11.92/applets/wncklet/GNOME_Wncklet_Factory.server.in.in +--- gnome-panel-2.11.92.orig/applets/wncklet/GNOME_Wncklet_Factory.server.in.in 2005-06-07 00:23:19.000000000 +0200 ++++ gnome-panel-2.11.92/applets/wncklet/GNOME_Wncklet_Factory.server.in.in 2005-08-27 00:10:10.000000000 +0200 +@@ -25,6 +25,7 @@ + + + ++ + + + +@@ -62,6 +63,7 @@ + + + ++ + + + +@@ -98,6 +100,7 @@ + + + ++ + + + +@@ -117,6 +120,7 @@ + + + ++ + + + --- gnome-panel-2.14.1.orig/debian/patches/09_default_icons.patch +++ gnome-panel-2.14.1/debian/patches/09_default_icons.patch @@ -0,0 +1,24 @@ +diff -Nur gnome-panel-2.11.1.orig/gnome-panel/menu.c gnome-panel-2.11.1/gnome-panel/menu.c +--- gnome-panel-2.11.1.orig/gnome-panel/menu.c 2005-04-27 11:56:04.000000000 +0200 ++++ gnome-panel-2.11.1/gnome-panel/menu.c 2005-05-19 19:59:02.220319600 +0200 +@@ -1360,7 +1360,7 @@ + NULL, + alias_directory ? gmenu_tree_directory_get_icon (alias_directory) : + gmenu_tree_entry_get_icon (entry), +- NULL); ++ PANEL_STOCK_DEFAULT_ICON); + + setup_menuitem (menuitem, + panel_menu_icon_get_size (), +diff -Nur gnome-panel-2.11.1.orig/gnome-panel/panel-stock-icons.h gnome-panel-2.11.1/gnome-panel/panel-stock-icons.h +--- gnome-panel-2.11.1.orig/gnome-panel/panel-stock-icons.h 2005-02-02 08:49:08.000000000 +0100 ++++ gnome-panel-2.11.1/gnome-panel/panel-stock-icons.h 2005-05-19 19:56:16.416525608 +0200 +@@ -43,6 +43,8 @@ + #define PANEL_STOCK_EXECUTE "panel-execute" + #define PANEL_STOCK_CLEAR "panel-clear" + #define PANEL_STOCK_DONT_DELETE "panel-dont-delete" ++/* FIXME: put a more representative icon here */ ++#define PANEL_STOCK_DEFAULT_ICON "application-default-icon" + + void panel_init_stock_icons_and_items (void); + GtkIconSize panel_menu_icon_get_size (void); --- gnome-panel-2.14.1.orig/debian/patches/10_defaulteditor.patch +++ gnome-panel-2.14.1/debian/patches/10_defaulteditor.patch @@ -0,0 +1,54 @@ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-menu-bar.c gnome-panel-2.14.1.new/gnome-panel/panel-menu-bar.c +--- gnome-panel-2.14.1/gnome-panel/panel-menu-bar.c 2006-04-14 15:31:19.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-menu-bar.c 2006-04-14 15:31:20.000000000 +0200 +@@ -469,10 +469,19 @@ + } else if (!strcmp (callback_name, "edit")) { + GError *error = NULL; + +- panel_launch_desktop_file ("gmenu-simple-editor.desktop", +- "gmenu-simple-editor", +- screen, +- &error); ++ if (panel_is_program_in_path ("alacarte")) { ++ panel_launch_desktop_file ("alacarte.desktop", ++ "alacarte", ++ screen, ++ &error); ++ } ++ else { ++ panel_launch_desktop_file ("gmenu-simple-editor.desktop", ++ "gmenu-simple-editor", ++ screen, ++ &error); ++ } ++ + if (error) { + panel_error_dialog (screen, + "cannot_exec_gmenu-simple-editor", TRUE, +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-menu-button.c gnome-panel-2.14.1.new/gnome-panel/panel-menu-button.c +--- gnome-panel-2.14.1/gnome-panel/panel-menu-button.c 2006-04-14 15:31:19.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-menu-button.c 2006-04-14 15:31:20.000000000 +0200 +@@ -1004,10 +1004,19 @@ + } else if (!strcmp (callback_name, "edit")) { + GError *error = NULL; + +- panel_launch_desktop_file ("gmenu-simple-editor.desktop", +- "gmenu-simple-editor", +- screen, +- &error); ++ if (panel_is_program_in_path ("alacarte")) { ++ panel_launch_desktop_file ("alacarte.desktop", ++ "alacarte", ++ screen, ++ &error); ++ } ++ else { ++ panel_launch_desktop_file ("gmenu-simple-editor.desktop", ++ "gmenu-simple-editor", ++ screen, ++ &error); ++ } ++ + if (error) { + panel_error_dialog (screen, + "cannot_exec_gmenu-simple-editor", TRUE, --- gnome-panel-2.14.1.orig/debian/patches/11_panel_addto_dialog.patch +++ gnome-panel-2.14.1/debian/patches/11_panel_addto_dialog.patch @@ -0,0 +1,7916 @@ +diff -Nur gnome-panel-2.14.1/gnome-panel/Makefile.am gnome-panel-2.14.1.new/gnome-panel/Makefile.am +--- gnome-panel-2.14.1/gnome-panel/Makefile.am 2006-02-12 20:07:03.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/Makefile.am 2006-04-16 22:07:22.000000000 +0200 +@@ -114,6 +114,9 @@ + panel-force-quit.c \ + panel-lockdown.c \ + panel-addto.c \ ++ panel-addto-canvas.c \ ++ panel-addto-rounded-rect.c \ ++ panel-addto-event-box.c \ + panel-logout.c \ + panel-gdm.c \ + $(EGG_RECENT_FILES_C) \ +@@ -162,6 +165,10 @@ + panel-force-quit.h \ + panel-lockdown.h \ + panel-addto.h \ ++ panel-addto-canvas.h \ ++ panel-addto-rounded-rect.h \ ++ panel-addto-rounded-rect-pixbuf.h \ ++ panel-addto-event-box.h \ + panel-logout.h \ + panel-gdm.h \ + $(EGG_RECENT_FILES_H) \ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-action-button.c gnome-panel-2.14.1.new/gnome-panel/panel-action-button.c +--- gnome-panel-2.14.1/gnome-panel/panel-action-button.c 2006-04-16 22:07:21.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-action-button.c 2006-04-16 22:07:22.000000000 +0200 +@@ -274,6 +274,8 @@ + PanelActionButtonType type; + char *icon_name; + char *text; ++ char *category; ++ char *english_category; + char *tooltip; + char *help_index; + char *drag_id; +@@ -296,6 +298,8 @@ + PANEL_ACTION_LOCK, + "gnome-lockscreen", + N_("Lock Screen"), ++ N_("Desktop & Windows"), ++ "Desktop & Windows", + N_("Protect your computer from unauthorized use"), + "gospanel-21", + "ACTION:lock:NEW", +@@ -311,6 +315,8 @@ + * update the ones in panel-menu-items.c (look for + * panel:showusername|1) */ + N_("Log Out..."), ++ N_("Desktop & Windows"), ++ "Desktop & Windows", + N_("Log out of this session to log in as a different user"), + "gospanel-20", + "ACTION:logout:NEW", +@@ -321,6 +327,8 @@ + PANEL_ACTION_RUN, + PANEL_RUN_ICON, + N_("Run Application..."), ++ N_("Utilities"), ++ "Utilities", + N_("Run an Application by entering a command"), + "gospanel-555", + "ACTION:run:NEW", +@@ -331,6 +339,8 @@ + PANEL_ACTION_SEARCH, + "gnome-searchtool", + N_("Search for Files..."), ++ N_("Utilities"), ++ "Utilities", + N_("Find files, folders, and documents on your computer"), + "gospanel-554", + "ACTION:search:NEW", +@@ -340,6 +350,8 @@ + PANEL_ACTION_FORCE_QUIT, + PANEL_FORCE_QUIT_ICON, + N_("Force Quit"), ++ N_("Desktop & Windows"), ++ "Desktop & Windows", + N_("Force a misbehaving application to quit"), + "gospanel-563", + "ACTION:force-quit:NEW", +@@ -350,6 +362,8 @@ + PANEL_ACTION_CONNECT_SERVER, + "gnome-globe", //FIXME icon + N_("Connect to Server..."), ++ N_("Utilities"), ++ "Utilities", + N_("Connect to a remote server"), //FIXME + "gospanel-563", //FIXME + "ACTION:connect-server:NEW", +@@ -359,6 +373,8 @@ + PANEL_ACTION_SHUTDOWN, + "gnome-shutdown", + N_("Shut Down..."), ++ N_("Utilities"), ++ "Utilities", + N_("Shut down the computer"), + "gospanel-20", + "ACTION:shutdown:NEW", +@@ -422,6 +438,22 @@ + } + + G_CONST_RETURN char* ++panel_action_get_category (PanelActionButtonType type) ++{ ++ g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL); ++ ++ return _(actions[type].category); ++} ++ ++G_CONST_RETURN char* ++panel_action_get_english_category (PanelActionButtonType type) ++{ ++ g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL); ++ ++ return actions[type].english_category; ++} ++ ++G_CONST_RETURN char* + panel_action_get_tooltip (PanelActionButtonType type) + { + g_return_val_if_fail (type > PANEL_ACTION_NONE && type < PANEL_ACTION_LAST, NULL); +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-action-button.h gnome-panel-2.14.1.new/gnome-panel/panel-action-button.h +--- gnome-panel-2.14.1/gnome-panel/panel-action-button.h 2005-01-29 21:39:01.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-action-button.h 2006-04-16 22:07:22.000000000 +0200 +@@ -87,12 +87,14 @@ + const char *drag_string, + int *old_applet_idx); + +-gboolean panel_action_get_is_disabled (PanelActionButtonType type); +-GCallback panel_action_get_invoke (PanelActionButtonType type); +-G_CONST_RETURN char *panel_action_get_icon_name (PanelActionButtonType type); +-G_CONST_RETURN char *panel_action_get_text (PanelActionButtonType type); +-G_CONST_RETURN char *panel_action_get_tooltip (PanelActionButtonType type); +-G_CONST_RETURN char *panel_action_get_drag_id (PanelActionButtonType type); ++gboolean panel_action_get_is_disabled (PanelActionButtonType type); ++GCallback panel_action_get_invoke (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_icon_name (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_text (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_category (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_english_category (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_tooltip (PanelActionButtonType type); ++G_CONST_RETURN char *panel_action_get_drag_id (PanelActionButtonType type); + + G_END_DECLS + +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto.c gnome-panel-2.14.1.new/gnome-panel/panel-addto.c +--- gnome-panel-2.14.1/gnome-panel/panel-addto.c 2006-04-16 22:07:20.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto.c 2006-04-16 22:08:17.000000000 +0200 +@@ -26,117 +26,52 @@ + #include + + #include ++#include + +-#include "menu.h" +- +-#include "launcher.h" +-#include "panel.h" +-#include "drawer.h" +-#include "panel-applet-frame.h" +-#include "panel-action-button.h" +-#include "panel-menu-bar.h" +-#include "panel-separator.h" +-#include "panel-toplevel.h" +-#include "panel-menu-button.h" +-#include "panel-globals.h" +-#include "panel-lockdown.h" +-#include "panel-util.h" +-#include "panel-profile.h" + #include "panel-addto.h" ++#include "panel-addto-canvas.h" + +-typedef struct { +- PanelWidget *panel_widget; +- +- GtkWidget *addto_dialog; +- GtkWidget *label; +- GtkWidget *search_entry; +- GtkWidget *back_button; +- GtkWidget *add_button; +- GtkWidget *tree_view; +- GtkTreeModel *applet_model; +- GtkTreeModel *filter_applet_model; +- GtkTreeModel *application_model; +- GtkTreeModel *filter_application_model; +- +- GMenuTree *menu_tree; +- +- GSList *applet_list; +- GSList *application_list; +- GSList *settings_list; +- +- gchar *search_text; +- gchar *applet_search_text; +- +- guint name_notify; +- +- int insertion_position; +-} PanelAddtoDialog; +- ++#define PANEL_ADDTO_CANVAS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasPrivate)) ++ + static GQuark panel_addto_dialog_quark = 0; + +-typedef enum { +- PANEL_ADDTO_APPLET, +- PANEL_ADDTO_ACTION, +- PANEL_ADDTO_LAUNCHER_MENU, +- PANEL_ADDTO_LAUNCHER, +- PANEL_ADDTO_LAUNCHER_NEW, +- PANEL_ADDTO_MENU, +- PANEL_ADDTO_MENUBAR, +- PANEL_ADDTO_SEPARATOR, +- PANEL_ADDTO_DRAWER +-} PanelAddtoItemType; +- +-typedef struct { +- PanelAddtoItemType type; +- char *name; +- char *description; +- char *icon; +- PanelActionButtonType action_type; +- char *launcher_path; +- char *menu_filename; +- char *menu_path; +- char *iid; +- gboolean static_data; +-} PanelAddtoItemInfo; +- +-typedef struct { +- GSList *children; +- PanelAddtoItemInfo item_info; +-} PanelAddtoAppList; +- +-static PanelAddtoItemInfo special_addto_items [] = { +- +- { PANEL_ADDTO_LAUNCHER_NEW, +- N_("Custom Application Launcher"), +- N_("Create a new launcher"), +- "launcher-program", +- PANEL_ACTION_NONE, +- NULL, +- NULL, +- NULL, +- "LAUNCHER:ASK", +- TRUE }, +- +- { PANEL_ADDTO_LAUNCHER_MENU, +- N_("Application Launcher..."), +- N_("Copy a launcher from the applications menu"), +- "launcher-program", +- PANEL_ACTION_NONE, +- NULL, +- NULL, +- NULL, +- "LAUNCHER:MENU", +- TRUE } ++typedef struct EntryInfo { ++ PanelAddtoCanvas *canvas; + +-}; ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *text; ++ GnomeCanvasItem *pixbuf; ++ GnomeCanvasItem *highlight_pixbuf; ++ GnomeCanvasItem *cover; ++ GnomeCanvasItem *selection; ++ ++ double icon_height; ++ double icon_width; ++ double text_height; ++ guint launching : 1; ++ guint selected : 1; ++ guint highlighted : 1; ++ ++ gint n_category; ++ gint n_entry; ++ gint index; ++} EntryInfo; ++ ++typedef struct CategoryInfo { ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *title; ++ GnomeCanvasItem *line; ++} CategoryInfo; + + static PanelAddtoItemInfo internal_addto_items [] = { + +- { PANEL_ADDTO_MENU, ++ { PANEL_ADDTO_MENU, ++ PANEL_ACTION_NONE, ++ N_("Utilities"), ++ "Utilities", + N_("Main Menu"), + N_("The main GNOME menu"), + PANEL_MAIN_MENU_ICON, +- PANEL_ACTION_NONE, + NULL, + NULL, + NULL, +@@ -144,10 +79,12 @@ + TRUE }, + + { PANEL_ADDTO_MENUBAR, ++ PANEL_ACTION_NONE, ++ N_("Utilities"), ++ "Utilities", + N_("Menu Bar"), + N_("A custom menu bar"), + PANEL_GNOME_LOGO_ICON, +- PANEL_ACTION_NONE, + NULL, + NULL, + NULL, +@@ -155,10 +92,12 @@ + TRUE }, + + { PANEL_ADDTO_SEPARATOR, ++ PANEL_ACTION_NONE, ++ N_("Utilities"), ++ "Utilities", + N_("Separator"), + N_("A separator to organize the panel items"), + PANEL_SEPARATOR_ICON, +- PANEL_ACTION_NONE, + NULL, + NULL, + NULL, +@@ -166,10 +105,12 @@ + TRUE }, + + { PANEL_ADDTO_DRAWER, ++ PANEL_ACTION_NONE, ++ N_("Desktop & Windows"), ++ "Desktop & Windows", + N_("Drawer"), + N_("A pop out drawer to store other items in"), + PANEL_DRAWER_ICON, +- PANEL_ACTION_NONE, + NULL, + NULL, + NULL, +@@ -202,9 +143,7 @@ + + static void panel_addto_present_applications (PanelAddtoDialog *dialog); + static void panel_addto_present_applets (PanelAddtoDialog *dialog); +-static gboolean panel_addto_filter_func (GtkTreeModel *model, +- GtkTreeIter *iter, +- gpointer data); ++static void panel_addto_init_categories (PanelAddtoDialog *dialog); + + static int + panel_addto_applet_info_sort_func (PanelAddtoItemInfo *a, +@@ -223,6 +162,7 @@ + if (!translated) { + internal_addto_items [i].name = _(internal_addto_items [i].name); + internal_addto_items [i].description = _(internal_addto_items [i].description); ++ internal_addto_items [i].category = _(internal_addto_items [i].category); + } + + if (internal_addto_items [i].type == PANEL_ADDTO_MENU || +@@ -245,14 +185,16 @@ + if (panel_action_get_is_disabled (i)) + continue; + +- info = g_new0 (PanelAddtoItemInfo, 1); +- info->type = PANEL_ADDTO_ACTION; +- info->action_type = i; +- info->name = g_strdup (panel_action_get_text (i)); +- info->description = g_strdup (panel_action_get_tooltip (i)); +- info->icon = g_strdup (panel_action_get_icon_name (i)); +- info->iid = g_strdup (panel_action_get_drag_id (i)); +- info->static_data = FALSE; ++ info = g_new0 (PanelAddtoItemInfo, 1); ++ info->type = PANEL_ADDTO_ACTION; ++ info->action_type = i; ++ info->name = g_strdup (panel_action_get_text (i)); ++ info->description = g_strdup (panel_action_get_tooltip (i)); ++ info->category = g_strdup (panel_action_get_category (i)); ++ info->english_category = g_strdup (panel_action_get_english_category (i)); ++ info->icon = g_strdup (panel_action_get_icon_name (i)); ++ info->iid = g_strdup (panel_action_get_drag_id (i)); ++ info->static_data = FALSE; + + list = g_slist_prepend (list, info); + } +@@ -281,6 +223,7 @@ + } + + #define ICON_SIZE 32 ++#define LAUNCHER_ICON_SIZE 20 + + static GdkPixbuf * + panel_addto_make_pixbuf (const char *filename) +@@ -292,8 +235,18 @@ + NULL); + } + ++static GdkPixbuf * ++panel_addto_make_pixbuf_for_launcher (const char *filename) ++{ ++ //FIXME: size shouldn't be fixed but should depend on the font size ++ return panel_load_icon (gtk_icon_theme_get_default (), ++ filename, ++ LAUNCHER_ICON_SIZE, LAUNCHER_ICON_SIZE, LAUNCHER_ICON_SIZE, ++ NULL); ++} ++ + static void +-panel_addto_drag_data_get_cb (GtkWidget *widget, ++panel_addto_applications_drag_data_get_cb (GtkWidget *widget, + GdkDragContext *context, + GtkSelectionData *selection_data, + guint info, +@@ -306,27 +259,22 @@ + } + + static void +-panel_addto_drag_begin_cb (GtkWidget *widget, ++panel_addto_applications_drag_begin_cb (GtkWidget *widget, + GdkDragContext *context, + gpointer data) + { +- GtkTreeModel *filter_model; +- GtkTreeModel *child_model; ++ GtkTreeModel *model; + GtkTreePath *path; + GtkTreeIter iter; +- GtkTreeIter filter_iter; + GdkPixbuf *pixbuf; + +- filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); ++ model = gtk_tree_view_get_model (GTK_TREE_VIEW (widget)); + + gtk_tree_view_get_cursor (GTK_TREE_VIEW (widget), &path, NULL); +- gtk_tree_model_get_iter (filter_model, &filter_iter, path); ++ gtk_tree_model_get_iter (model, &iter, path); + gtk_tree_path_free (path); +- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (filter_model), +- &iter, &filter_iter); + +- child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model)); +- gtk_tree_model_get (child_model, &iter, ++ gtk_tree_model_get (model, &iter, + COLUMN_ICON, &pixbuf, + -1); + +@@ -335,7 +283,7 @@ + } + + static void +-panel_addto_setup_drag (GtkTreeView *tree_view, ++panel_addto_applications_setup_drag (GtkTreeView *tree_view, + const GtkTargetEntry *target, + const char *text) + { +@@ -347,17 +295,17 @@ + target, 1, GDK_ACTION_COPY); + + g_signal_connect_data (G_OBJECT (tree_view), "drag_data_get", +- G_CALLBACK (panel_addto_drag_data_get_cb), ++ G_CALLBACK (panel_addto_applications_drag_data_get_cb), + g_strdup (text), + (GClosureNotify) g_free, + 0 /* connect_flags */); + g_signal_connect_after (G_OBJECT (tree_view), "drag-begin", +- G_CALLBACK (panel_addto_drag_begin_cb), ++ G_CALLBACK (panel_addto_applications_drag_begin_cb), + NULL); + } + + static void +-panel_addto_setup_launcher_drag (GtkTreeView *tree_view, ++panel_addto_applications_setup_launcher_drag (GtkTreeView *tree_view, + const char *uri) + { + static GtkTargetEntry target[] = { +@@ -366,30 +314,19 @@ + char *uri_list; + + uri_list = g_strconcat (uri, "\r\n", NULL); +- panel_addto_setup_drag (tree_view, target, uri_list); ++ panel_addto_applications_setup_drag (tree_view, target, uri_list); + g_free (uri_list); + } + + static void +-panel_addto_setup_applet_drag (GtkTreeView *tree_view, +- const char *iid) +-{ +- static GtkTargetEntry target[] = { +- { "application/x-panel-applet-iid", 0, 0 } +- }; +- +- panel_addto_setup_drag (tree_view, target, iid); +-} +- +-static void +-panel_addto_setup_internal_applet_drag (GtkTreeView *tree_view, ++panel_addto_applications_setup_internal_applet_drag (GtkTreeView *tree_view, + const char *applet_type) + { + static GtkTargetEntry target[] = { + { "application/x-panel-applet-internal", 0, 0 } + }; + +- panel_addto_setup_drag (tree_view, target, applet_type); ++ panel_addto_applications_setup_drag (tree_view, target, applet_type); + } + + static GSList * +@@ -428,20 +365,26 @@ + + for (i = 0; i < applet_list->_length; i++) { + Bonobo_ServerInfo *info; +- const char *name, *description, *icon; ++ const char *name, *description, *category, *english_category, *icon; + PanelAddtoItemInfo *applet; + + info = &applet_list->_buffer[i]; + +- name = bonobo_server_info_prop_lookup (info, +- "name", +- langs_gslist); +- description = bonobo_server_info_prop_lookup (info, +- "description", +- langs_gslist); +- icon = bonobo_server_info_prop_lookup (info, +- "panel:icon", +- NULL); ++ name = bonobo_server_info_prop_lookup (info, ++ "name", ++ langs_gslist); ++ description = bonobo_server_info_prop_lookup (info, ++ "description", ++ langs_gslist); ++ category = bonobo_server_info_prop_lookup (info, ++ "panel:category", ++ langs_gslist); ++ english_category = bonobo_server_info_prop_lookup (info, ++ "panel:category", ++ NULL); ++ icon = bonobo_server_info_prop_lookup (info, ++ "panel:icon", ++ NULL); + + if (!name || + panel_lockdown_is_applet_disabled (info->iid)) { +@@ -455,7 +398,13 @@ + applet->icon = g_strdup (icon); + applet->iid = g_strdup (info->iid); + applet->static_data = FALSE; +- ++ if (!category) { ++ applet->category = g_strdup_printf (_("Miscellaneous")); ++ applet->english_category = g_strdup_printf ("Miscellaneous"); ++ } else { ++ applet->category = g_markup_escape_text (category, -1); ++ applet->english_category = g_markup_escape_text (english_category, -1); ++ } + list = g_slist_prepend (list, applet); + } + +@@ -508,34 +457,12 @@ + } + } + +-static void +-panel_addto_append_special_applets (PanelAddtoDialog *dialog, +- GtkListStore *model) +-{ +- static gboolean translated = FALSE; +- int i; +- +- for (i = 0; i < G_N_ELEMENTS (special_addto_items); i++) { +- if (!translated) { +- special_addto_items [i].name = _(special_addto_items [i].name); +- special_addto_items [i].description = _(special_addto_items [i].description); +- } +- +- panel_addto_append_item (dialog, model, &special_addto_items [i]); +- } +- +- translated = TRUE; +-} +- +-static void ++static GtkTreeModel * + panel_addto_make_applet_model (PanelAddtoDialog *dialog) + { + GtkListStore *model; + GSList *l; + +- if (dialog->filter_applet_model != NULL) +- return; +- + if (panel_profile_id_lists_are_writable ()) { + dialog->applet_list = panel_addto_query_applets (dialog->applet_list); + dialog->applet_list = panel_addto_prepend_internal_applets (dialog->applet_list); +@@ -550,21 +477,14 @@ + G_TYPE_POINTER, + G_TYPE_STRING); + +- if (panel_profile_id_lists_are_writable ()) { +- panel_addto_append_special_applets (dialog, model); +- if (dialog->applet_list) ++ if (panel_profile_id_lists_are_writable () && dialog->applet_list) { + panel_addto_append_item (dialog, model, NULL); + } + + for (l = dialog->applet_list; l; l = l->next) + panel_addto_append_item (dialog, model, l->data); + +- dialog->applet_model = GTK_TREE_MODEL (model); +- dialog->filter_applet_model = gtk_tree_model_filter_new (GTK_TREE_MODEL (dialog->applet_model), +- NULL); +- gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (dialog->filter_applet_model), +- panel_addto_filter_func, +- dialog, NULL); ++ return (GtkTreeModel *) model; + } + + static void panel_addto_make_application_list (GSList **parent_list, +@@ -722,16 +642,13 @@ + } + } + +-static void ++static GtkTreeModel * + panel_addto_make_application_model (PanelAddtoDialog *dialog) + { + GtkTreeStore *store; + GMenuTree *tree; + GMenuTreeDirectory *root; + +- if (dialog->filter_application_model != NULL) +- return; +- + store = gtk_tree_store_new (NUMBER_COLUMNS, + GDK_TYPE_PIXBUF, + G_TYPE_STRING, +@@ -773,20 +690,19 @@ + + gmenu_tree_unref (tree); + +- dialog->application_model = GTK_TREE_MODEL (store); +- dialog->filter_application_model = gtk_tree_model_filter_new (GTK_TREE_MODEL (dialog->application_model), +- NULL); +- gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (dialog->filter_application_model), +- panel_addto_filter_func, +- dialog, NULL); ++ return GTK_TREE_MODEL (store); + } + +-static void ++gboolean + panel_addto_add_item (PanelAddtoDialog *dialog, + PanelAddtoItemInfo *item_info) + { ++ gboolean destroy; ++ + g_assert (item_info != NULL); + ++ destroy = TRUE; ++ + switch (item_info->type) { + case PANEL_ADDTO_APPLET: + panel_applet_frame_create (dialog->panel_widget->toplevel, +@@ -800,6 +716,7 @@ + break; + case PANEL_ADDTO_LAUNCHER_MENU: + panel_addto_present_applications (dialog); ++ destroy = FALSE; + break; + case PANEL_ADDTO_LAUNCHER: + panel_launcher_create (dialog->panel_widget->toplevel, +@@ -832,18 +749,21 @@ + NULL, FALSE, NULL); + break; + } ++ ++ return destroy; + } + +-static void ++void + panel_addto_dialog_response (GtkWidget *widget_dialog, + guint response_id, + PanelAddtoDialog *dialog) + { +- GtkTreeSelection *selection; +- GtkTreeModel *filter_model; +- GtkTreeModel *child_model; +- GtkTreeIter iter; +- GtkTreeIter filter_iter; ++ PanelAddtoItemInfo *data; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoEntry *selected_applet; ++ GtkTreeSelection *selected_application; ++ GtkTreeModel *model; ++ GtkTreeIter iter; + + switch (response_id) { + case GTK_RESPONSE_HELP: +@@ -852,28 +772,43 @@ + break; + + case PANEL_ADDTO_RESPONSE_ADD: +- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view)); +- if (gtk_tree_selection_get_selected (selection, &filter_model, +- &filter_iter)) { +- PanelAddtoItemInfo *data; +- +- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (filter_model), +- &iter, +- &filter_iter); +- child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model)); +- gtk_tree_model_get (child_model, &iter, +- COLUMN_DATA, &data, -1); + +- if (data != NULL) ++ if (dialog->status == APPLETS) { ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ selected_applet = priv->selected; ++ data = selected_applet->item_info; ++ if (data) { + panel_addto_add_item (dialog, data); +- } ++ } ++ } else if (dialog->status == APPLICATIONS) { ++ selected_application = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view)); ++ if (gtk_tree_selection_get_selected (selected_application, ++ &model, &iter)) { ++ gtk_tree_model_get (model, &iter, ++ COLUMN_DATA, &data, -1); ++ ++ if (data != NULL) { ++ panel_addto_add_item (dialog, data); ++ } ++ } ++ } ++ + break; + ++ + case PANEL_ADDTO_RESPONSE_BACK: + /* This response only happens when we're showing the + * application list and the user wants to go back to the + * applet list. */ +- panel_addto_present_applets (dialog); ++ gtk_widget_hide (dialog->applications_sw); ++ dialog->status = APPLETS; ++ panel_addto_present_applets (dialog); ++ gtk_widget_show_all (dialog->applets_sw); ++ gtk_widget_show (dialog->statuslabel); ++ gtk_widget_show (dialog->search_entry); ++ gtk_widget_show (dialog->search_label); ++ gtk_widget_set_sensitive (dialog->launcher_button, TRUE); ++ gtk_widget_set_sensitive (dialog->custom_launcher_button, TRUE); + break; + + case GTK_RESPONSE_CLOSE: +@@ -886,6 +821,40 @@ + } + + static void ++panel_addto_add_launcher (PanelAddtoDialog *dialog) ++{ ++ PanelAddtoEntry *launcher_applet; ++ PanelAddtoItemInfo *data; ++ ++ launcher_applet = g_new (PanelAddtoEntry, 1); ++ data = launcher_applet->item_info; ++ data = g_new (PanelAddtoItemInfo, 1); ++ data->type = PANEL_ADDTO_LAUNCHER_MENU; ++ ++ panel_addto_add_item (dialog, data); ++ ++ g_free (launcher_applet); ++ g_free (data); ++} ++ ++static void ++panel_addto_add_custom_launcher (PanelAddtoDialog *dialog) ++{ ++ PanelAddtoEntry *launcher_applet; ++ PanelAddtoItemInfo *data; ++ ++ launcher_applet = g_new (PanelAddtoEntry, 1); ++ data = launcher_applet->item_info; ++ data = g_new (PanelAddtoItemInfo, 1); ++ data->type = PANEL_ADDTO_LAUNCHER_NEW; ++ ++ panel_addto_add_item (dialog, data); ++ ++ g_free (launcher_applet); ++ g_free (data); ++} ++ ++static void + panel_addto_dialog_destroy (GtkWidget *widget_dialog, + PanelAddtoDialog *dialog) + { +@@ -895,45 +864,268 @@ + NULL); + } + ++ ++static PanelAddtoCategory * ++panel_addto_category_new (const gchar *title, ++ const gchar *english_title, ++ gboolean real_category) ++{ ++ PanelAddtoCategory *retval; ++ retval = g_new0 (PanelAddtoCategory, 1); ++ ++ retval->title = g_strdup (title); ++ retval->english_title = g_strdup (english_title); ++ retval->real_category = real_category != FALSE; ++ retval->entries = NULL; /* We will populate it in init_categories */ ++ ++ return retval; ++} ++ ++static int ++compare_categories (PanelAddtoCategory *a, ++ PanelAddtoCategory *b) ++{ ++ return g_utf8_collate (a->title, b->title); ++} ++ ++static void ++panel_addto_init_categories (PanelAddtoDialog *dialog) ++{ ++ PanelAddtoInformation *info; ++ PanelAddtoItemInfo *applet; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *current_category; ++ GSList *categories = NULL; ++ GSList *l, *m; ++ gchar *category_title, *category_english_title; ++ gboolean found; ++ ++ info = g_new0 (PanelAddtoInformation, 1); ++ ++ for (l = dialog->applet_list; l; l = l->next) { ++ applet = l->data; ++ category_title = g_strdup (applet->category); ++ category_english_title = g_strdup (applet->english_category); ++ found = FALSE; ++ for (m = categories; m; m = m->next) { ++ current_category = m->data; ++ if (!g_utf8_collate (current_category->english_title, category_english_title)) { ++ found = TRUE; ++ current_category->n_entries++; ++ if (!current_category->translated && strcmp (category_title, category_english_title)) { ++ current_category->title = category_title; ++ current_category->translated = TRUE; ++ } ++ break; ++ } ++ } ++ if (!found) { ++ categories = g_slist_prepend (categories, ++ panel_addto_category_new (category_title, category_english_title, TRUE)); ++ current_category = categories->data; ++ current_category->translated = strcmp (category_title, category_english_title) ? TRUE : FALSE; ++ current_category->n_entries = 1; ++ } ++ ++ entry = g_new0 (PanelAddtoEntry, 1); ++ entry->title = g_strdup (applet->name); ++ entry->comment = g_strdup (applet->description); ++ entry->item_info = applet; ++ entry->category = current_category; ++ entry->dialog = dialog; ++ entry->icon_pixbuf = panel_addto_make_pixbuf (applet->icon); ++ current_category->entries = g_slist_append (current_category->entries, entry); ++ } ++ ++ categories = g_slist_sort (categories, ++ (GCompareFunc) compare_categories); ++ ++ info->n_categories = g_slist_length (categories); ++ info->categories = categories; ++ ++ dialog->info = info; ++} ++ ++static gboolean ++panel_addto_separator_func (GtkTreeModel *model, ++ GtkTreeIter *iter, ++ gpointer data) ++{ ++ int column = GPOINTER_TO_INT (data); ++ char *text; ++ ++ gtk_tree_model_get (model, iter, column, &text, -1); ++ ++ if (!text) ++ return TRUE; ++ ++ g_free(text); ++ return FALSE; ++} ++ ++static void ++panel_addto_applications_selection_changed (GtkTreeSelection *selection, ++ PanelAddtoDialog *dialog) ++{ ++ GtkTreeModel *model; ++ GtkTreeIter iter; ++ PanelAddtoItemInfo *data; ++ char *iid; ++ ++ ++ if (!gtk_tree_selection_get_selected (selection, &model, &iter)) { ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE); ++ return; ++ } ++ ++ gtk_tree_model_get (model, &iter, COLUMN_DATA, &data, -1); ++ ++ if (!data) { ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE); ++ return; ++ } ++ ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), TRUE); ++ ++ gtk_button_set_label (GTK_BUTTON (dialog->add_button), ++ GTK_STOCK_ADD); ++ gtk_button_set_use_stock (GTK_BUTTON (dialog->add_button), ++ TRUE); ++ ++ /* only allow dragging applets if we can add applets */ ++ ++ if (panel_profile_id_lists_are_writable ()) { ++ switch (data->type) { ++ case PANEL_ADDTO_LAUNCHER: ++ panel_addto_applications_setup_launcher_drag (GTK_TREE_VIEW (dialog->tree_view), ++ data->launcher_path); ++ break; ++ case PANEL_ADDTO_MENU: ++ ++ /* build the iid for menus other than the main menu */ ++ ++ if (data->iid == NULL) { ++ iid = g_strdup_printf ("MENU:%s/%s", ++ data->menu_filename, ++ data->menu_path); ++ } else { ++ iid = g_strdup (data->iid); ++ } ++ panel_addto_applications_setup_internal_applet_drag (GTK_TREE_VIEW (dialog->tree_view), ++ iid); ++ g_free (iid); ++ break; ++ default: ++ break; ++ } ++ } ++} ++ ++ ++static void ++panel_addto_applications_selection_activated (GtkTreeView *view, ++ GtkTreePath *path, ++ GtkTreeViewColumn *column, ++ PanelAddtoDialog *dialog) ++{ ++ gtk_dialog_response (GTK_DIALOG (dialog->addto_dialog), ++ PANEL_ADDTO_RESPONSE_ADD); ++} ++ + static void + panel_addto_present_applications (PanelAddtoDialog *dialog) + { +- if (dialog->filter_application_model == NULL) +- panel_addto_make_application_model (dialog); +- gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view), +- dialog->filter_application_model); +- gtk_window_set_focus (GTK_WINDOW (dialog->addto_dialog), +- dialog->search_entry); +- gtk_widget_set_sensitive (dialog->back_button, TRUE); ++ GtkTreeSelection *selection; ++ GtkTreeViewColumn *column; ++ ++ if (dialog->application_model == NULL) { ++ dialog->application_model = panel_addto_make_application_model (dialog); ++ } ++ gtk_widget_hide (dialog->applets_sw); ++ gtk_widget_hide (dialog->statuslabel); ++ gtk_widget_hide (dialog->search_entry); ++ gtk_widget_hide (dialog->search_label); ++ ++ gtk_widget_set_sensitive (dialog->launcher_button, FALSE); ++ gtk_widget_set_sensitive (dialog->custom_launcher_button, FALSE); ++ ++ dialog->status = APPLICATIONS; ++ ++ dialog->applications_sw = gtk_scrolled_window_new (NULL, NULL); ++ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dialog->applications_sw), ++ GTK_POLICY_AUTOMATIC, ++ GTK_POLICY_AUTOMATIC); ++ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (dialog->applications_sw), ++ GTK_SHADOW_IN); ++ dialog->tree_view = gtk_tree_view_new (); ++ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (dialog->tree_view), ++ FALSE); ++ gtk_tree_view_expand_all (GTK_TREE_VIEW (dialog->tree_view)); ++ ++ dialog->renderer = g_object_new (GTK_TYPE_CELL_RENDERER_PIXBUF, ++ "xpad", 4, ++ "ypad", 4, ++ NULL); ++ ++ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view), ++ -1, NULL, ++ dialog->renderer, ++ "pixbuf", COLUMN_ICON, ++ NULL); ++ ++ dialog->renderer = gtk_cell_renderer_text_new (); ++ g_object_set (dialog->renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); ++ ++ gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view), ++ -1, NULL, ++ dialog->renderer, ++ "markup", COLUMN_TEXT, ++ NULL); ++ gtk_tree_view_set_search_column (GTK_TREE_VIEW (dialog->tree_view), ++ COLUMN_SEARCH); ++ ++ gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (dialog->tree_view), ++ panel_addto_separator_func, ++ GINT_TO_POINTER (COLUMN_TEXT), ++ NULL); ++ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view)); ++ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); ++ ++ column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->tree_view), ++ COLUMN_TEXT); ++ gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); ++ ++ g_signal_connect (selection, "changed", ++ G_CALLBACK (panel_addto_applications_selection_changed), ++ dialog); ++ ++ g_signal_connect (dialog->tree_view, "row-activated", ++ G_CALLBACK (panel_addto_applications_selection_activated), ++ dialog); + +- if (dialog->applet_search_text) +- g_free (dialog->applet_search_text); ++ gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view), ++ dialog->application_model); ++ gtk_container_add (GTK_CONTAINER (dialog->applications_sw), ++ GTK_WIDGET (dialog->tree_view)); ++ gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), ++ GTK_WIDGET (dialog->applications_sw), TRUE, TRUE, 0); + +- dialog->applet_search_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->search_entry))); +- /* show everything */ +- gtk_entry_set_text (GTK_ENTRY (dialog->search_entry), ""); ++ ++ gtk_window_set_focus (GTK_WINDOW (dialog->addto_dialog), ++ dialog->tree_view); ++ gtk_widget_set_sensitive (dialog->back_button, TRUE); ++ gtk_widget_show_all (GTK_WIDGET (dialog->applications_sw)); + } + + static void + panel_addto_present_applets (PanelAddtoDialog *dialog) + { +- if (dialog->filter_applet_model == NULL) +- panel_addto_make_applet_model (dialog); +- gtk_tree_view_set_model (GTK_TREE_VIEW (dialog->tree_view), +- dialog->filter_applet_model); +- gtk_window_set_focus (GTK_WINDOW (dialog->addto_dialog), +- dialog->search_entry); +- gtk_widget_set_sensitive (dialog->back_button, FALSE); + +- if (dialog->applet_search_text) { +- gtk_entry_set_text (GTK_ENTRY (dialog->search_entry), +- dialog->applet_search_text); +- gtk_editable_set_position (GTK_EDITABLE (dialog->search_entry), +- -1); ++ if (dialog->applet_model == NULL) ++ dialog->applet_model = panel_addto_make_applet_model (dialog); + +- g_free (dialog->applet_search_text); +- dialog->applet_search_text = NULL; +- } ++ gtk_widget_set_sensitive (dialog->back_button, FALSE); ++ + } + + static void +@@ -994,8 +1186,10 @@ + static void + panel_addto_dialog_free (PanelAddtoDialog *dialog) + { +- GConfClient *client; +- GSList *item; ++ GConfClient *client; ++ GSList *item, *l, *m; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; + + client = panel_gconf_get_client (); + +@@ -1003,18 +1197,14 @@ + gconf_client_notify_remove (client, dialog->name_notify); + dialog->name_notify = 0; + +- if (dialog->search_text) +- g_free (dialog->search_text); +- dialog->search_text = NULL; +- +- if (dialog->applet_search_text) +- g_free (dialog->applet_search_text); +- dialog->applet_search_text = NULL; +- + if (dialog->addto_dialog) +- gtk_widget_destroy (dialog->addto_dialog); ++ gtk_widget_destroy (dialog->addto_dialog); + dialog->addto_dialog = NULL; +- ++ ++ if (dialog->label) { ++ dialog->label = NULL; ++ } ++ + for (item = dialog->applet_list; item != NULL; item = item->next) { + PanelAddtoItemInfo *applet; + +@@ -1028,19 +1218,33 @@ + + panel_addto_dialog_free_application_list (dialog->application_list); + panel_addto_dialog_free_application_list (dialog->settings_list); ++ ++ if (dialog->canvas) { ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ if (priv) { ++ if (priv && priv->info && priv->info->categories) { ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ for (m = current_category->entries; m; m = m->next) { ++ g_free (m->data); ++ } ++ if (current_category->user_data) ++ g_free (current_category->user_data); ++ g_slist_free (current_category->entries); ++ g_free (current_category); ++ } ++ g_slist_free (priv->info->categories); ++ } ++ g_free (priv->search_text); ++ } ++ } + +- if (dialog->filter_applet_model) +- g_object_unref (dialog->filter_applet_model); +- dialog->filter_applet_model = NULL; ++ + + if (dialog->applet_model) +- g_object_unref (dialog->applet_model); ++ g_object_unref (dialog->applet_model); + dialog->applet_model = NULL; + +- if (dialog->filter_application_model) +- g_object_unref (dialog->filter_application_model); +- dialog->filter_application_model = NULL; +- + if (dialog->application_model) + g_object_unref (dialog->application_model); + dialog->application_model = NULL; +@@ -1062,17 +1266,18 @@ + label = NULL; + + if (!string_empty (name)) +- label = g_strdup_printf (_("Find an _item to add to \"%s\":"), ++ label = g_strdup_printf (_("Select an _item to add to \"%s\":"), + name); + + if (panel_toplevel_get_is_attached (dialog->panel_widget->toplevel)) { + title = g_strdup_printf (_("Add to Drawer")); + if (label == NULL) +- label = g_strdup (_("Find an _item to add to the drawer:")); ++ label = g_strdup (_("Select an _item to add to the drawer:")); + } else { + title = g_strdup_printf (_("Add to Panel")); + if (label == NULL) +- label = g_strdup (_("Find an _item to add to the panel:")); ++ label = g_strdup (_("Select an _item to add to the panel \n\ ++(you can also directly drag and drop items onto the panel):")); + } + + gtk_window_set_title (GTK_WINDOW (dialog->addto_dialog), title); +@@ -1106,199 +1311,24 @@ + panel_addto_name_change (dialog, text); + } + +-static gboolean +-panel_addto_filter_func (GtkTreeModel *model, +- GtkTreeIter *iter, +- gpointer userdata) +-{ +- PanelAddtoDialog *dialog; +- PanelAddtoItemInfo *data; +- +- dialog = (PanelAddtoDialog *) userdata; +- +- if (!dialog->search_text || !dialog->search_text[0]) +- return TRUE; +- +- gtk_tree_model_get (model, iter, COLUMN_DATA, &data, -1); +- +- if (data == NULL) +- return FALSE; +- +- /* This is more a workaround than anything else: show all the root +- * items in a tree store */ +- if (GTK_IS_TREE_STORE (model) && +- gtk_tree_store_iter_depth (GTK_TREE_STORE (model), iter) == 0) +- return TRUE; +- +- return (panel_util_utf8_strstrcase (data->name, +- dialog->search_text) != NULL || +- panel_util_utf8_strstrcase (data->description, +- dialog->search_text) != NULL); +-} +- +-static void +-panel_addto_search_entry_changed (GtkWidget *entry, +- PanelAddtoDialog *dialog) +-{ +- GtkTreeModel *model; +- char *new_text; +- GtkTreeIter iter; +- GtkTreePath *path; +- +- new_text = g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->search_entry))); +- g_strchomp (new_text); +- +- if (dialog->search_text && +- g_utf8_collate (new_text, dialog->search_text) == 0) { +- g_free (new_text); +- return; +- } +- +- if (dialog->search_text) +- g_free (dialog->search_text); +- dialog->search_text = new_text; +- +- model = gtk_tree_view_get_model (GTK_TREE_VIEW (dialog->tree_view)); +- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model)); +- +- path = gtk_tree_path_new_first (); +- if (gtk_tree_model_get_iter (model, &iter, path)) { +- GtkTreeSelection *selection; +- +- gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (dialog->tree_view), +- path, NULL, FALSE, 0, 0); +- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view)); +- gtk_tree_selection_select_path (selection, path); +- } +- gtk_tree_path_free (path); +-} +- +-static void +-panel_addto_search_entry_activated (GtkWidget *entry, +- PanelAddtoDialog *dialog) +-{ +- gtk_dialog_response (GTK_DIALOG (dialog->addto_dialog), +- PANEL_ADDTO_RESPONSE_ADD); +-} +- +-static void +-panel_addto_selection_changed (GtkTreeSelection *selection, +- PanelAddtoDialog *dialog) +-{ +- GtkTreeModel *filter_model; +- GtkTreeModel *child_model; +- GtkTreeIter iter; +- GtkTreeIter filter_iter; +- PanelAddtoItemInfo *data; +- char *iid; +- +- if (!gtk_tree_selection_get_selected (selection, +- &filter_model, +- &filter_iter)) { +- gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), +- FALSE); +- return; +- } +- +- gtk_tree_model_filter_convert_iter_to_child_iter (GTK_TREE_MODEL_FILTER (filter_model), +- &iter, &filter_iter); +- child_model = gtk_tree_model_filter_get_model (GTK_TREE_MODEL_FILTER (filter_model)); +- gtk_tree_model_get (child_model, &iter, COLUMN_DATA, &data, -1); +- +- if (!data) { +- gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), +- FALSE); +- return; +- } +- +- gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), TRUE); +- +- if (data->type == PANEL_ADDTO_LAUNCHER_MENU) { +- gtk_button_set_label (GTK_BUTTON (dialog->add_button), +- GTK_STOCK_GO_FORWARD); +- } else { +- gtk_button_set_label (GTK_BUTTON (dialog->add_button), +- GTK_STOCK_ADD); +- } +- gtk_button_set_use_stock (GTK_BUTTON (dialog->add_button), +- TRUE); +- +- /* only allow dragging applets if we can add applets */ +- if (panel_profile_id_lists_are_writable ()) { +- switch (data->type) { +- case PANEL_ADDTO_LAUNCHER: +- panel_addto_setup_launcher_drag (GTK_TREE_VIEW (dialog->tree_view), +- data->launcher_path); +- break; +- case PANEL_ADDTO_APPLET: +- panel_addto_setup_applet_drag (GTK_TREE_VIEW (dialog->tree_view), +- data->iid); +- break; +- case PANEL_ADDTO_LAUNCHER_MENU: +- gtk_tree_view_unset_rows_drag_source (GTK_TREE_VIEW (dialog->tree_view)); +- break; +- case PANEL_ADDTO_MENU: +- /* build the iid for menus other than the main menu */ +- if (data->iid == NULL) { +- iid = g_strdup_printf ("MENU:%s/%s", +- data->menu_filename, +- data->menu_path); +- } else { +- iid = g_strdup (data->iid); +- } +- panel_addto_setup_internal_applet_drag (GTK_TREE_VIEW (dialog->tree_view), +- iid); +- g_free (iid); +- break; +- default: +- panel_addto_setup_internal_applet_drag (GTK_TREE_VIEW (dialog->tree_view), +- data->iid); +- break; +- } +- } +-} +- +-static void +-panel_addto_selection_activated (GtkTreeView *view, +- GtkTreePath *path, +- GtkTreeViewColumn *column, +- PanelAddtoDialog *dialog) +-{ +- gtk_dialog_response (GTK_DIALOG (dialog->addto_dialog), +- PANEL_ADDTO_RESPONSE_ADD); +-} +- +-static gboolean +-panel_addto_separator_func (GtkTreeModel *model, +- GtkTreeIter *iter, +- gpointer data) +-{ +- int column = GPOINTER_TO_INT (data); +- char *text; +- +- gtk_tree_model_get (model, iter, column, &text, -1); +- +- if (!text) +- return TRUE; +- +- g_free(text); +- return FALSE; +-} + + static PanelAddtoDialog * + panel_addto_dialog_new (PanelWidget *panel_widget) + { + PanelAddtoDialog *dialog; +- GtkWidget *vbox; +- GtkWidget *inner_vbox; +- GtkWidget *find_hbox; +- GtkWidget *sw; +- GtkCellRenderer *renderer; +- GtkTreeSelection *selection; +- GtkTreeViewColumn *column; ++ GtkWidget *vbox; ++ GtkWidget *top_hbox; ++ GtkWidget *launchers_hbox; ++ GdkPixbuf *launcher_pixbuf; ++ GtkWidget *launcher_image; ++ GtkWidget *bottom_hbox; ++ GtkTooltips *launchers_tooltips; ++ GtkImage *label_image; + + dialog = g_new0 (PanelAddtoDialog, 1); + ++ dialog->status = APPLETS; ++ + g_object_set_qdata_full (G_OBJECT (panel_widget->toplevel), + panel_addto_dialog_quark, + dialog, +@@ -1306,14 +1336,14 @@ + + dialog->panel_widget = panel_widget; + dialog->name_notify = +- panel_profile_toplevel_notify_add ( +- dialog->panel_widget->toplevel, +- "name", +- (GConfClientNotifyFunc) panel_addto_name_notify, +- dialog); +- +- ++ panel_profile_toplevel_notify_add (dialog->panel_widget->toplevel, ++ "name", ++ (GConfClientNotifyFunc) panel_addto_name_notify, ++ dialog); + dialog->addto_dialog = gtk_dialog_new (); ++ ++ dialog->statuslabel = gtk_label_new (""); ++ + gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog), + GTK_STOCK_HELP, GTK_RESPONSE_HELP); + dialog->back_button = gtk_dialog_add_button (GTK_DIALOG (dialog->addto_dialog), +@@ -1341,104 +1371,99 @@ + vbox = gtk_vbox_new (FALSE, 12); + gtk_container_set_border_width (GTK_CONTAINER (vbox), 5); + gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog->addto_dialog)->vbox), +- vbox); +- +- inner_vbox = gtk_vbox_new (FALSE, 6); +- gtk_box_pack_start (GTK_BOX (vbox), inner_vbox, TRUE, TRUE, 0); ++ GTK_WIDGET (vbox)); + +- find_hbox = gtk_hbox_new (FALSE, 6); +- gtk_box_pack_start (GTK_BOX (inner_vbox), find_hbox, FALSE, FALSE, 0); ++ dialog->inner_vbox = gtk_vbox_new (FALSE, 6); ++ gtk_box_pack_start (GTK_BOX (vbox), dialog->inner_vbox, TRUE, TRUE, 0); + ++ top_hbox = gtk_hbox_new (FALSE, 6); ++ launchers_hbox = gtk_hbox_new (FALSE, 6); ++ bottom_hbox = gtk_hbox_new (FALSE, 0); + dialog->label = gtk_label_new_with_mnemonic (""); + gtk_misc_set_alignment (GTK_MISC (dialog->label), 0.0, 0.5); + gtk_label_set_use_markup (GTK_LABEL (dialog->label), TRUE); + +- gtk_box_pack_start (GTK_BOX (find_hbox), dialog->label, +- FALSE, FALSE, 0); +- +- dialog->search_entry = gtk_entry_new (); ++ label_image = g_object_new (GTK_TYPE_IMAGE, ++ "stock", GTK_STOCK_DIALOG_INFO, ++ "icon-size", GTK_ICON_SIZE_DND, ++ NULL); ++ dialog->search_label = gtk_label_new (_("Search : ")); ++ dialog->search_entry = gtk_entry_new (); ++ g_strdup (gtk_entry_get_text (GTK_ENTRY (dialog->search_entry))); ++ + g_signal_connect (G_OBJECT (dialog->search_entry), "changed", +- G_CALLBACK (panel_addto_search_entry_changed), dialog); ++ G_CALLBACK (panel_addto_relayout_for_search), dialog); + g_signal_connect (G_OBJECT (dialog->search_entry), "activate", +- G_CALLBACK (panel_addto_search_entry_activated), dialog); +- +- gtk_box_pack_end (GTK_BOX (find_hbox), dialog->search_entry, +- TRUE, TRUE, 0); +- +- gtk_label_set_mnemonic_widget (GTK_LABEL (dialog->label), +- dialog->search_entry); +- +- sw = gtk_scrolled_window_new (NULL, NULL); +- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), +- GTK_POLICY_AUTOMATIC, +- GTK_POLICY_AUTOMATIC); +- gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), +- GTK_SHADOW_IN); +- gtk_box_pack_start (GTK_BOX (inner_vbox), sw, TRUE, TRUE, 0); +- +- dialog->tree_view = gtk_tree_view_new (); +- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (dialog->tree_view), +- FALSE); +- gtk_tree_view_expand_all (GTK_TREE_VIEW (dialog->tree_view)); +- +- renderer = g_object_new (GTK_TYPE_CELL_RENDERER_PIXBUF, +- "xpad", 4, +- "ypad", 4, +- NULL); ++ G_CALLBACK (panel_addto_activate_from_searchbar), dialog); ++ ++ gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET(label_image), ++ FALSE, FALSE, 0); ++ ++ gtk_box_pack_start (GTK_BOX (top_hbox), dialog->label, ++ TRUE, TRUE, 0); ++ ++ gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET (dialog->search_label), ++ FALSE, FALSE, 0); + +- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view), +- -1, NULL, +- renderer, +- "pixbuf", COLUMN_ICON, +- NULL); +- renderer = gtk_cell_renderer_text_new (); +- g_object_set (renderer, "ellipsize", PANGO_ELLIPSIZE_END, NULL); +- gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (dialog->tree_view), +- -1, NULL, +- renderer, +- "markup", COLUMN_TEXT, +- NULL); ++ gtk_box_pack_start (GTK_BOX (top_hbox), GTK_WIDGET (dialog->search_entry), ++ TRUE, TRUE, 0); + +- //FIXME use the same search than the one for the search entry? +- gtk_tree_view_set_search_column (GTK_TREE_VIEW (dialog->tree_view), +- COLUMN_SEARCH); ++ gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), top_hbox, ++ FALSE, FALSE, 0); + +- gtk_tree_view_set_row_separator_func (GTK_TREE_VIEW (dialog->tree_view), +- panel_addto_separator_func, +- GINT_TO_POINTER (COLUMN_TEXT), +- NULL); +- ++ /* Launcher button */ ++ launchers_tooltips = gtk_tooltips_new (); ++ dialog->launcher_button = gtk_button_new_with_mnemonic (_("A_pplication Launcher...")); ++ launcher_pixbuf = panel_addto_make_pixbuf_for_launcher ("launcher-program"); ++ launcher_image = gtk_image_new_from_pixbuf (launcher_pixbuf); ++ gtk_button_set_image (GTK_BUTTON (dialog->launcher_button), launcher_image); ++ gtk_tooltips_set_tip (launchers_tooltips, dialog->launcher_button, _("Launch a program that is already in the GNOME menu"), NULL); ++ g_signal_connect_swapped (dialog->launcher_button, "clicked", ++ G_CALLBACK (panel_addto_add_launcher), dialog); ++ gtk_box_pack_start (GTK_BOX (launchers_hbox), dialog->launcher_button, ++ FALSE, FALSE, 0); + +- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (dialog->tree_view)); +- gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); ++ /* Custom launcher button*/ ++ dialog->custom_launcher_button = gtk_button_new_with_mnemonic (_("_Custom Application Launcher")); ++ launcher_image = gtk_image_new_from_pixbuf (launcher_pixbuf); ++ gtk_button_set_image (GTK_BUTTON (dialog->custom_launcher_button), launcher_image); ++ gtk_tooltips_set_tip (launchers_tooltips, dialog->custom_launcher_button, _("Create a new launcher"), NULL); ++ g_signal_connect_swapped (dialog->custom_launcher_button, "clicked", ++ G_CALLBACK (panel_addto_add_custom_launcher), dialog); ++ gtk_box_pack_start (GTK_BOX (launchers_hbox), dialog->custom_launcher_button, ++ FALSE, FALSE, 0); + +- column = gtk_tree_view_get_column (GTK_TREE_VIEW (dialog->tree_view), +- COLUMN_TEXT); +- gtk_tree_view_column_set_sizing (column, GTK_TREE_VIEW_COLUMN_FIXED); ++ gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), launchers_hbox, ++ FALSE, FALSE, 0); + +- g_signal_connect (selection, "changed", +- G_CALLBACK (panel_addto_selection_changed), +- dialog); ++ dialog->applets_sw = gtk_scrolled_window_new (NULL, NULL); ++ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (dialog->applets_sw), ++ GTK_POLICY_AUTOMATIC, ++ GTK_POLICY_AUTOMATIC); ++ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (dialog->applets_sw), ++ GTK_SHADOW_IN); + +- g_signal_connect (dialog->tree_view, "row-activated", +- G_CALLBACK (panel_addto_selection_activated), +- dialog); ++ gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), dialog->applets_sw, TRUE, TRUE, 0); ++ gtk_box_pack_start (GTK_BOX (bottom_hbox), dialog->statuslabel, FALSE, FALSE, 0); + +- gtk_container_add (GTK_CONTAINER (sw), dialog->tree_view); ++ gtk_box_pack_start (GTK_BOX (dialog->inner_vbox), bottom_hbox, ++ FALSE, FALSE, 0); + + gtk_widget_show_all (vbox); + ++ gtk_label_set_mnemonic_widget (GTK_LABEL (dialog->label), ++ dialog->canvas); ++ + panel_toplevel_push_autohide_disabler (dialog->panel_widget->toplevel); + panel_widget_register_open_dialog (panel_widget, + dialog->addto_dialog); +- + panel_addto_name_change (dialog, + panel_toplevel_get_name (dialog->panel_widget->toplevel)); + + return dialog; + } + +-#define MAX_ADDTOPANEL_HEIGHT 490 ++#define MAX_ADDTOPANEL_HEIGHT 540 + + void + panel_addto_present (GtkMenuItem *item, +@@ -1447,6 +1472,7 @@ + PanelAddtoDialog *dialog; + PanelToplevel *toplevel; + PanelData *pd; ++ GtkAdjustment *sw_adjustment = NULL; + GdkScreen *screen; + gint screen_height; + gint height; +@@ -1467,12 +1493,24 @@ + + if (!dialog) { + dialog = panel_addto_dialog_new (panel_widget); ++ + panel_addto_present_applets (dialog); ++ panel_addto_init_categories (dialog); ++ ++ dialog->canvas = panel_addto_canvas_new (dialog->info); ++ gtk_container_add (GTK_CONTAINER (dialog->applets_sw), ++ GTK_WIDGET (dialog->canvas)); + } + ++ sw_adjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (dialog->applets_sw)); + dialog->insertion_position = pd ? pd->insertion_pos : -1; + gtk_window_set_screen (GTK_WINDOW (dialog->addto_dialog), screen); + gtk_window_set_default_size (GTK_WINDOW (dialog->addto_dialog), +- height * 8 / 7, height); ++ height * 1.35, height); + gtk_window_present (GTK_WINDOW (dialog->addto_dialog)); ++ ++ sw_adjustment->value = sw_adjustment->lower; ++ sw_adjustment->step_increment = 55; ++ gtk_adjustment_clamp_page (sw_adjustment, sw_adjustment->lower, sw_adjustment->upper); ++ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (dialog->applets_sw), sw_adjustment); + } +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-canvas.c gnome-panel-2.14.1.new/gnome-panel/panel-addto-canvas.c +--- gnome-panel-2.14.1/gnome-panel/panel-addto-canvas.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-canvas.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,2309 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* Copyright (C) 2005 Carlos Garnacho ++ * ++ * 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 2 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. ++ * ++ * Authors: Jody Goldberg ++ * Carlos Garnacho Parro ++ * Manu Cornet ++ */ ++ ++ ++#include "panel-addto-canvas.h" ++#include "panel-addto.h" ++#include "panel-profile.h" ++ ++#define PAD 5 /*when scrolling keep a few pixels above or below if possible */ ++#define ABOVE_LINE_SPACING 0 ++#define UNDER_LINE_SPACING 0 ++#define UNDER_TITLE_SPACING 0 /* manually insert 1 blank line of text */ ++#define LINE_HEIGHT 1 ++#define BORDERS 7 ++#define MAX_ITEM_WIDTH 125 ++#define ITEMS_SEPARATION 7 ++ ++#include "panel-addto-canvas.h" ++#include "panel-addto-event-box.h" ++#include "panel-addto-rounded-rect.h" ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define PANEL_ADDTO_CANVAS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasPrivate)) ++ ++typedef struct EntryInfo { ++ PanelAddtoCanvas *canvas; ++ ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *text; ++ GnomeCanvasItem *pixbuf; ++ GnomeCanvasItem *highlight_pixbuf; ++ GnomeCanvasItem *cover; ++ GnomeCanvasItem *selection; ++ ++ double icon_height; ++ double icon_width; ++ double text_height; ++ guint launching : 1; ++ guint selected : 1; ++ guint highlighted : 1; ++ gboolean visible; ++ ++ gint n_category; ++ gint n_entry; ++ gint index; ++} EntryInfo; ++ ++typedef struct { ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *title; ++ GnomeCanvasItem *line; ++ gboolean visible; ++} CategoryInfo; ++ ++enum { ++ SELECTION_CHANGED, ++ LAST_SIGNAL ++}; ++ ++enum { ++ PROP_0, ++ PROP_INFO ++}; ++ ++ ++static guint panel_addto_canvas_signals [LAST_SIGNAL] = { 0 }; ++ ++ ++static void panel_addto_canvas_class_init (PanelAddtoCanvasClass *class); ++static void panel_addto_canvas_init (PanelAddtoCanvas *canvas); ++static void panel_addto_canvas_finalize (GObject *object); ++static void panel_addto_canvas_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec); ++static void panel_addto_canvas_get_property (GObject *object, ++ guint prop_id, ++ GValue *value, ++ GParamSpec *pspec); ++static void panel_addto_canvas_draw_background (GnomeCanvas *canvas, GdkDrawable *drawable, ++ int x, int y, int width, int height); ++static void panel_addto_canvas_size_allocate (GtkWidget *canvas, ++ GtkAllocation *allocation); ++static void panel_addto_canvas_style_set (GtkWidget *canvas, ++ GtkStyle *previous_style); ++static void panel_addto_canvas_realize (GtkWidget *canvas); ++ ++static void panel_addto_select_east_entry (EntryInfo *ei, PanelAddtoCanvas *canvas); ++static void build_canvas (PanelAddtoCanvas *canvas); ++static void relayout_canvas (PanelAddtoCanvas *canvas); ++static void set_style (PanelAddtoCanvas *canvas, gboolean font_changed); ++ ++G_DEFINE_TYPE (PanelAddtoCanvas, panel_addto_canvas, GNOME_TYPE_CANVAS); ++ ++ ++static AtkObject* panel_addto_canvas_get_accessible (GtkWidget *widget); ++ ++#include "panel-addto-event-box.h" ++#include "panel-addto-rounded-rect.h" ++#include "panel-profile.h" ++ ++static void ++panel_addto_canvas_class_init (PanelAddtoCanvasClass *class) ++{ ++ GObjectClass *object_class = G_OBJECT_CLASS (class); ++ GnomeCanvasClass *canvas_class = GNOME_CANVAS_CLASS (class); ++ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); ++ ++ object_class->set_property = panel_addto_canvas_set_property; ++ object_class->get_property = panel_addto_canvas_get_property; ++ object_class->finalize = panel_addto_canvas_finalize; ++ canvas_class->draw_background = panel_addto_canvas_draw_background; ++ ++ widget_class->style_set = panel_addto_canvas_style_set; ++ widget_class->size_allocate = panel_addto_canvas_size_allocate; ++ widget_class->realize = panel_addto_canvas_realize; ++ widget_class->get_accessible = panel_addto_canvas_get_accessible; ++ ++ class->changed = NULL; ++ ++ g_object_class_install_property (object_class, ++ PROP_INFO, ++ g_param_spec_pointer ("info", ++ "information for the canvas", ++ "information for the canvas", ++ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); ++ panel_addto_canvas_signals [SELECTION_CHANGED] = ++ g_signal_new ("selection-changed", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (PanelAddtoCanvasClass, changed), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__STRING, ++ G_TYPE_NONE, 1, ++ G_TYPE_STRING); ++ ++ g_type_class_add_private (object_class, ++ sizeof (PanelAddtoCanvasPrivate)); ++} ++ ++ ++static void ++panel_addto_canvas_init (PanelAddtoCanvas *canvas) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ g_return_if_fail (PANEL_ADDTO_IS_CANVAS (canvas)); ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ priv->max_width = 300; ++ priv->min_height = 0; ++ priv->info = NULL; ++ priv->selected = NULL; ++ ++ priv->max_item_width = 0; ++ priv->max_item_height = 0; ++ priv->items_per_row = 0; ++ priv->rtl = (gtk_widget_get_direction (GTK_WIDGET (canvas)) == GTK_TEXT_DIR_RTL); ++ priv->accessible_children = g_hash_table_new (g_int_hash, g_int_equal); ++ ++ gtk_widget_show_all (GTK_WIDGET (canvas)); ++} ++ ++static void ++panel_addto_canvas_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (object); ++ ++ switch (prop_id) { ++ case PROP_INFO: ++ priv->info = g_value_get_pointer (value); ++ build_canvas (PANEL_ADDTO_CANVAS (object)); ++ break; ++ } ++} ++ ++static void ++panel_addto_canvas_get_property (GObject *object, ++ guint prop_id, ++ GValue *value, ++ GParamSpec *pspec) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (object); ++ ++ switch (prop_id) { ++ case PROP_INFO: ++ g_value_set_pointer (value, priv->info); ++ break; ++ } ++} ++ ++static void ++panel_addto_canvas_finalize (GObject *object) ++{ ++ if (G_OBJECT_CLASS (panel_addto_canvas_parent_class)->finalize) ++ (* G_OBJECT_CLASS (panel_addto_canvas_parent_class)->finalize) (object); ++} ++ ++ ++static void ++panel_addto_canvas_draw_background (GnomeCanvas *canvas, GdkDrawable *drawable, ++ int x, int y, int width, int height) ++{ ++ /* By default, we use the style base color. */ ++ gdk_gc_set_foreground (canvas->pixmap_gc, ++ >K_WIDGET (canvas)->style->base[GTK_STATE_NORMAL]); ++ gdk_draw_rectangle (drawable, ++ canvas->pixmap_gc, ++ TRUE, ++ 0, 0, ++ width, height); ++} ++ ++static void ++panel_addto_canvas_size_allocate(GtkWidget *canvas, GtkAllocation *allocation) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ if (GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->size_allocate) ++ (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->size_allocate) (canvas, allocation); ++ ++ if (allocation->height == 1 || allocation->width == 1) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ priv->max_width = allocation->width; ++ priv->min_height = allocation->height; ++ ++ relayout_canvas (PANEL_ADDTO_CANVAS (canvas)); ++ ++ gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0, 0, priv->width - 1, priv->height - 1); ++ g_object_set (priv->under_cover, ++ "x2", priv->width, ++ "y2", priv->height, ++ NULL); ++} ++ ++static void ++panel_addto_canvas_realize (GtkWidget *canvas) ++{ ++ if (GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->realize) ++ (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->realize) (canvas); ++ ++ set_style (PANEL_ADDTO_CANVAS (canvas), FALSE); ++} ++ ++static void ++panel_addto_canvas_style_set (GtkWidget *canvas, GtkStyle *previous_style) ++{ ++ if (!GTK_WIDGET_REALIZED (canvas)) ++ return; ++ ++ set_style (PANEL_ADDTO_CANVAS (canvas), (previous_style && ++ canvas->style && ++ !pango_font_description_equal (canvas->style->font_desc, ++ previous_style->font_desc))); ++} ++ ++static void ++gnome_canvas_item_show_hide (GnomeCanvasItem *item, gboolean show) ++{ ++ if (show) ++ gnome_canvas_item_show (item); ++ else ++ gnome_canvas_item_hide (item); ++} ++ ++static void ++setup_entry (PanelAddtoCanvas *canvas, PanelAddtoEntry *entry) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei; ++ GtkWidget *widget; ++ GtkStateType state; ++ ++ if (!entry) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ widget = GTK_WIDGET (canvas); ++ ei = entry->user_data; ++ ++ if (ei->pixbuf) { ++ gnome_canvas_item_show_hide (ei->highlight_pixbuf, ei->highlighted); ++ gnome_canvas_item_show_hide (ei->pixbuf, !ei->highlighted); ++ } ++ if (!ei->selected) ++ state = GTK_STATE_NORMAL; ++ else if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (widget)))) ++ state = GTK_STATE_SELECTED; ++ else ++ state = GTK_STATE_ACTIVE; ++ gnome_canvas_item_show_hide (ei->selection, ei->selected); ++ g_object_set (ei->selection, ++ "fill_color_gdk", &widget->style->base [state], ++ NULL); ++ g_object_set (ei->text, ++ "fill_color_gdk", &widget->style->text [state], ++ NULL); ++} ++ ++static gboolean ++cb_entry_info_reset (gpointer data) ++{ ++ EntryInfo *ei = data; ++ ei->launching = FALSE; ++ return FALSE; ++} ++ ++ ++void ++activate_entry (PanelAddtoEntry *entry) ++{ ++ EntryInfo *ei = entry->user_data; ++ ++ if (!ei->launching) { ++ ei->launching = TRUE; ++ gtk_timeout_add (1000, cb_entry_info_reset, ei); ++ ++ if (panel_addto_add_item (entry->dialog, entry->item_info)) ++ gtk_widget_destroy (entry->dialog->addto_dialog); ++ } ++} ++ ++static void ++panel_addto_drag_data_get_cb (GtkWidget *widget, ++ GdkDragContext *context, ++ GtkSelectionData *selection_data, ++ guint info, ++ guint time, ++ const char *string) ++{ ++ gtk_selection_data_set (selection_data, ++ selection_data->target, 8, (guchar *) string, ++ strlen (string)); ++} ++ ++static void ++panel_addto_drag_begin_cb (GtkWidget *canvas, ++ GdkDragContext *context, ++ gpointer data) ++{ ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ entry = priv->selected; ++ gtk_drag_set_icon_pixbuf (context, entry->icon_pixbuf, 0, 0); ++} ++ ++static void ++panel_addto_setup_drag (PanelAddtoCanvas *canvas, ++ const GtkTargetEntry *target, ++ const char *text) ++{ ++ if (!text || panel_lockdown_get_locked_down ()) ++ return; ++ ++ ++ gtk_drag_source_set (GTK_WIDGET (canvas), ++ GDK_BUTTON1_MASK|GDK_BUTTON2_MASK, ++ target, 1, GDK_ACTION_COPY); ++ ++ g_signal_connect_data (G_OBJECT (canvas), "drag_data_get", ++ G_CALLBACK (panel_addto_drag_data_get_cb), ++ g_strdup (text), ++ (GClosureNotify) g_free, ++ 0 /* connect_flags */); ++ g_signal_connect_after (G_OBJECT (canvas), "drag-begin", ++ G_CALLBACK (panel_addto_drag_begin_cb), ++ NULL); ++} ++ ++static void ++panel_addto_setup_launcher_drag (PanelAddtoCanvas *canvas, ++ const char *uri) ++{ ++ static GtkTargetEntry target[] = { ++ { "text/uri-list", 0, 0 } ++ }; ++ char *uri_list; ++ ++ uri_list = g_strconcat (uri, "\r\n", NULL); ++ panel_addto_setup_drag (canvas, target, uri_list); ++ g_free (uri_list); ++} ++ ++static void ++panel_addto_setup_applet_drag (PanelAddtoCanvas *canvas, ++ const char *iid) ++{ ++ static GtkTargetEntry target[] = { ++ { "application/x-panel-applet-iid", 0, 0 } ++ }; ++ ++ panel_addto_setup_drag (canvas, target, iid); ++} ++ ++ ++ ++static void ++panel_addto_setup_internal_applet_drag (PanelAddtoCanvas *canvas, ++ const char *applet_type) ++{ ++ static GtkTargetEntry target[] = { ++ { "application/x-panel-applet-internal", 0, 0 } ++ }; ++ ++ panel_addto_setup_drag (canvas, target, applet_type); ++} ++ ++static void ++panel_addto_selection_changed (PanelAddtoCanvas *canvas, ++ const gchar *status_display, ++ PanelAddtoDialog *dialog) ++{ ++ PanelAddtoItemInfo *data; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ data = priv->selected ? priv->selected->item_info : NULL; ++ ++ ++ if ((!priv->selected) || (!data)) { ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE); ++ return; ++ } ++ ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), TRUE); ++ ++ if (dialog->statuslabel) ++ gtk_label_set_text (GTK_LABEL (dialog->statuslabel), priv->selected->comment); ++ ++ if (data->type == PANEL_ADDTO_LAUNCHER_MENU) { ++ gtk_button_set_label (GTK_BUTTON (dialog->add_button), ++ GTK_STOCK_GO_FORWARD); ++ } else { ++ gtk_button_set_label (GTK_BUTTON (dialog->add_button), ++ GTK_STOCK_ADD); ++ } ++ gtk_button_set_use_stock (GTK_BUTTON (dialog->add_button), ++ TRUE); ++ ++} ++ ++static void ++select_entry (PanelAddtoCanvas *canvas, PanelAddtoEntry *entry) ++{ ++ PanelAddtoDialog *dialog; ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei = NULL; ++ GtkAdjustment *pos; ++ double affine[6]; ++ PanelAddtoEntry *selected; ++ ++ dialog = entry->dialog; ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ selected = priv->selected; ++ ++ if (selected == entry) ++ return; ++ ++ if (selected && selected->user_data) ++ ((EntryInfo *) selected->user_data)->selected = FALSE; ++ setup_entry (canvas, selected); ++ ++ priv->selected = selected = entry; ++ ++ if (selected && selected->user_data) ++ ((EntryInfo *) selected->user_data)->selected = TRUE; ++ setup_entry (canvas, selected); ++ ++ g_signal_emit (canvas, panel_addto_canvas_signals [SELECTION_CHANGED], 0, ++ (entry) ? entry->comment : NULL); ++ ++ if (!entry) ++ return; ++ ++ ei = entry->user_data; ++ gnome_canvas_item_i2c_affine (GNOME_CANVAS_ITEM (ei->group), affine); ++ pos = gtk_layout_get_vadjustment (GTK_LAYOUT (ei->cover->canvas)); ++ ++ if (affine[5] < pos->value) ++ gtk_adjustment_set_value (pos, MAX (affine[5] - PAD, 0)); ++ else if ((affine[5] + priv->max_item_height) > (pos->value+pos->page_size)) ++ gtk_adjustment_set_value (pos, MAX (MIN (affine[5] + priv->max_item_height + PAD, pos->upper) - pos->page_size, 0)); ++} ++ ++static gboolean ++cover_event (GnomeCanvasItem *item, GdkEvent *event, PanelAddtoEntry *entry) ++{ ++ EntryInfo *ei = entry->user_data; ++ PanelAddtoCanvas *canvas = ei->canvas; ++ PanelAddtoItemInfo *data; ++ PanelAddtoDialog *dialog = entry->dialog; ++ char *iid; ++ ++ data = entry->item_info; ++ ++ switch (event->type) { ++ case GDK_ENTER_NOTIFY: ++ ei->highlighted = TRUE; ++ setup_entry (canvas, entry); /* highlight even if it is already selected */ ++ ++ /* only allow dragging applets if we can add applets */ ++ if (panel_profile_id_lists_are_writable ()) { ++ switch (data->type) { ++ case PANEL_ADDTO_LAUNCHER: ++ panel_addto_setup_launcher_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->launcher_path); ++ break; ++ case PANEL_ADDTO_APPLET: ++ panel_addto_setup_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->iid); ++ break; ++ case PANEL_ADDTO_LAUNCHER_MENU: ++ break; ++ case PANEL_ADDTO_MENU: ++ /* build the iid for menus other than the main menu */ ++ if (data->iid == NULL) { ++ iid = g_strdup_printf ("MENU:%s/%s", ++ data->menu_filename, ++ data->menu_path); ++ } else { ++ iid = g_strdup (data->iid); ++ } ++ panel_addto_setup_internal_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ iid); ++ g_free (iid); ++ break; ++ default: ++ panel_addto_setup_internal_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->iid); ++ break; ++ } ++ } ++ ++ return TRUE; ++ case GDK_LEAVE_NOTIFY: ++ ei->highlighted = FALSE; ++ setup_entry (canvas, entry); ++ return TRUE; ++ case GDK_BUTTON_PRESS: ++ select_entry (canvas, entry); ++ gtk_widget_grab_focus (GTK_WIDGET (canvas)); ++ return TRUE; ++ case GDK_2BUTTON_PRESS: ++ if (event->button.button == 1) ++ activate_entry (entry); ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ ++static void ++panel_addto_select_first_entry (PanelAddtoCanvas *canvas) ++{ ++ PanelAddtoCategory *category; ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ category = g_slist_nth_data (priv->info->categories, 0); ++ entry = g_slist_nth_data (category->entries, 0); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ select_entry (canvas, entry); ++} ++ ++static gint ++panel_addto_count_visible_entries (PanelAddtoCategory *category) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint n_visible_entries = 0; ++ ++ for (l = category->entries; l; l = l->next) { ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) ++ n_visible_entries++; ++ } ++ return n_visible_entries; ++} ++ ++static gint ++panel_addto_get_rank_of_nth_visible_entry (PanelAddtoCategory *category, gint n) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint seen_visible_entries = 0; ++ gint seen_entries = 0; ++ gint farthest_visible_entry = 0; ++ ++ l = category->entries; ++ ++ while (seen_visible_entries < n) { ++ if (!l) break; ++ seen_entries++; ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) { ++ seen_visible_entries++; ++ farthest_visible_entry = seen_entries; ++ } ++ l = l->next; ++ } ++ ++ return (farthest_visible_entry - 1); ++} ++ ++static gint ++panel_addto_how_many_visible_entries_before_me (PanelAddtoCategory *category, gint rank) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint seen_entries = 0; ++ gint seen_visible_entries = 0; ++ ++ l = category->entries; ++ while (seen_entries < rank) { ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) ++ seen_visible_entries++; ++ l = l->next; ++ seen_entries++; ++ } ++ return seen_visible_entries; ++} ++ ++static void ++panel_addto_select_east_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category, n_entry; ++ gint n_categories; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ if (ei->n_entry == category->n_entries - 1) { ++ if (n_category == priv->info->n_categories - 1) ++ return; ++ category = g_slist_nth_data (priv->info->categories, ei->n_category + 1); ++ entry = g_slist_nth_data (category->entries, 0); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry + 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_west_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category, n_entry; ++ gint n_categories; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ if (ei->n_entry == 0) { ++ if (n_category == 0) ++ return; ++ category = g_slist_nth_data (priv->info->categories, ei->n_category - 1); ++ entry = g_slist_nth_data (category->entries, category->n_entries - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_west_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_west_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_north_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category = 0; ++ gint n_categories; ++ gint n_visible_entries = 0; ++ gint n_visible_entries_before_me = 0; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ CategoryInfo *catinfo; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ n_visible_entries_before_me = ++ panel_addto_how_many_visible_entries_before_me (category, ei->n_entry); ++ if (n_visible_entries_before_me + 1 - priv->items_per_row <= 0) { ++ if (n_category == 0) { ++ panel_addto_select_first_entry (canvas); ++ return; ++ } ++ n_category--; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ catinfo = category->user_data; ++ if (!catinfo->visible) { ++ while (!catinfo->visible) { ++ category = g_slist_nth_data (priv->info->categories, --n_category); ++ if (!category) ++ return; ++ catinfo = category->user_data; ++ if (!catinfo) ++ return; ++ } ++ } ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ++ panel_addto_get_rank_of_nth_visible_entry ++ (category, ++ ((n_visible_entries - 1) / priv->items_per_row) * priv->items_per_row ++ + ((n_visible_entries_before_me + 1) % priv->items_per_row))); ++ if (!entry) ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry - priv->items_per_row); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_south_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category = 0; ++ gint n_categories; ++ gint n_visible_entries = 0; ++ gint n_visible_entries_before_me = 0; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ CategoryInfo *catinfo; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ n_visible_entries_before_me = ++ panel_addto_how_many_visible_entries_before_me (category, ei->n_entry); ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ if (n_visible_entries_before_me + 1 + priv->items_per_row > n_visible_entries - 1) { ++ if (n_visible_entries_before_me + 1 ++ <= ((n_visible_entries - 1) / priv->items_per_row) * priv->items_per_row) { ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ } else { ++ if (n_category == priv->info->n_categories - 1) ++ return; ++ n_category++; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ catinfo = category->user_data; ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ei->n_entry % priv->items_per_row); ++ if (!catinfo->visible) { ++ while (!catinfo->visible) { ++ category = g_slist_nth_data (priv->info->categories, ++n_category); ++ if (!category) ++ return; ++ catinfo = category->user_data; ++ if (!catinfo) ++ return; ++ } ++ } ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ++ panel_addto_get_rank_of_nth_visible_entry ++ (category, ++ (n_visible_entries_before_me + 1) % priv->items_per_row)); ++ ++ if (!entry) ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ } ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry + priv->items_per_row); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static gboolean ++cb_canvas_event (GnomeCanvasItem *item, GdkEvent *event, PanelAddtoDialog *dialog) ++{ ++ PanelAddtoCanvas *canvas = (PanelAddtoCanvas *) dialog->canvas; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ EntryInfo *ei = NULL; ++ gint n_category, n_entry; ++ gint n_categories, n_entries; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (event->type == GDK_BUTTON_PRESS) { ++ gtk_drag_source_unset (GTK_WIDGET (canvas)); ++ select_entry (canvas, NULL); ++ gtk_widget_grab_focus (GTK_WIDGET (dialog->canvas)); ++ return TRUE; ++ } ++ ++ if (event->type != GDK_KEY_PRESS) ++ return FALSE; ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (priv->selected) { ++ ei = priv->selected->user_data; ++ current_category = g_slist_nth_data (priv->info->categories, ei->n_category); ++ n_entries = current_category->n_entries; ++ } ++ ++ switch (event->key.keyval) { ++ case GDK_KP_Right: ++ case GDK_Right: ++ if (priv->rtl) ++ panel_addto_select_west_entry (ei, canvas); ++ else ++ panel_addto_select_east_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Left: ++ case GDK_Left: ++ if (priv->rtl) ++ panel_addto_select_east_entry (ei, canvas); ++ else ++ panel_addto_select_west_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Down: ++ case GDK_Down: ++ panel_addto_select_south_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Up: ++ case GDK_Up: ++ panel_addto_select_north_entry (ei, canvas); ++ return TRUE; ++ case GDK_Tab: ++ case GDK_KP_Tab: ++ case GDK_ISO_Left_Tab: ++ gtk_widget_grab_focus (dialog->search_entry); ++ break; ++ case GDK_Return: ++ case GDK_KP_Enter: ++ if (priv->selected) ++ activate_entry (priv->selected); ++ ++ return TRUE; ++ break; ++ case GDK_Escape: ++ panel_addto_dialog_response (dialog->addto_dialog, ++ GTK_RESPONSE_CANCEL, ++ dialog); ++ return TRUE; ++ default: ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++ ++static void ++calculate_item_width (PanelAddtoCanvas *canvas, EntryInfo *ei) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PangoLayout *layout; ++ PangoRectangle rectangle; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ layout = GNOME_CANVAS_TEXT (ei->text)->layout; ++ ++ pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); ++ pango_layout_set_width (layout, -1); ++ pango_layout_get_pixel_extents (layout, NULL, &rectangle); ++ ++ /* If its too big wrap at the max and regen to find the layout */ ++ if (rectangle.width > MAX_ITEM_WIDTH) { ++ pango_layout_set_width (layout, MAX_ITEM_WIDTH * PANGO_SCALE); ++ pango_layout_get_pixel_extents (layout, NULL, &rectangle); ++ rectangle.width = MAX_ITEM_WIDTH; ++ } ++ ++ ei->text_height = rectangle.height; ++ ++ priv->max_item_width = MAX (priv->max_item_width, rectangle.width); ++} ++ ++static void ++calculate_item_height (PanelAddtoCanvas *canvas, EntryInfo *ei) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ gint item_height; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (ei->pixbuf) ++ priv->max_icon_height = MAX (priv->max_icon_height, ei->icon_height); ++ ++ item_height = ei->icon_height + ei->text_height; ++ priv->max_item_height = MAX (priv->max_item_height, item_height); ++} ++ ++static void ++calculate_sizes (PanelAddtoCanvas *canvas) ++{ ++ GSList *l, *m; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ priv->max_item_height = 0; ++ priv->max_icon_height = 0; ++ priv->max_item_width = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ for (m = current_category->entries; m; m = m->next) { ++ current_entry = m->data; ++ EntryInfo *ei = current_entry->user_data; ++ calculate_item_width (canvas, ei); ++ calculate_item_height (canvas, ei); ++ } ++ } ++} ++ ++static void ++gnome_canvas_item_move_absolute (GnomeCanvasItem *item, double dx, double dy) ++{ ++ double translate[6]; ++ ++ g_return_if_fail (item != NULL); ++ g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); ++ ++ art_affine_translate (translate, dx, dy); ++ ++ gnome_canvas_item_affine_absolute (item, translate); ++} ++ ++static guchar ++lighten_component (guchar cur_value) ++{ ++ int new_value = cur_value; ++ new_value += 24 + (new_value >> 3); ++ if (new_value > 255) { ++ new_value = 255; ++ } ++ return (guchar) new_value; ++} ++ ++static GdkPixbuf * ++create_spotlight_pixbuf (GdkPixbuf* src) ++{ ++ GdkPixbuf *dest; ++ int i, j; ++ int width, height, has_alpha, src_row_stride, dst_row_stride; ++ guchar *target_pixels, *original_pixels; ++ guchar *pixsrc, *pixdest; ++ ++ g_return_val_if_fail (gdk_pixbuf_get_colorspace (src) == GDK_COLORSPACE_RGB, NULL); ++ g_return_val_if_fail ((!gdk_pixbuf_get_has_alpha (src) ++ && gdk_pixbuf_get_n_channels (src) == 3) ++ || (gdk_pixbuf_get_has_alpha (src) ++ && gdk_pixbuf_get_n_channels (src) == 4), NULL); ++ g_return_val_if_fail (gdk_pixbuf_get_bits_per_sample (src) == 8, NULL); ++ ++ dest = gdk_pixbuf_copy (src); ++ ++ has_alpha = gdk_pixbuf_get_has_alpha (src); ++ width = gdk_pixbuf_get_width (src); ++ height = gdk_pixbuf_get_height (src); ++ dst_row_stride = gdk_pixbuf_get_rowstride (dest); ++ src_row_stride = gdk_pixbuf_get_rowstride (src); ++ target_pixels = gdk_pixbuf_get_pixels (dest); ++ original_pixels = gdk_pixbuf_get_pixels (src); ++ ++ for (i = 0; i < height; i++) { ++ pixdest = target_pixels + i * dst_row_stride; ++ pixsrc = original_pixels + i * src_row_stride; ++ for (j = 0; j < width; j++) { ++ *pixdest++ = lighten_component (*pixsrc++); ++ *pixdest++ = lighten_component (*pixsrc++); ++ *pixdest++ = lighten_component (*pixsrc++); ++ if (has_alpha) { ++ *pixdest++ = *pixsrc++; ++ } ++ } ++ } ++ ++ return dest; ++} ++ ++static void ++build_canvas (PanelAddtoCanvas *canvas) ++{ ++ GSList *l, *m; ++ EntryInfo *ei; ++ PanelAddtoDialog *dialog; ++ PanelAddtoCategory *current_category = NULL; ++ PanelAddtoInformation *current_info = NULL; ++ PanelAddtoEntry *current_entry = NULL; ++ PanelAddtoCanvasPrivate *priv; ++ GnomeCanvas *gcanvas; ++ GnomeCanvasGroup *hidden_group; ++ int i, j, index; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ gcanvas = GNOME_CANVAS (canvas); ++ current_category = priv->info->categories->data; ++ current_entry = current_category->entries->data; ++ dialog = current_entry->dialog; ++ index = 0; ++ ++ priv->under_cover = gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ panel_addto_event_box_get_type(), ++ NULL); ++ ++ current_info = priv->info; ++ gnome_canvas_item_grab_focus (GNOME_CANVAS_ITEM (gnome_canvas_root (gcanvas))); ++ g_signal_connect (gnome_canvas_root (gcanvas), "event", ++ G_CALLBACK (cb_canvas_event), dialog); ++ ++ hidden_group = GNOME_CANVAS_GROUP (gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ gnome_canvas_group_get_type (), ++ NULL)); ++ for (l = priv->info->categories, i = 0; l; l = l->next, i++) { ++ ++ CategoryInfo *catinfo; ++ current_category = l->data; ++ ++ if (current_category->user_data == NULL) ++ current_category->user_data = g_new (CategoryInfo, 1); ++ ++ catinfo = current_category->user_data; ++ catinfo->group = NULL; ++ catinfo->title = NULL; ++ catinfo->line = NULL; ++ ++ catinfo->group = ++ GNOME_CANVAS_GROUP (gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ gnome_canvas_group_get_type (), ++ NULL)); ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (catinfo->group), 0, BORDERS); ++ ++ catinfo->line = gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_rect_get_type (), ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ ++ catinfo->title = NULL; ++ ++ if (current_category && (priv->info->n_categories != 1)) { ++ char *label = g_strdup_printf ("%s", current_category->title); ++ catinfo->title = gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_text_get_type (), ++ "text", current_category->title, ++ "markup", label, ++ "anchor", GTK_ANCHOR_NW, ++ NULL); ++ g_free (label); ++ } ++ ++ for (m = current_category->entries, j = 0; m; m = m->next, j++) { ++ current_entry = m->data; ++ ++ if (current_entry->user_data == NULL) ++ current_entry->user_data = g_new0 (EntryInfo, 1); ++ ++ ei = current_entry->user_data; ++ ++ ei->canvas = canvas; ++ ei->group = GNOME_CANVAS_GROUP ( ++ gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_group_get_type (), ++ NULL)); ++ ei->selection = gnome_canvas_item_new ( ++ ei->group, ++ PANEL_ADDTO_TYPE_ROUNDED_RECT, ++ NULL); ++ ++ if (current_entry->title) { ++ ei->text = gnome_canvas_item_new (ei->group, ++ gnome_canvas_text_get_type (), ++ "anchor", GTK_ANCHOR_NW, ++ "justification", GTK_JUSTIFY_CENTER, ++ "clip", TRUE, ++ NULL); ++ pango_layout_set_alignment (GNOME_CANVAS_TEXT (ei->text)->layout, ++ PANGO_ALIGN_CENTER); ++ pango_layout_set_justify (GNOME_CANVAS_TEXT (ei->text)->layout, ++ FALSE); ++ g_object_set (ei->text, ++ "text", current_entry->title, ++ NULL); ++ } else ++ ei->text = NULL; ++ ++ if (current_entry->icon_pixbuf) { ++ GdkPixbuf *pixbuf = current_entry->icon_pixbuf; ++ GdkPixbuf *highlight_pixbuf = ++ create_spotlight_pixbuf (pixbuf); ++ ++ ei->icon_height = gdk_pixbuf_get_height (pixbuf); ++ ei->icon_width = gdk_pixbuf_get_width (pixbuf); ++ ei->pixbuf = gnome_canvas_item_new (ei->group, ++ gnome_canvas_pixbuf_get_type (), ++ "pixbuf", pixbuf, ++ NULL); ++ g_object_unref (pixbuf); ++ ei->highlight_pixbuf = gnome_canvas_item_new (ei->group, ++ gnome_canvas_pixbuf_get_type (), ++ "pixbuf", highlight_pixbuf, ++ NULL); ++ g_object_unref (highlight_pixbuf); ++ } else { ++ ei->pixbuf = NULL; ++ ei->highlight_pixbuf = NULL; ++ } ++ ++ ei->cover = gnome_canvas_item_new (ei->group, ++ panel_addto_event_box_get_type(), ++ NULL); ++ calculate_item_width (canvas, ei); ++ calculate_item_height (canvas, ei); ++ ++ ei->n_category = i; ++ ei->n_entry = j; ++ ei->index = index; ++ ++ setup_entry (canvas, current_entry); ++ ++ g_signal_connect (ei->cover, "event", ++ G_CALLBACK (cover_event), ++ current_entry); ++ index++; ++ } ++ } ++ ++ dialog = current_entry->dialog; ++ ++ g_signal_connect (G_OBJECT (canvas), "selection-changed", ++ G_CALLBACK (panel_addto_selection_changed), current_entry->dialog); ++} ++ ++ ++static const char * ++panel_addto_utf8_casestrstr (const char *haystack, const char *needle) ++{ ++ ++ if (!haystack) ++ return NULL; ++ ++ haystack = g_utf8_strdown (haystack, -1); ++ needle = g_utf8_strdown (needle, -1); ++ ++ const char *s; ++ gsize i; ++ gsize haystack_len = g_utf8_strlen (haystack, -1); ++ gsize needle_len = g_utf8_strlen (needle, -1); ++ int needle_size = strlen (needle); ++ ++ if (needle_len > haystack_len) ++ return NULL; ++ ++ s = haystack; ++ for (i = 0; i <= haystack_len - needle_len; i++) { ++ if (strncmp (s, needle, needle_size) == 0) ++ return s; ++ s = g_utf8_next_char (s); ++ } ++ ++ return NULL; ++} ++ ++void ++panel_addto_relayout_for_search (GtkWidget *search_entry, PanelAddtoDialog *dialog) ++{ ++ gchar *search_text; ++ PanelAddtoCanvasPrivate *priv; ++ ++ search_text = g_malloc (strlen ((gchar*) gtk_entry_get_text (GTK_ENTRY (search_entry))) + 1); ++ g_stpcpy (search_text, gtk_entry_get_text (GTK_ENTRY (search_entry))); ++ g_strchomp (search_text); ++ if (dialog->canvas) { ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ priv->search_text = search_text; ++ gtk_widget_queue_resize (GTK_WIDGET (dialog->canvas)); ++ } ++} ++ ++void ++panel_addto_activate_from_searchbar (GtkWidget *search_entry, PanelAddtoDialog *dialog) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ if (priv->selected) ++ activate_entry (priv->selected); ++} ++ ++/* If we can't find the search query in the applet's name, in the applet's ++ * description, nor in the applet's category, then the applet has to be hidden. ++ */ ++ ++static gboolean ++panel_addto_entry_must_be_hidden (PanelAddtoEntry *entry, const gchar **search_terms) ++{ ++ gint i; ++ gint nb_search_terms = 0, nb_found = 0; ++ gboolean search_is_null = TRUE; ++ ++ for (i = 0; search_terms[i] != NULL; i++) { ++ nb_search_terms ++; ++ search_is_null = FALSE; ++ if ( ++ (entry->title ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->title, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL))) ++ || (entry->comment ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->comment, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL))) ++ || (entry->category->title ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->category->title, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL)))) ++ nb_found++; ++ } ++ ++ if (search_is_null || nb_found == nb_search_terms) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* A category canvas item contains all the elements ++ * for the category, as well as the title and a separator ++ */ ++static void ++relayout_category (PanelAddtoCanvas *canvas, CategoryInfo *catinfo, ++ gint vert_pos, gint *category_vert_pos) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (catinfo->group), ++ 0, vert_pos); ++ ++ if (catinfo->line) { ++ gnome_canvas_item_move_absolute (catinfo->line, BORDERS, ABOVE_LINE_SPACING); ++ ++ gnome_canvas_item_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ } ++ ++ if (catinfo->title) { ++ double text_height, text_width; ++ ++ g_object_get (catinfo->title, ++ "text_height", &text_height, ++ "text_width", &text_width, ++ NULL); ++ ++ *category_vert_pos += text_height; /* move it down 1 line */ ++ gnome_canvas_item_move_absolute (catinfo->title, ++ (priv->rtl) ? priv->max_width - BORDERS - text_width : BORDERS, ++ *category_vert_pos); ++ *category_vert_pos += text_height + text_height/2 + UNDER_TITLE_SPACING; ++ } ++} ++ ++static void ++relayout_item (PanelAddtoCanvas *canvas, EntryInfo *ei, ++ gint category_horiz_pos, gint category_vert_pos) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (ei->group), ++ category_horiz_pos, ++ category_vert_pos); ++ ++ gnome_canvas_item_set (ei->selection, ++ "x2", (double) priv->max_item_width + 2 * PAD, ++ "y2", (double) ei->text_height + 1, /* expand it down slightly */ ++ NULL); ++ ++ gnome_canvas_item_move_absolute (ei->selection, -PAD, priv->max_icon_height); ++ ++ if (ei->text) { ++ /* canvas asks layout for its extent, layout gives real ++ * size, not fixed width and drawing gets confused. ++ */ ++ gnome_canvas_item_set (ei->text, ++ "clip_width", (double) priv->max_item_width, ++ "clip_height", (double) priv->max_item_height, ++ NULL); ++ ++ /* text is centered by pango */ ++ pango_layout_set_width (GNOME_CANVAS_TEXT (ei->text)->layout, ++ (gint) priv->max_item_width * PANGO_SCALE); ++ ++ gnome_canvas_item_move_absolute (ei->text, ++ 0, priv->max_icon_height); ++ } ++ ++ if (ei->pixbuf) { ++ /* manually center the icon */ ++ gnome_canvas_item_move_absolute (ei->pixbuf, ++ priv->max_item_width / 2 - ei->icon_width / 2, 0); ++ gnome_canvas_item_move_absolute (ei->highlight_pixbuf, ++ priv->max_item_width / 2 - ei->icon_width / 2, 0); ++ } ++ ++ /* cover the item */ ++ gnome_canvas_item_set (ei->cover, ++ "x2", (double) priv->max_item_width, ++ "y2", (double) priv->max_item_height, ++ NULL); ++} ++ ++static void ++relayout_canvas (PanelAddtoCanvas *canvas) ++{ ++ gint entry; ++ gint vert_pos, category_vert_pos, category_horiz_pos; ++ gint real_width; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ CategoryInfo *catinfo; ++ EntryInfo *ei; ++ GSList *l, *m; ++ gboolean at_least_one_found, first_shown_category, first_shown_entry; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ real_width = priv->max_width - 2 * BORDERS + ITEMS_SEPARATION; ++ priv->items_per_row = real_width / ((gint) priv->max_item_width + ITEMS_SEPARATION); ++ ++ vert_pos = BORDERS; ++ ++ const gchar *search_text = priv->search_text; ++ gchar **search_terms; ++ search_terms = search_text ? g_strsplit (search_text, " ", 0) : NULL; ++ ++ first_shown_category = TRUE; ++ first_shown_entry = TRUE; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ ++ at_least_one_found = FALSE; ++ category_vert_pos = 0; ++ ++ category_horiz_pos = (priv->rtl) ? priv->max_width - (gint) priv->max_item_width - BORDERS : BORDERS; ++ ++ current_category = l->data; ++ catinfo = current_category->user_data; ++ ++ relayout_category (canvas, catinfo, vert_pos, &category_vert_pos); ++ category_vert_pos += UNDER_LINE_SPACING; ++ ++ for (m = current_category->entries, entry = 0; m; m = m->next, entry++) { ++ ++ current_entry = m->data; ++ ei = current_entry->user_data; ++ ++ /* we don't want the first item to wrap, it would ++ be too separated from the section title */ ++ ++ if (!search_text || !panel_addto_entry_must_be_hidden (current_entry, (const gchar **)search_terms)) { ++ at_least_one_found = TRUE; ++ gnome_canvas_item_show (GNOME_CANVAS_ITEM (ei->group)); ++ ei->visible = TRUE; ++ if ((entry > 0) && ++ ((priv->items_per_row == 0) || ++ (priv->items_per_row > 0 && (entry % priv->items_per_row == 0)))) { ++ ++ category_horiz_pos = (priv->rtl) ? ++ priv->max_width - (gint) priv->max_item_width - BORDERS : BORDERS; ++ category_vert_pos += (gint) priv->max_item_height + ITEMS_SEPARATION; ++ } ++ ++ relayout_item (canvas, ei, category_horiz_pos, category_vert_pos); ++ ++ if (priv->rtl) ++ category_horiz_pos -= (gint) priv->max_item_width + ITEMS_SEPARATION; ++ else ++ category_horiz_pos += (gint) priv->max_item_width + ITEMS_SEPARATION; ++ ++ /* If the user is actually using the search bar, select ++ * the first shown entry. ++ */ ++ if (search_text && first_shown_entry) { ++ select_entry (canvas, current_entry); ++ first_shown_entry = FALSE; ++ } ++ } else { ++ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (ei->group)); ++ ei->visible = FALSE; ++ entry --; ++ } ++ ++ } ++ if (at_least_one_found) { ++ gnome_canvas_item_show (GNOME_CANVAS_ITEM (catinfo->group)); ++ catinfo->visible = TRUE; ++ category_vert_pos += (gint) priv->max_item_height; ++ vert_pos += category_vert_pos + ITEMS_SEPARATION; ++ ++ if (first_shown_category) { ++ g_object_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) 0, ++ NULL); ++ first_shown_category = FALSE; ++ } else { ++ g_object_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ } ++ ++ } else { ++ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (catinfo->group)); ++ catinfo->visible = FALSE; ++ } ++ } ++ ++ /* substract the last ITEMS_SEPARATION to ++ adjust the canvas size a bit more */ ++ vert_pos -= ITEMS_SEPARATION; ++ ++ priv->height = MAX (vert_pos, priv->min_height); ++ priv->width = priv->max_width; ++} ++ ++ ++static void ++set_style (PanelAddtoCanvas *canvas, gboolean font_changed) ++{ ++ GSList *l, *m; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ PanelAddtoCanvasPrivate *priv; ++ GtkWidget *widget = GTK_WIDGET (canvas); ++ ++ ++ if (!GTK_WIDGET_REALIZED (widget)) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ CategoryInfo *catinfo = current_category->user_data; ++ ++ if (catinfo->line) { ++ g_object_set (catinfo->line, ++ "fill_color_gdk", &widget->style->text_aa[GTK_STATE_NORMAL], ++ NULL); ++ } ++ if (catinfo->title) { ++ g_object_set (catinfo->title, ++ "fill_color_gdk", &widget->style->text[GTK_STATE_NORMAL], ++ NULL); ++ ++ if (font_changed) ++ g_object_set (catinfo->title, ++ "font", NULL, ++ NULL); ++ } ++ ++ for (m = current_category->entries; m; m = m->next) { ++ current_entry = m->data; ++ EntryInfo *entryinfo = current_entry->user_data; ++ if (font_changed && entryinfo->text) ++ g_object_set (entryinfo->text, ++ "font", NULL, ++ NULL); ++ setup_entry (canvas, current_entry); ++ } ++ } ++ ++ if (font_changed) { ++ calculate_sizes (canvas); ++ relayout_canvas (canvas); ++ } ++} ++ ++ ++GtkWidget* ++panel_addto_canvas_new (PanelAddtoInformation *info) ++{ ++ ++ return g_object_new (PANEL_ADDTO_TYPE_CANVAS, ++ "info", info, ++ NULL); ++} ++ ++/* Accessibility support */ ++ ++static gpointer accessible_parent_class; ++static gpointer accessible_item_parent_class; ++ ++enum { ++ ACTION_ACTIVATE, ++ LAST_ACTION ++}; ++ ++typedef struct { ++ AtkObject parent; ++ ++ PanelAddtoEntry *entry; ++ AtkStateSet *state_set; ++ ++ guint action_idle_handler; ++} PanelAddtoCanvasItemAccessible; ++ ++typedef struct { ++ AtkObjectClass parent_class; ++} PanelAddtoCanvasItemAccessibleClass; ++ ++static const gchar *const action_names[] = ++{ ++ "activate", ++ NULL ++}; ++ ++static const gchar *const action_descriptions[] = ++{ ++ "Activate item", ++ NULL ++}; ++ ++static void ++panel_addto_canvas_item_accessible_get_extents (AtkComponent *component, ++ gint *x, ++ gint *y, ++ gint *width, ++ gint *height, ++ AtkCoordType coord_type) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvas *canvas; ++ GnomeCanvasItem *cover; ++ AtkObject *parent_object; ++ gint p_x, p_y; ++ ++ item = (PanelAddtoCanvasItemAccessible *) component; ++ ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ parent_object = gtk_widget_get_accessible (GTK_WIDGET (canvas)); ++ atk_component_get_position (ATK_COMPONENT (parent_object), &p_x, &p_y, coord_type); ++ ++ ++ /* the cover pretty much represents the item size */ ++ ++ ++ cover = GNOME_CANVAS_ITEM (((EntryInfo *)item->entry->user_data)->cover); ++ ++ *x = p_x + cover->x1; ++ *y = p_y + cover->y1; ++ *width = cover->x2 - cover->x1; ++ *height = cover->y2 - cover->y1; ++} ++ ++static void ++atk_component_item_interface_init (AtkComponentIface *iface) ++{ ++ iface->get_extents = panel_addto_canvas_item_accessible_get_extents; ++} ++ ++static gboolean ++idle_do_action (gpointer data) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ item = (PanelAddtoCanvasItemAccessible *) data; ++ ++ item->action_idle_handler = 0; ++ activate_entry (item->entry); ++ ++ return FALSE; ++} ++ ++ ++static gboolean ++panel_addto_canvas_item_accessible_action_do_action (AtkAction *action, ++ gint index) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ if (index < 0 || index >= LAST_ACTION) ++ return FALSE; ++ ++ item = (PanelAddtoCanvasItemAccessible *) action; ++ ++ switch (index) { ++ case ACTION_ACTIVATE: ++ if (!item->action_idle_handler) ++ item->action_idle_handler = g_idle_add (idle_do_action, item); ++ break; ++ default: ++ g_assert_not_reached (); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static gint ++panel_addto_canvas_item_accessible_action_get_n_actions (AtkAction *action) ++{ ++ return LAST_ACTION; ++} ++ ++static const gchar * ++panel_addto_canvas_item_accessible_action_get_description (AtkAction *action, ++ gint index) ++{ ++ if (index < 0 || index >= LAST_ACTION) ++ return NULL; ++ ++ return action_descriptions[index]; ++} ++ ++static const gchar * ++panel_addto_canvas_item_accessible_action_get_name (AtkAction *action, ++ gint index) ++{ ++ if (index < 0 || index >= LAST_ACTION) ++ return NULL; ++ ++ return action_names[index]; ++} ++ ++static void ++atk_action_item_interface_init (AtkActionIface *iface) ++{ ++ iface->do_action = panel_addto_canvas_item_accessible_action_do_action; ++ iface->get_n_actions = panel_addto_canvas_item_accessible_action_get_n_actions; ++ iface->get_description = panel_addto_canvas_item_accessible_action_get_description; ++ iface->get_name = panel_addto_canvas_item_accessible_action_get_name; ++} ++ ++static gint ++panel_addto_canvas_item_accessible_get_index_in_parent (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ return ((EntryInfo *) item->entry->user_data)->index; ++} ++ ++static G_CONST_RETURN gchar* ++panel_addto_canvas_item_accessible_get_name (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ if (object->name) ++ return object->name; ++ else { ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ if (item->entry && item->entry->title) ++ return item->entry->title; ++ else ++ return "Item with no description"; ++ } ++} ++ ++static AtkObject* ++panel_addto_canvas_item_accessible_get_parent (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvas *canvas; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ ++ return gtk_widget_get_accessible (GTK_WIDGET (canvas)); ++} ++ ++static AtkStateSet* ++panel_addto_canvas_item_accessible_ref_state_set (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (item->entry == priv->selected) ++ atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSED); ++ else ++ atk_state_set_remove_state (item->state_set, ATK_STATE_FOCUSED); ++ ++ return g_object_ref (item->state_set); ++} ++ ++static void ++panel_addto_canvas_item_accessible_class_init (AtkObjectClass *class) ++{ ++ GObjectClass *object_class; ++ ++ accessible_item_parent_class = g_type_class_peek_parent (class); ++ ++ object_class = (GObjectClass *)class; ++ ++ class->get_index_in_parent = panel_addto_canvas_item_accessible_get_index_in_parent; ++ class->get_name = panel_addto_canvas_item_accessible_get_name; ++ class->get_parent = panel_addto_canvas_item_accessible_get_parent; ++ class->ref_state_set = panel_addto_canvas_item_accessible_ref_state_set; ++} ++ ++static void ++panel_addto_canvas_item_accessible_object_init (PanelAddtoCanvasItemAccessible *item) ++{ ++ item->state_set = atk_state_set_new (); ++ ++ atk_state_set_add_state (item->state_set, ATK_STATE_ENABLED); ++ atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSABLE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_SENSITIVE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_SELECTABLE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_VISIBLE); ++ ++ item->action_idle_handler = 0; ++} ++ ++static GType ++panel_addto_canvas_item_accessible_get_type (void) ++{ ++ static GType type = 0; ++ ++ if (type == 0) { ++ static const GTypeInfo info = { ++ sizeof (PanelAddtoCanvasItemAccessibleClass), ++ (GBaseInitFunc) NULL, /* base init */ ++ (GBaseFinalizeFunc) NULL, /* base finalize */ ++ (GClassInitFunc) panel_addto_canvas_item_accessible_class_init, /* class init */ ++ (GClassFinalizeFunc) NULL, /* class finalize */ ++ NULL, /* class data */ ++ sizeof (PanelAddtoCanvasItemAccessible), /* instance size */ ++ 0, /* nb preallocs */ ++ (GInstanceInitFunc) panel_addto_canvas_item_accessible_object_init, /* instance init */ ++ NULL /* value table */ ++ }; ++ ++ static const GInterfaceInfo atk_component_info = { ++ (GInterfaceInitFunc) atk_component_item_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ static const GInterfaceInfo atk_action_info = { ++ (GInterfaceInitFunc) atk_action_item_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ type = g_type_register_static (ATK_TYPE_OBJECT, ++ "PanelAddtoCanvasItemAccessible", &info, 0); ++ ++ g_type_add_interface_static (type, ATK_TYPE_COMPONENT, ++ &atk_component_info); ++ g_type_add_interface_static (type, ATK_TYPE_ACTION, ++ &atk_action_info); ++ } ++ ++ return type; ++} ++ ++static gint ++panel_addto_canvas_accessible_get_n_children (AtkObject *accessible) ++{ ++ GSList *l; ++ PanelAddtoCategory *current_category; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ gint count; ++ ++ widget = GTK_ACCESSIBLE (accessible)->widget; ++ ++ if (!widget) ++ return 0; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ count = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ count += current_category->n_entries; ++ } ++ ++ return count; ++} ++ ++static PanelAddtoEntry* ++panel_addto_canvas_accessible_get_entry (PanelAddtoCanvas *canvas, gint index) ++{ ++ GSList *l; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ gint count; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ count = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ if (index >= count && ++ index < count + current_category->n_entries) { ++ return g_slist_nth_data (current_category->entries, index - count); ++ } else ++ count += current_category->n_entries; ++ } ++ ++ return NULL; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_child (AtkObject *accessible, gint index) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ AtkObject *object; ++ ++ widget = GTK_ACCESSIBLE (accessible)->widget; ++ ++ if (!widget) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ entry = panel_addto_canvas_accessible_get_entry (canvas, index); ++ ++ if (!entry) ++ return NULL; ++ ++ object = g_hash_table_lookup (priv->accessible_children, &index); ++ ++ if (!object) { ++ object = g_object_new (panel_addto_canvas_item_accessible_get_type (), NULL); ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ object->role = ATK_ROLE_ICON; ++ item->entry = entry; ++ ++ g_hash_table_insert (priv->accessible_children, ++ &((EntryInfo *) entry->user_data)->index, object); ++ } ++ ++ return g_object_ref (object); ++} ++ ++static void ++panel_addto_canvas_accessible_initialize (AtkObject *accessible, gpointer data) ++{ ++ if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize) ++ ATK_OBJECT_CLASS (accessible_parent_class)->initialize (accessible, data); ++ ++ accessible->role = ATK_ROLE_LAYERED_PANE; ++} ++ ++static void ++panel_addto_canvas_accessible_class_init (AtkObjectClass *class) ++{ ++ GObjectClass *object_class; ++ GtkAccessibleClass *accessible_class; ++ ++ accessible_parent_class = g_type_class_peek_parent (class); ++ ++ object_class = (GObjectClass *)class; ++ accessible_class = (GtkAccessibleClass *)class; ++ ++ class->get_n_children = panel_addto_canvas_accessible_get_n_children; ++ class->ref_child = panel_addto_canvas_accessible_ref_child; ++ class->initialize = panel_addto_canvas_accessible_initialize; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_add_selection (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ PanelAddtoEntry *entry; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ entry = panel_addto_canvas_accessible_get_entry (canvas, i); ++ select_entry (canvas, entry); ++ ++ return TRUE; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_clear_selection (AtkSelection *selection) ++{ ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ select_entry (canvas, NULL); ++ ++ return TRUE; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_selection (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (priv->selected) ++ return atk_object_ref_accessible_child (gtk_widget_get_accessible (widget), ++ ((EntryInfo *)priv->selected->user_data)->index); ++ return NULL; ++} ++ ++static gint ++panel_addto_canvas_accessible_get_selection_count (AtkSelection *selection) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return 0; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ return (priv->selected) ? 1 : 0; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_is_child_selected (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ return (priv->selected == panel_addto_canvas_accessible_get_entry (canvas, i)); ++} ++ ++static gboolean ++panel_addto_canvas_accessible_remove_selection (AtkSelection *selection, gint i) ++{ ++ /* There can be only one item selected */ ++ return panel_addto_canvas_accessible_clear_selection (selection); ++} ++ ++static gboolean ++panel_addto_canvas_accessible_select_all_selection (AtkSelection *selection) ++{ ++ /* This can't happen */ ++ return FALSE; ++} ++ ++static void ++panel_addto_canvas_accessible_selection_interface_init (AtkSelectionIface *iface) ++{ ++ iface->add_selection = panel_addto_canvas_accessible_add_selection; ++ iface->clear_selection = panel_addto_canvas_accessible_clear_selection; ++ iface->ref_selection = panel_addto_canvas_accessible_ref_selection; ++ iface->get_selection_count = panel_addto_canvas_accessible_get_selection_count; ++ iface->is_child_selected = panel_addto_canvas_accessible_is_child_selected; ++ iface->remove_selection = panel_addto_canvas_accessible_remove_selection; ++ iface->select_all_selection = panel_addto_canvas_accessible_select_all_selection; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_accessible_at_point (AtkComponent *component, ++ gint x, ++ gint y, ++ AtkCoordType coord_type) ++{ ++ GSList *l, *m; ++ GtkWidget *widget; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ PanelAddtoCategory *current_category; ++ EntryInfo *entry; ++ gint x_pos, y_pos, x_w, y_w; ++ ++ widget = GTK_ACCESSIBLE (component)->widget; ++ ++ if (widget == NULL) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ atk_component_get_extents (component, &x_pos, &y_pos, NULL, NULL, coord_type); ++ x_w = x - x_pos; ++ y_w = y - y_pos; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ for (m = current_category->entries; m; m = m->next) { ++ entry = (EntryInfo *) m->data; ++ ++ if (x_w > entry->cover->x1 && ++ x_w < entry->cover->x2 && ++ y_w > entry->cover->y1 && ++ y_w < entry->cover->y2) ++ return panel_addto_canvas_accessible_ref_child (ATK_OBJECT (component), entry->index); ++ } ++ } ++ ++ return NULL; ++} ++ ++static void ++atk_component_interface_init (AtkComponentIface *iface) ++{ ++ iface->ref_accessible_at_point = panel_addto_canvas_accessible_ref_accessible_at_point; ++} ++ ++static GType ++panel_addto_canvas_accessible_get_type (void) ++{ ++ static GType type = 0; ++ AtkObjectFactory *factory; ++ GType derived_type; ++ GTypeQuery query; ++ GType derived_atk_type; ++ ++ if (type == 0) { ++ static GTypeInfo info = { ++ 0, /* class size */ ++ (GBaseInitFunc) NULL, /* base init */ ++ (GBaseFinalizeFunc) NULL, /* base finalize */ ++ (GClassInitFunc) panel_addto_canvas_accessible_class_init, ++ (GClassFinalizeFunc) NULL, /* class finalize */ ++ NULL, /* class data */ ++ 0, /* instance size */ ++ 0, /* nb preallocs */ ++ (GInstanceInitFunc) NULL, /* instance init */ ++ NULL /* value table */ ++ }; ++ ++ static const GInterfaceInfo atk_component_info = { ++ (GInterfaceInitFunc) atk_component_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ static const GInterfaceInfo atk_selection_info = { ++ (GInterfaceInitFunc) panel_addto_canvas_accessible_selection_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ derived_type = g_type_parent (PANEL_ADDTO_TYPE_CANVAS); ++ factory = atk_registry_get_factory (atk_get_default_registry (), ++ derived_type); ++ ++ derived_atk_type = atk_object_factory_get_accessible_type (factory); ++ g_type_query (derived_atk_type, &query); ++ ++ info.class_size = query.class_size; ++ info.instance_size = query.instance_size; ++ ++ type = g_type_register_static (derived_atk_type, ++ "PanelAddtoCanvasAccessible", ++ &info, 0); ++ ++ g_type_add_interface_static (type, ++ ATK_TYPE_COMPONENT, ++ &atk_component_info); ++ g_type_add_interface_static (type, ++ ATK_TYPE_SELECTION, ++ &atk_selection_info); ++ } ++ ++ return type; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_new (GObject *object) ++{ ++ AtkObject *accessible; ++ ++ accessible = g_object_new (panel_addto_canvas_accessible_get_type (), NULL); ++ atk_object_initialize (accessible, object); ++ ++ return accessible; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_factory_create_accessible (GObject *object) ++{ ++ return panel_addto_canvas_accessible_new (object); ++} ++ ++static void ++panel_addto_canvas_accessible_factory_class_init (AtkObjectFactoryClass *class) ++{ ++ class->create_accessible = panel_addto_canvas_accessible_factory_create_accessible; ++ class->get_accessible_type = panel_addto_canvas_accessible_get_type; ++} ++ ++static GType ++panel_addto_canvas_accessible_factory_get_type (void) ++{ ++ static GType type = 0; ++ ++ if (type == 0) { ++ static const GTypeInfo info = { ++ sizeof (AtkObjectFactoryClass), ++ NULL, /* base_init */ ++ NULL, /* base_finalize */ ++ (GClassInitFunc) panel_addto_canvas_accessible_factory_class_init, ++ NULL, /* class_finalize */ ++ NULL, /* class_data */ ++ sizeof (AtkObjectFactory), ++ 0, /* n_preallocs */ ++ NULL, NULL ++ }; ++ ++ type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY, ++ "PanelAddtoCanvasAccessibleFactory", ++ &info, 0); ++ } ++ ++ return type; ++} ++ ++static AtkObject* ++panel_addto_canvas_get_accessible (GtkWidget *widget) ++{ ++ static gboolean already_here = FALSE; ++ ++ if (!already_here) { ++ AtkObjectFactory *factory; ++ AtkRegistry *registry; ++ GType derived_type; ++ GType derived_atk_type; ++ ++ already_here = TRUE; ++ ++ derived_type = g_type_parent (PANEL_ADDTO_TYPE_CANVAS); ++ ++ registry = atk_get_default_registry (); ++ factory = atk_registry_get_factory (registry, derived_type); ++ ++ derived_atk_type = atk_object_factory_get_accessible_type (factory); ++ ++ if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) { ++ atk_registry_set_factory_type (registry, ++ PANEL_ADDTO_TYPE_CANVAS, ++ panel_addto_canvas_accessible_factory_get_type ()); ++ } ++ } ++ ++ return (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->get_accessible) (widget); ++} +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-canvas.h gnome-panel-2.14.1.new/gnome-panel/panel-addto-canvas.h +--- gnome-panel-2.14.1/gnome-panel/panel-addto-canvas.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-canvas.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,88 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* Copyright (C) 2005 Carlos Garnacho ++ * ++ * 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 2 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. ++ * ++ * Authors: Jody Goldberg ++ * Carlos Garnacho Parro ++ * Manu Cornet ++ */ ++ ++#ifndef PANEL_ADDTO_CANVAS_H ++#define PANEL_ADDTO_CANVAS_H ++ ++#include ++#include ++#include "panel-addto.h" ++ ++G_BEGIN_DECLS ++ ++#define PANEL_ADDTO_TYPE_CANVAS (panel_addto_canvas_get_type ()) ++#define PANEL_ADDTO_CANVAS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvas)) ++#define PANEL_ADDTO_CANVAS_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasClass)) ++#define PANEL_ADDTO_IS_CANVAS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PANEL_ADDTO_TYPE_CANVAS)) ++#define PANEL_ADDTO_IS_CANVAS_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), PANEL_ADDTO_TYPE_CANVAS)) ++#define PANEL_ADDTO_CANVAS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasClass)) ++ ++typedef struct _PanelAddtoCanvas PanelAddtoCanvas; ++typedef struct _PanelAddtoCanvasClass PanelAddtoCanvasClass; ++ ++struct _PanelAddtoCanvas { ++ GnomeCanvas parent; ++}; ++ ++struct _PanelAddtoCanvasClass { ++ GnomeCanvasClass parent_class; ++ ++ void (*changed) (PanelAddtoCanvas *canvas, gchar *str); ++}; ++ ++typedef struct _PanelAddtoCanvasPrivate PanelAddtoCanvasPrivate; ++ ++struct _PanelAddtoCanvasPrivate { ++ GnomeCanvasItem *under_cover; ++ double height; ++ double width; ++ ++ double min_height; ++ double max_width; ++ PanelAddtoInformation *info; ++ PanelAddtoEntry *selected; ++ ++ gboolean rtl; ++ gint items_per_row; ++ gint selected_row; ++ ++ gchar *search_text; ++ ++ /* calculated sizes ++ for the elements */ ++ gdouble max_item_width; ++ gdouble max_item_height; ++ gdouble max_icon_height; ++ ++ /* accessibility stuff */ ++ GHashTable *accessible_children; ++}; ++ ++GType panel_addto_canvas_get_type (void); ++void activate_entry (PanelAddtoEntry *entry); ++void panel_addto_relayout_for_search (GtkWidget *search_entry, PanelAddtoDialog *dialog); ++void panel_addto_activate_from_searchbar (GtkWidget *search_entry, PanelAddtoDialog *dialog); ++GtkWidget* panel_addto_canvas_new (PanelAddtoInformation *info); ++ ++G_END_DECLS ++ ++#endif /* PANEL_ADDTO_CANVAS_H */ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-event-box.c gnome-panel-2.14.1.new/gnome-panel/panel-addto-event-box.c +--- gnome-panel-2.14.1/gnome-panel/panel-addto-event-box.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-event-box.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,99 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation ++ * All rights reserved. ++ * ++ * This file is part of the Gnome Library. ++ * ++ * The Gnome Library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * The Gnome Library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with the Gnome Library; see the file COPYING.LIB. If not, ++ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/* ++ @NOTATION@ ++ */ ++/* Event box item type for GnomeCanvas widget ++ * ++ * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is ++ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties. ++ * ++ * ++ * Author: Chris Lahey ++ */ ++ ++#include ++ ++#include "panel-addto-event-box.h" ++ ++#define noVERBOSE ++ ++static GnomeCanvasItemClass *parent_class; ++ ++static double ++panel_addto_event_box_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, ++ GnomeCanvasItem **actual_item) ++{ ++ double x1, x2, y1, y2; ++ g_object_get (item, ++ "x1", &x1, ++ "x2", &x2, ++ "y1", &y1, ++ "y2", &y2, ++ NULL); ++ if (x <= x2 && x >= x1 && ++ y <= y2 && y >= y1) { ++ *actual_item = item; ++ ++ return 0.0; ++ } ++ return 1e12; ++} ++ ++static void ++panel_addto_event_box_class_init (PanelAddtoEventBoxClass *class) ++{ ++ GnomeCanvasItemClass *item_class; ++ ++ item_class = (GnomeCanvasItemClass *) class; ++ ++ parent_class = g_type_class_peek_parent (class); ++ ++ item_class->point = panel_addto_event_box_point; ++} ++ ++GType ++panel_addto_event_box_get_type (void) ++{ ++ static GType type; ++ ++ if (!type) { ++ static const GTypeInfo object_info = { ++ sizeof (PanelAddtoEventBoxClass), ++ (GBaseInitFunc) NULL, ++ (GBaseFinalizeFunc) NULL, ++ (GClassInitFunc) panel_addto_event_box_class_init, ++ (GClassFinalizeFunc) NULL, ++ NULL, /* class_data */ ++ sizeof (PanelAddtoEventBox), ++ 0, /* n_preallocs */ ++ (GInstanceInitFunc) NULL, ++ NULL /* value_table */ ++ }; ++ ++ type = g_type_register_static (GNOME_TYPE_CANVAS_RECT, "PanelAddtoEventBox", ++ &object_info, 0); ++ } ++ ++ return type; ++} +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-event-box.h gnome-panel-2.14.1.new/gnome-panel/panel-addto-event-box.h +--- gnome-panel-2.14.1/gnome-panel/panel-addto-event-box.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-event-box.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,75 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation ++ * All rights reserved. ++ * ++ * This file is part of the Gnome Library. ++ * ++ * The Gnome Library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * The Gnome Library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with the Gnome Library; see the file COPYING.LIB. If not, ++ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/* ++ @NOTATION@ ++ */ ++/* Event Box item type for GnomeCanvas widget ++ * ++ * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is ++ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties. ++ * ++ * ++ * Author: Chris Lahey ++ */ ++ ++#ifndef PANEL_ADDTO_EVENT_BOX_H ++#define PANEL_ADDTO_EVENT_BOX_H ++ ++ ++#include ++ ++#include ++ ++G_BEGIN_DECLS ++ ++/* Event Box item. No configurable or queryable arguments are available (use those in ++ * GnomeCanvasRE). ++ */ ++ ++ ++#define PANEL_ADDTO_TYPE_EVENT_BOX (panel_addto_event_box_get_type ()) ++#define PANEL_ADDTO_EVENT_BOX(obj) (GTK_CHECK_CAST ((obj), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBox)) ++#define PANEL_ADDTO_EVENT_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBoxClass)) ++#define PANEL_ADDTO_IS_EVENT_BOX(obj) (GTK_CHECK_TYPE ((obj), PANEL_ADDTO_TYPE_EVENT_BOX)) ++#define PANEL_ADDTO_IS_EVENT_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), PANEL_ADDTO_TYPE_EVENT_BOX)) ++#define PANEL_ADDTO_EVENT_BOX_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBoxClass)) ++ ++ ++typedef struct _PanelAddtoEventBox PanelAddtoEventBox; ++typedef struct _PanelAddtoEventBoxClass PanelAddtoEventBoxClass; ++ ++struct _PanelAddtoEventBox { ++ GnomeCanvasRect item; ++}; ++ ++struct _PanelAddtoEventBoxClass { ++ GnomeCanvasRectClass parent_class; ++}; ++ ++ ++/* Standard Gtk function */ ++GType panel_addto_event_box_get_type (void) G_GNUC_CONST; ++ ++G_END_DECLS ++ ++#endif +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto.h gnome-panel-2.14.1.new/gnome-panel/panel-addto.h +--- gnome-panel-2.14.1/gnome-panel/panel-addto.h 2004-06-23 00:21:51.000000000 +0200 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto.h 2006-04-16 22:07:22.000000000 +0200 +@@ -20,6 +20,7 @@ + * + * Authors: + * Vincent Untz ++ * Manu Cornet + */ + + #ifndef __PANEL_ADDTO_H__ +@@ -27,8 +28,144 @@ + + G_BEGIN_DECLS + +-void panel_addto_present (GtkMenuItem *item, +- PanelWidget *panel_widget); ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "menu.h" ++ ++#include "launcher.h" ++#include "panel.h" ++#include "drawer.h" ++#include "panel-applet-frame.h" ++#include "panel-action-button.h" ++#include "panel-menu-bar.h" ++#include "panel-separator.h" ++#include "panel-toplevel.h" ++#include "panel-menu-button.h" ++#include "panel-globals.h" ++#include "panel-lockdown.h" ++#include "panel-util.h" ++#include "panel-profile.h" ++ ++typedef struct PanelAddtoEntry PanelAddtoEntry; ++ ++typedef struct PanelAddtoInformation { ++ GSList *categories; ++ int n_categories; ++} PanelAddtoInformation; ++ ++typedef struct { ++ PanelWidget *panel_widget; ++ PanelAddtoInformation *info; ++ ++ GtkWidget *addto_dialog; ++ GtkWidget *label; ++ GtkWidget *back_button; ++ GtkWidget *add_button; ++ GtkWidget *tree_view; ++ GtkWidget *canvas; ++ GtkWidget *applets_sw; ++ GtkWidget *applications_sw; ++ GtkWidget *inner_vbox; ++ GtkWidget *statuslabel; ++ GtkWidget *search_entry; ++ GtkWidget *search_label; ++ GtkWidget *launcher_button; ++ GtkWidget *custom_launcher_button; ++ GtkCellRenderer *renderer; ++ GtkTreeModel *applet_model; ++ GtkTreeModel *application_model; ++ ++ GMenuTree *menu_tree; ++ ++ GSList *applet_list; ++ GSList *application_list; ++ GSList *settings_list; ++ guint name_notify; ++ int insertion_position; ++ ++ gint status; ++} PanelAddtoDialog; ++ ++enum { ++ APPLETS, ++ APPLICATIONS ++}; ++ ++typedef enum { ++ PANEL_ADDTO_APPLET, ++ PANEL_ADDTO_ACTION, ++ PANEL_ADDTO_LAUNCHER_MENU, ++ PANEL_ADDTO_LAUNCHER, ++ PANEL_ADDTO_LAUNCHER_NEW, ++ PANEL_ADDTO_MENU, ++ PANEL_ADDTO_MENUBAR, ++ PANEL_ADDTO_SEPARATOR, ++ PANEL_ADDTO_DRAWER ++} PanelAddtoItemType; ++ ++ ++typedef struct PanelAddtoCategory { ++ GSList *entries; ++ int n_entries; ++ ++ char *title; ++ char *english_title; ++ ++ gboolean translated; ++ ++ gpointer user_data; ++ ++ guint real_category : 1; ++} PanelAddtoCategory; ++ ++typedef struct PanelAddtoItemInfo { ++ PanelAddtoItemType type; ++ PanelActionButtonType action_type; ++ char *category; ++ char *english_category; ++ char *name; ++ char *description; ++ char *icon; ++ char *launcher_path; ++ char *menu_filename; ++ char *menu_path; ++ char *iid; ++ gboolean static_data; ++} PanelAddtoItemInfo; ++ ++struct PanelAddtoEntry { ++ PanelAddtoCategory *category; ++ PanelAddtoItemInfo *item_info; ++ PanelAddtoDialog *dialog; ++ ++ char *title; ++ char *comment; ++ ++ GdkPixbuf *icon_pixbuf; ++ ++ gpointer user_data; ++}; ++ ++ ++typedef struct { ++ GSList *children; ++ PanelAddtoItemInfo item_info; ++} PanelAddtoAppList; ++ ++void ++panel_addto_dialog_response (GtkWidget *widget_dialog, ++ guint response_id, ++ PanelAddtoDialog *dialog); ++gboolean panel_addto_add_item (PanelAddtoDialog *dialog, ++ PanelAddtoItemInfo *item_info); ++void panel_addto_debug_print (PanelAddtoInformation *info); ++void panel_addto_present (GtkMenuItem *item, ++ PanelWidget *panel_widget); + + G_END_DECLS + +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect.c gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect.c +--- gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,103 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * panel-addto-rounded-rect.c: A rectangle with rounded corners ++ * ++ * Copyright (C) 2004 Novell Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of version 2 of the GNU General Public ++ * License as published by the Free Software Foundation. ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ * USA ++ */ ++ ++#include ++#include "panel-addto-rounded-rect.h" ++#include "panel-addto-rounded-rect-pixbuf.h" ++#include ++#include ++ ++struct _PanelAddtoRoundedRect { ++ GnomeCanvasRect base; ++}; ++typedef GnomeCanvasRectClass PanelAddtoRoundedRectClass; ++ ++#define GNOMECC_ROUNDED_RECT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNOMECC_TYPE_ROUNDED_RECT, PanelAddtoRoundedRectClass)) ++#define GNOMECC_IS_ROUNDED_RECT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOMECC_TYPE_ROUNDED_RECT)) ++ ++G_DEFINE_TYPE (PanelAddtoRoundedRect, panel_addto_rounded_rect, GNOME_TYPE_CANVAS_RECT); ++ ++/************************************************************************* ++ * Adapted from nautilus/libnautilus-private/nautilus-icon-canvas-item.c ++ */ ++/* clear the corners of the selection pixbuf by copying the corners of the passed-in pixbuf */ ++static void ++panel_addto_rounded_rect_draw (GnomeCanvasItem *item, GdkDrawable *drawable, ++ int x, int y, int width, int height) ++{ ++ static GdkPixbuf *corner_pixbuf = NULL; ++ GnomeCanvasRE const *re = GNOME_CANVAS_RE (item); ++ int dest_width, dest_height, src_width, src_height; ++ int dx, dy; ++ int corner_size = 5; ++ double affine[6]; ++ ++ GNOME_CANVAS_ITEM_CLASS (panel_addto_rounded_rect_parent_class)->draw (item, drawable, x, y, width, height); ++ ++ if (corner_pixbuf == NULL) ++ corner_pixbuf = gdk_pixbuf_new_from_inline (-1, ++ panel_addto_rounded_rect_frame, FALSE, NULL); ++ src_width = gdk_pixbuf_get_width (corner_pixbuf); ++ src_height = gdk_pixbuf_get_height (corner_pixbuf); ++ ++ gnome_canvas_item_i2c_affine (item, affine); ++ ++ dest_width = fabs (re->x2 - re->x1); ++ dest_height = fabs (re->y2 - re->y1); ++ dx = affine[4] - x; ++ dy = affine[5] - y; ++ ++ /* draw top left corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ 0, 0, ++ dx, dy, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw top right corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ src_width - corner_size, 0, ++ dx + dest_width - corner_size, dy, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw bottom left corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ 0, src_height - corner_size, ++ dx, dy + dest_height - corner_size, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw bottom right corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ src_width - corner_size, src_height - corner_size, ++ dx + dest_width - corner_size, dy + dest_height - corner_size, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++} ++ ++static void ++panel_addto_rounded_rect_class_init (PanelAddtoRoundedRectClass *klass) ++{ ++ GnomeCanvasItemClass *item_klass = (GnomeCanvasItemClass *) klass; ++ item_klass->draw = panel_addto_rounded_rect_draw; ++} ++static void ++panel_addto_rounded_rect_init (PanelAddtoRoundedRect *rr) ++{ ++} +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect.h gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect.h +--- gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,39 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * gnomecc-rounded-rect.c: A rectangle with rounded corners ++ * ++ * Copyright (C) 2004 Novell Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of version 2 of the GNU General Public ++ * License as published by the Free Software Foundation. ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ * USA ++ */ ++#ifndef PANEL_ADDTO_ROUNDED_RECT_H ++#define PANEL_ADDTO_ROUNDED_RECT_H ++ ++#include ++#include ++#include ++ ++G_BEGIN_DECLS ++ ++#define PANEL_ADDTO_TYPE_ROUNDED_RECT (panel_addto_rounded_rect_get_type ()) ++#define PANEL_ADDTO_ROUNDED_RECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PANEL_ADDTO_TYPE_ROUNDED_RECT, PanelAddtoRoundedRect)) ++#define PANEL_ADDTO_IS_ROUNDED_RECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PANEL_ADDTO_TYPE_ROUNDED_RECT)) ++ ++typedef struct _PanelAddtoRoundedRect PanelAddtoRoundedRect; ++GType panel_addto_rounded_rect_get_type (void); ++ ++G_END_DECLS ++ ++#endif /* PANEL_ADDTO_ROUNDED_RECT_H */ +diff -Nur gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h +--- gnome-panel-2.14.1/gnome-panel/panel-addto-rounded-rect-pixbuf.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/gnome-panel/panel-addto-rounded-rect-pixbuf.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,319 @@ ++/* GdkPixbuf RGBA C-Source image dump */ ++ ++#ifdef __SUNPRO_C ++#pragma align 4 (panel_addto_rounded_rect_frame) ++#endif ++#ifdef __GNUC__ ++static const guint8 panel_addto_rounded_rect_frame[] __attribute__ ((__aligned__ (4))) = ++#else ++static const guint8 panel_addto_rounded_rect_frame[] = ++#endif ++{ "" ++ /* Pixbuf magic (0x47646b50) */ ++ "GdkP" ++ /* length: header (24) + pixel_data (5848) */ ++ "\0\0\26\360" ++ /* pixdata_type (0x1010002) */ ++ "\1\1\0\2" ++ /* rowstride (344) */ ++ "\0\0\1X" ++ /* width (86) */ ++ "\0\0\0V" ++ /* height (17) */ ++ "\0\0\0\21" ++ /* pixel_data: */ ++ "\377\377\377\377\377\377\377\377\377\377\377\303\377\377\377q\377\377" ++ "\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377/\377\377\377q\377\377\377\303\377\377" ++ "\377\377\377\377\377\377\377\377\377\377\377\377\377\242\377\377\377" ++ "(\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377(\377\377\377\242\377\377\377\377\377\377\377\303\377\377" ++ "\377(\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377(\377\377\377\303\377\377" ++ "\377q\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377q\377\377\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377/\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377/\377\377" ++ "\377q\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377q\377\377\377\303\377\377\377(\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377(\377\377\377\303\377\377\377\377\377\377\377\242\377\377\377(\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377(\377\377\377\242\377\377\377\377\377\377\377\377\377\377\377" ++ "\377\377\377\377\303\377\377\377q\377\377\377/\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377/\377\377\377q\377\377\377\303\377\377\377\377\377\377\377\377"}; ++ ++ +diff -Nur gnome-panel-2.14.1/panel-addto-canvas.c gnome-panel-2.14.1.new/panel-addto-canvas.c +--- gnome-panel-2.14.1/panel-addto-canvas.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-canvas.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,2309 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* Copyright (C) 2005 Carlos Garnacho ++ * ++ * 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 2 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. ++ * ++ * Authors: Jody Goldberg ++ * Carlos Garnacho Parro ++ * Manu Cornet ++ */ ++ ++ ++#include "panel-addto-canvas.h" ++#include "panel-addto.h" ++#include "panel-profile.h" ++ ++#define PAD 5 /*when scrolling keep a few pixels above or below if possible */ ++#define ABOVE_LINE_SPACING 0 ++#define UNDER_LINE_SPACING 0 ++#define UNDER_TITLE_SPACING 0 /* manually insert 1 blank line of text */ ++#define LINE_HEIGHT 1 ++#define BORDERS 7 ++#define MAX_ITEM_WIDTH 125 ++#define ITEMS_SEPARATION 7 ++ ++#include "panel-addto-canvas.h" ++#include "panel-addto-event-box.h" ++#include "panel-addto-rounded-rect.h" ++ ++#include ++#include ++#include ++#include ++#include ++ ++#define PANEL_ADDTO_CANVAS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasPrivate)) ++ ++typedef struct EntryInfo { ++ PanelAddtoCanvas *canvas; ++ ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *text; ++ GnomeCanvasItem *pixbuf; ++ GnomeCanvasItem *highlight_pixbuf; ++ GnomeCanvasItem *cover; ++ GnomeCanvasItem *selection; ++ ++ double icon_height; ++ double icon_width; ++ double text_height; ++ guint launching : 1; ++ guint selected : 1; ++ guint highlighted : 1; ++ gboolean visible; ++ ++ gint n_category; ++ gint n_entry; ++ gint index; ++} EntryInfo; ++ ++typedef struct { ++ GnomeCanvasGroup *group; ++ GnomeCanvasItem *title; ++ GnomeCanvasItem *line; ++ gboolean visible; ++} CategoryInfo; ++ ++enum { ++ SELECTION_CHANGED, ++ LAST_SIGNAL ++}; ++ ++enum { ++ PROP_0, ++ PROP_INFO ++}; ++ ++ ++static guint panel_addto_canvas_signals [LAST_SIGNAL] = { 0 }; ++ ++ ++static void panel_addto_canvas_class_init (PanelAddtoCanvasClass *class); ++static void panel_addto_canvas_init (PanelAddtoCanvas *canvas); ++static void panel_addto_canvas_finalize (GObject *object); ++static void panel_addto_canvas_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec); ++static void panel_addto_canvas_get_property (GObject *object, ++ guint prop_id, ++ GValue *value, ++ GParamSpec *pspec); ++static void panel_addto_canvas_draw_background (GnomeCanvas *canvas, GdkDrawable *drawable, ++ int x, int y, int width, int height); ++static void panel_addto_canvas_size_allocate (GtkWidget *canvas, ++ GtkAllocation *allocation); ++static void panel_addto_canvas_style_set (GtkWidget *canvas, ++ GtkStyle *previous_style); ++static void panel_addto_canvas_realize (GtkWidget *canvas); ++ ++static void panel_addto_select_east_entry (EntryInfo *ei, PanelAddtoCanvas *canvas); ++static void build_canvas (PanelAddtoCanvas *canvas); ++static void relayout_canvas (PanelAddtoCanvas *canvas); ++static void set_style (PanelAddtoCanvas *canvas, gboolean font_changed); ++ ++G_DEFINE_TYPE (PanelAddtoCanvas, panel_addto_canvas, GNOME_TYPE_CANVAS); ++ ++ ++static AtkObject* panel_addto_canvas_get_accessible (GtkWidget *widget); ++ ++#include "panel-addto-event-box.h" ++#include "panel-addto-rounded-rect.h" ++#include "panel-profile.h" ++ ++static void ++panel_addto_canvas_class_init (PanelAddtoCanvasClass *class) ++{ ++ GObjectClass *object_class = G_OBJECT_CLASS (class); ++ GnomeCanvasClass *canvas_class = GNOME_CANVAS_CLASS (class); ++ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class); ++ ++ object_class->set_property = panel_addto_canvas_set_property; ++ object_class->get_property = panel_addto_canvas_get_property; ++ object_class->finalize = panel_addto_canvas_finalize; ++ canvas_class->draw_background = panel_addto_canvas_draw_background; ++ ++ widget_class->style_set = panel_addto_canvas_style_set; ++ widget_class->size_allocate = panel_addto_canvas_size_allocate; ++ widget_class->realize = panel_addto_canvas_realize; ++ widget_class->get_accessible = panel_addto_canvas_get_accessible; ++ ++ class->changed = NULL; ++ ++ g_object_class_install_property (object_class, ++ PROP_INFO, ++ g_param_spec_pointer ("info", ++ "information for the canvas", ++ "information for the canvas", ++ G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY)); ++ panel_addto_canvas_signals [SELECTION_CHANGED] = ++ g_signal_new ("selection-changed", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (PanelAddtoCanvasClass, changed), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__STRING, ++ G_TYPE_NONE, 1, ++ G_TYPE_STRING); ++ ++ g_type_class_add_private (object_class, ++ sizeof (PanelAddtoCanvasPrivate)); ++} ++ ++ ++static void ++panel_addto_canvas_init (PanelAddtoCanvas *canvas) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ g_return_if_fail (PANEL_ADDTO_IS_CANVAS (canvas)); ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ priv->max_width = 300; ++ priv->min_height = 0; ++ priv->info = NULL; ++ priv->selected = NULL; ++ ++ priv->max_item_width = 0; ++ priv->max_item_height = 0; ++ priv->items_per_row = 0; ++ priv->rtl = (gtk_widget_get_direction (GTK_WIDGET (canvas)) == GTK_TEXT_DIR_RTL); ++ priv->accessible_children = g_hash_table_new (g_int_hash, g_int_equal); ++ ++ gtk_widget_show_all (GTK_WIDGET (canvas)); ++} ++ ++static void ++panel_addto_canvas_set_property (GObject *object, ++ guint prop_id, ++ const GValue *value, ++ GParamSpec *pspec) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (object); ++ ++ switch (prop_id) { ++ case PROP_INFO: ++ priv->info = g_value_get_pointer (value); ++ build_canvas (PANEL_ADDTO_CANVAS (object)); ++ break; ++ } ++} ++ ++static void ++panel_addto_canvas_get_property (GObject *object, ++ guint prop_id, ++ GValue *value, ++ GParamSpec *pspec) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (object); ++ ++ switch (prop_id) { ++ case PROP_INFO: ++ g_value_set_pointer (value, priv->info); ++ break; ++ } ++} ++ ++static void ++panel_addto_canvas_finalize (GObject *object) ++{ ++ if (G_OBJECT_CLASS (panel_addto_canvas_parent_class)->finalize) ++ (* G_OBJECT_CLASS (panel_addto_canvas_parent_class)->finalize) (object); ++} ++ ++ ++static void ++panel_addto_canvas_draw_background (GnomeCanvas *canvas, GdkDrawable *drawable, ++ int x, int y, int width, int height) ++{ ++ /* By default, we use the style base color. */ ++ gdk_gc_set_foreground (canvas->pixmap_gc, ++ >K_WIDGET (canvas)->style->base[GTK_STATE_NORMAL]); ++ gdk_draw_rectangle (drawable, ++ canvas->pixmap_gc, ++ TRUE, ++ 0, 0, ++ width, height); ++} ++ ++static void ++panel_addto_canvas_size_allocate(GtkWidget *canvas, GtkAllocation *allocation) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ if (GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->size_allocate) ++ (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->size_allocate) (canvas, allocation); ++ ++ if (allocation->height == 1 || allocation->width == 1) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ priv->max_width = allocation->width; ++ priv->min_height = allocation->height; ++ ++ relayout_canvas (PANEL_ADDTO_CANVAS (canvas)); ++ ++ gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), 0, 0, priv->width - 1, priv->height - 1); ++ g_object_set (priv->under_cover, ++ "x2", priv->width, ++ "y2", priv->height, ++ NULL); ++} ++ ++static void ++panel_addto_canvas_realize (GtkWidget *canvas) ++{ ++ if (GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->realize) ++ (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->realize) (canvas); ++ ++ set_style (PANEL_ADDTO_CANVAS (canvas), FALSE); ++} ++ ++static void ++panel_addto_canvas_style_set (GtkWidget *canvas, GtkStyle *previous_style) ++{ ++ if (!GTK_WIDGET_REALIZED (canvas)) ++ return; ++ ++ set_style (PANEL_ADDTO_CANVAS (canvas), (previous_style && ++ canvas->style && ++ !pango_font_description_equal (canvas->style->font_desc, ++ previous_style->font_desc))); ++} ++ ++static void ++gnome_canvas_item_show_hide (GnomeCanvasItem *item, gboolean show) ++{ ++ if (show) ++ gnome_canvas_item_show (item); ++ else ++ gnome_canvas_item_hide (item); ++} ++ ++static void ++setup_entry (PanelAddtoCanvas *canvas, PanelAddtoEntry *entry) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei; ++ GtkWidget *widget; ++ GtkStateType state; ++ ++ if (!entry) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ widget = GTK_WIDGET (canvas); ++ ei = entry->user_data; ++ ++ if (ei->pixbuf) { ++ gnome_canvas_item_show_hide (ei->highlight_pixbuf, ei->highlighted); ++ gnome_canvas_item_show_hide (ei->pixbuf, !ei->highlighted); ++ } ++ if (!ei->selected) ++ state = GTK_STATE_NORMAL; ++ else if (gtk_window_has_toplevel_focus (GTK_WINDOW (gtk_widget_get_toplevel (widget)))) ++ state = GTK_STATE_SELECTED; ++ else ++ state = GTK_STATE_ACTIVE; ++ gnome_canvas_item_show_hide (ei->selection, ei->selected); ++ g_object_set (ei->selection, ++ "fill_color_gdk", &widget->style->base [state], ++ NULL); ++ g_object_set (ei->text, ++ "fill_color_gdk", &widget->style->text [state], ++ NULL); ++} ++ ++static gboolean ++cb_entry_info_reset (gpointer data) ++{ ++ EntryInfo *ei = data; ++ ei->launching = FALSE; ++ return FALSE; ++} ++ ++ ++void ++activate_entry (PanelAddtoEntry *entry) ++{ ++ EntryInfo *ei = entry->user_data; ++ ++ if (!ei->launching) { ++ ei->launching = TRUE; ++ gtk_timeout_add (1000, cb_entry_info_reset, ei); ++ ++ if (panel_addto_add_item (entry->dialog, entry->item_info)) ++ gtk_widget_destroy (entry->dialog->addto_dialog); ++ } ++} ++ ++static void ++panel_addto_drag_data_get_cb (GtkWidget *widget, ++ GdkDragContext *context, ++ GtkSelectionData *selection_data, ++ guint info, ++ guint time, ++ const char *string) ++{ ++ gtk_selection_data_set (selection_data, ++ selection_data->target, 8, (guchar *) string, ++ strlen (string)); ++} ++ ++static void ++panel_addto_drag_begin_cb (GtkWidget *canvas, ++ GdkDragContext *context, ++ gpointer data) ++{ ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ entry = priv->selected; ++ gtk_drag_set_icon_pixbuf (context, entry->icon_pixbuf, 0, 0); ++} ++ ++static void ++panel_addto_setup_drag (PanelAddtoCanvas *canvas, ++ const GtkTargetEntry *target, ++ const char *text) ++{ ++ if (!text || panel_lockdown_get_locked_down ()) ++ return; ++ ++ ++ gtk_drag_source_set (GTK_WIDGET (canvas), ++ GDK_BUTTON1_MASK|GDK_BUTTON2_MASK, ++ target, 1, GDK_ACTION_COPY); ++ ++ g_signal_connect_data (G_OBJECT (canvas), "drag_data_get", ++ G_CALLBACK (panel_addto_drag_data_get_cb), ++ g_strdup (text), ++ (GClosureNotify) g_free, ++ 0 /* connect_flags */); ++ g_signal_connect_after (G_OBJECT (canvas), "drag-begin", ++ G_CALLBACK (panel_addto_drag_begin_cb), ++ NULL); ++} ++ ++static void ++panel_addto_setup_launcher_drag (PanelAddtoCanvas *canvas, ++ const char *uri) ++{ ++ static GtkTargetEntry target[] = { ++ { "text/uri-list", 0, 0 } ++ }; ++ char *uri_list; ++ ++ uri_list = g_strconcat (uri, "\r\n", NULL); ++ panel_addto_setup_drag (canvas, target, uri_list); ++ g_free (uri_list); ++} ++ ++static void ++panel_addto_setup_applet_drag (PanelAddtoCanvas *canvas, ++ const char *iid) ++{ ++ static GtkTargetEntry target[] = { ++ { "application/x-panel-applet-iid", 0, 0 } ++ }; ++ ++ panel_addto_setup_drag (canvas, target, iid); ++} ++ ++ ++ ++static void ++panel_addto_setup_internal_applet_drag (PanelAddtoCanvas *canvas, ++ const char *applet_type) ++{ ++ static GtkTargetEntry target[] = { ++ { "application/x-panel-applet-internal", 0, 0 } ++ }; ++ ++ panel_addto_setup_drag (canvas, target, applet_type); ++} ++ ++static void ++panel_addto_selection_changed (PanelAddtoCanvas *canvas, ++ const gchar *status_display, ++ PanelAddtoDialog *dialog) ++{ ++ PanelAddtoItemInfo *data; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ data = priv->selected ? priv->selected->item_info : NULL; ++ ++ ++ if ((!priv->selected) || (!data)) { ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), FALSE); ++ return; ++ } ++ ++ gtk_widget_set_sensitive (GTK_WIDGET (dialog->add_button), TRUE); ++ ++ if (dialog->statuslabel) ++ gtk_label_set_text (GTK_LABEL (dialog->statuslabel), priv->selected->comment); ++ ++ if (data->type == PANEL_ADDTO_LAUNCHER_MENU) { ++ gtk_button_set_label (GTK_BUTTON (dialog->add_button), ++ GTK_STOCK_GO_FORWARD); ++ } else { ++ gtk_button_set_label (GTK_BUTTON (dialog->add_button), ++ GTK_STOCK_ADD); ++ } ++ gtk_button_set_use_stock (GTK_BUTTON (dialog->add_button), ++ TRUE); ++ ++} ++ ++static void ++select_entry (PanelAddtoCanvas *canvas, PanelAddtoEntry *entry) ++{ ++ PanelAddtoDialog *dialog; ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei = NULL; ++ GtkAdjustment *pos; ++ double affine[6]; ++ PanelAddtoEntry *selected; ++ ++ dialog = entry->dialog; ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ selected = priv->selected; ++ ++ if (selected == entry) ++ return; ++ ++ if (selected && selected->user_data) ++ ((EntryInfo *) selected->user_data)->selected = FALSE; ++ setup_entry (canvas, selected); ++ ++ priv->selected = selected = entry; ++ ++ if (selected && selected->user_data) ++ ((EntryInfo *) selected->user_data)->selected = TRUE; ++ setup_entry (canvas, selected); ++ ++ g_signal_emit (canvas, panel_addto_canvas_signals [SELECTION_CHANGED], 0, ++ (entry) ? entry->comment : NULL); ++ ++ if (!entry) ++ return; ++ ++ ei = entry->user_data; ++ gnome_canvas_item_i2c_affine (GNOME_CANVAS_ITEM (ei->group), affine); ++ pos = gtk_layout_get_vadjustment (GTK_LAYOUT (ei->cover->canvas)); ++ ++ if (affine[5] < pos->value) ++ gtk_adjustment_set_value (pos, MAX (affine[5] - PAD, 0)); ++ else if ((affine[5] + priv->max_item_height) > (pos->value+pos->page_size)) ++ gtk_adjustment_set_value (pos, MAX (MIN (affine[5] + priv->max_item_height + PAD, pos->upper) - pos->page_size, 0)); ++} ++ ++static gboolean ++cover_event (GnomeCanvasItem *item, GdkEvent *event, PanelAddtoEntry *entry) ++{ ++ EntryInfo *ei = entry->user_data; ++ PanelAddtoCanvas *canvas = ei->canvas; ++ PanelAddtoItemInfo *data; ++ PanelAddtoDialog *dialog = entry->dialog; ++ char *iid; ++ ++ data = entry->item_info; ++ ++ switch (event->type) { ++ case GDK_ENTER_NOTIFY: ++ ei->highlighted = TRUE; ++ setup_entry (canvas, entry); /* highlight even if it is already selected */ ++ ++ /* only allow dragging applets if we can add applets */ ++ if (panel_profile_id_lists_are_writable ()) { ++ switch (data->type) { ++ case PANEL_ADDTO_LAUNCHER: ++ panel_addto_setup_launcher_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->launcher_path); ++ break; ++ case PANEL_ADDTO_APPLET: ++ panel_addto_setup_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->iid); ++ break; ++ case PANEL_ADDTO_LAUNCHER_MENU: ++ break; ++ case PANEL_ADDTO_MENU: ++ /* build the iid for menus other than the main menu */ ++ if (data->iid == NULL) { ++ iid = g_strdup_printf ("MENU:%s/%s", ++ data->menu_filename, ++ data->menu_path); ++ } else { ++ iid = g_strdup (data->iid); ++ } ++ panel_addto_setup_internal_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ iid); ++ g_free (iid); ++ break; ++ default: ++ panel_addto_setup_internal_applet_drag (PANEL_ADDTO_CANVAS (dialog->canvas), ++ data->iid); ++ break; ++ } ++ } ++ ++ return TRUE; ++ case GDK_LEAVE_NOTIFY: ++ ei->highlighted = FALSE; ++ setup_entry (canvas, entry); ++ return TRUE; ++ case GDK_BUTTON_PRESS: ++ select_entry (canvas, entry); ++ gtk_widget_grab_focus (GTK_WIDGET (canvas)); ++ return TRUE; ++ case GDK_2BUTTON_PRESS: ++ if (event->button.button == 1) ++ activate_entry (entry); ++ return TRUE; ++ default: ++ return FALSE; ++ } ++} ++ ++static void ++panel_addto_select_first_entry (PanelAddtoCanvas *canvas) ++{ ++ PanelAddtoCategory *category; ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ EntryInfo *ei; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ category = g_slist_nth_data (priv->info->categories, 0); ++ entry = g_slist_nth_data (category->entries, 0); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ select_entry (canvas, entry); ++} ++ ++static gint ++panel_addto_count_visible_entries (PanelAddtoCategory *category) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint n_visible_entries = 0; ++ ++ for (l = category->entries; l; l = l->next) { ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) ++ n_visible_entries++; ++ } ++ return n_visible_entries; ++} ++ ++static gint ++panel_addto_get_rank_of_nth_visible_entry (PanelAddtoCategory *category, gint n) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint seen_visible_entries = 0; ++ gint seen_entries = 0; ++ gint farthest_visible_entry = 0; ++ ++ l = category->entries; ++ ++ while (seen_visible_entries < n) { ++ if (!l) break; ++ seen_entries++; ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) { ++ seen_visible_entries++; ++ farthest_visible_entry = seen_entries; ++ } ++ l = l->next; ++ } ++ ++ return (farthest_visible_entry - 1); ++} ++ ++static gint ++panel_addto_how_many_visible_entries_before_me (PanelAddtoCategory *category, gint rank) ++{ ++ GSList *l; ++ PanelAddtoEntry *entry; ++ EntryInfo *ei; ++ gint seen_entries = 0; ++ gint seen_visible_entries = 0; ++ ++ l = category->entries; ++ while (seen_entries < rank) { ++ entry = l->data; ++ ei = entry->user_data; ++ if (ei->visible) ++ seen_visible_entries++; ++ l = l->next; ++ seen_entries++; ++ } ++ return seen_visible_entries; ++} ++ ++static void ++panel_addto_select_east_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category, n_entry; ++ gint n_categories; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ if (ei->n_entry == category->n_entries - 1) { ++ if (n_category == priv->info->n_categories - 1) ++ return; ++ category = g_slist_nth_data (priv->info->categories, ei->n_category + 1); ++ entry = g_slist_nth_data (category->entries, 0); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry + 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_west_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category, n_entry; ++ gint n_categories; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ if (ei->n_entry == 0) { ++ if (n_category == 0) ++ return; ++ category = g_slist_nth_data (priv->info->categories, ei->n_category - 1); ++ entry = g_slist_nth_data (category->entries, category->n_entries - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_west_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_west_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_north_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category = 0; ++ gint n_categories; ++ gint n_visible_entries = 0; ++ gint n_visible_entries_before_me = 0; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ CategoryInfo *catinfo; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ n_visible_entries_before_me = ++ panel_addto_how_many_visible_entries_before_me (category, ei->n_entry); ++ if (n_visible_entries_before_me + 1 - priv->items_per_row <= 0) { ++ if (n_category == 0) { ++ panel_addto_select_first_entry (canvas); ++ return; ++ } ++ n_category--; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ catinfo = category->user_data; ++ if (!catinfo->visible) { ++ while (!catinfo->visible) { ++ category = g_slist_nth_data (priv->info->categories, --n_category); ++ if (!category) ++ return; ++ catinfo = category->user_data; ++ if (!catinfo) ++ return; ++ } ++ } ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ++ panel_addto_get_rank_of_nth_visible_entry ++ (category, ++ ((n_visible_entries - 1) / priv->items_per_row) * priv->items_per_row ++ + ((n_visible_entries_before_me + 1) % priv->items_per_row))); ++ if (!entry) ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry - priv->items_per_row); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static void ++panel_addto_select_south_entry (EntryInfo *ei, PanelAddtoCanvas *canvas) ++{ ++ gint n_category = 0; ++ gint n_categories; ++ gint n_visible_entries = 0; ++ gint n_visible_entries_before_me = 0; ++ PanelAddtoEntry *entry; ++ PanelAddtoCategory *category; ++ PanelAddtoCanvasPrivate *priv; ++ CategoryInfo *catinfo; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ n_categories = priv->info->n_categories; ++ ++ if (ei) { ++ n_category = ei->n_category; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ n_visible_entries_before_me = ++ panel_addto_how_many_visible_entries_before_me (category, ei->n_entry); ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ if (n_visible_entries_before_me + 1 + priv->items_per_row > n_visible_entries - 1) { ++ if (n_visible_entries_before_me + 1 ++ <= ((n_visible_entries - 1) / priv->items_per_row) * priv->items_per_row) { ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ } else { ++ if (n_category == priv->info->n_categories - 1) ++ return; ++ n_category++; ++ category = g_slist_nth_data (priv->info->categories, n_category); ++ catinfo = category->user_data; ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ei->n_entry % priv->items_per_row); ++ if (!catinfo->visible) { ++ while (!catinfo->visible) { ++ category = g_slist_nth_data (priv->info->categories, ++n_category); ++ if (!category) ++ return; ++ catinfo = category->user_data; ++ if (!catinfo) ++ return; ++ } ++ } ++ n_visible_entries = panel_addto_count_visible_entries (category); ++ entry = g_slist_nth_data (category->entries, ++ panel_addto_get_rank_of_nth_visible_entry ++ (category, ++ (n_visible_entries_before_me + 1) % priv->items_per_row)); ++ ++ if (!entry) ++ entry = g_slist_nth_data (category->entries, n_visible_entries - 1); ++ } ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } else { ++ entry = g_slist_nth_data (category->entries, ei->n_entry + priv->items_per_row); ++ ei = entry->user_data; ++ if (!ei->visible) { ++ panel_addto_select_east_entry (ei, canvas); ++ return; ++ } ++ } ++ select_entry (canvas, entry); ++ } else ++ panel_addto_select_first_entry (canvas); ++} ++ ++static gboolean ++cb_canvas_event (GnomeCanvasItem *item, GdkEvent *event, PanelAddtoDialog *dialog) ++{ ++ PanelAddtoCanvas *canvas = (PanelAddtoCanvas *) dialog->canvas; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ EntryInfo *ei = NULL; ++ gint n_category, n_entry; ++ gint n_categories, n_entries; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (event->type == GDK_BUTTON_PRESS) { ++ gtk_drag_source_unset (GTK_WIDGET (canvas)); ++ select_entry (canvas, NULL); ++ gtk_widget_grab_focus (GTK_WIDGET (dialog->canvas)); ++ return TRUE; ++ } ++ ++ if (event->type != GDK_KEY_PRESS) ++ return FALSE; ++ ++ n_entry = 0; ++ n_category = 0; ++ n_categories = priv->info->n_categories; ++ ++ if (priv->selected) { ++ ei = priv->selected->user_data; ++ current_category = g_slist_nth_data (priv->info->categories, ei->n_category); ++ n_entries = current_category->n_entries; ++ } ++ ++ switch (event->key.keyval) { ++ case GDK_KP_Right: ++ case GDK_Right: ++ if (priv->rtl) ++ panel_addto_select_west_entry (ei, canvas); ++ else ++ panel_addto_select_east_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Left: ++ case GDK_Left: ++ if (priv->rtl) ++ panel_addto_select_east_entry (ei, canvas); ++ else ++ panel_addto_select_west_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Down: ++ case GDK_Down: ++ panel_addto_select_south_entry (ei, canvas); ++ return TRUE; ++ case GDK_KP_Up: ++ case GDK_Up: ++ panel_addto_select_north_entry (ei, canvas); ++ return TRUE; ++ case GDK_Tab: ++ case GDK_KP_Tab: ++ case GDK_ISO_Left_Tab: ++ gtk_widget_grab_focus (dialog->search_entry); ++ break; ++ case GDK_Return: ++ case GDK_KP_Enter: ++ if (priv->selected) ++ activate_entry (priv->selected); ++ ++ return TRUE; ++ break; ++ case GDK_Escape: ++ panel_addto_dialog_response (dialog->addto_dialog, ++ GTK_RESPONSE_CANCEL, ++ dialog); ++ return TRUE; ++ default: ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++ ++static void ++calculate_item_width (PanelAddtoCanvas *canvas, EntryInfo *ei) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PangoLayout *layout; ++ PangoRectangle rectangle; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ layout = GNOME_CANVAS_TEXT (ei->text)->layout; ++ ++ pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); ++ pango_layout_set_width (layout, -1); ++ pango_layout_get_pixel_extents (layout, NULL, &rectangle); ++ ++ /* If its too big wrap at the max and regen to find the layout */ ++ if (rectangle.width > MAX_ITEM_WIDTH) { ++ pango_layout_set_width (layout, MAX_ITEM_WIDTH * PANGO_SCALE); ++ pango_layout_get_pixel_extents (layout, NULL, &rectangle); ++ rectangle.width = MAX_ITEM_WIDTH; ++ } ++ ++ ei->text_height = rectangle.height; ++ ++ priv->max_item_width = MAX (priv->max_item_width, rectangle.width); ++} ++ ++static void ++calculate_item_height (PanelAddtoCanvas *canvas, EntryInfo *ei) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ gint item_height; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (ei->pixbuf) ++ priv->max_icon_height = MAX (priv->max_icon_height, ei->icon_height); ++ ++ item_height = ei->icon_height + ei->text_height; ++ priv->max_item_height = MAX (priv->max_item_height, item_height); ++} ++ ++static void ++calculate_sizes (PanelAddtoCanvas *canvas) ++{ ++ GSList *l, *m; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ priv->max_item_height = 0; ++ priv->max_icon_height = 0; ++ priv->max_item_width = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ for (m = current_category->entries; m; m = m->next) { ++ current_entry = m->data; ++ EntryInfo *ei = current_entry->user_data; ++ calculate_item_width (canvas, ei); ++ calculate_item_height (canvas, ei); ++ } ++ } ++} ++ ++static void ++gnome_canvas_item_move_absolute (GnomeCanvasItem *item, double dx, double dy) ++{ ++ double translate[6]; ++ ++ g_return_if_fail (item != NULL); ++ g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); ++ ++ art_affine_translate (translate, dx, dy); ++ ++ gnome_canvas_item_affine_absolute (item, translate); ++} ++ ++static guchar ++lighten_component (guchar cur_value) ++{ ++ int new_value = cur_value; ++ new_value += 24 + (new_value >> 3); ++ if (new_value > 255) { ++ new_value = 255; ++ } ++ return (guchar) new_value; ++} ++ ++static GdkPixbuf * ++create_spotlight_pixbuf (GdkPixbuf* src) ++{ ++ GdkPixbuf *dest; ++ int i, j; ++ int width, height, has_alpha, src_row_stride, dst_row_stride; ++ guchar *target_pixels, *original_pixels; ++ guchar *pixsrc, *pixdest; ++ ++ g_return_val_if_fail (gdk_pixbuf_get_colorspace (src) == GDK_COLORSPACE_RGB, NULL); ++ g_return_val_if_fail ((!gdk_pixbuf_get_has_alpha (src) ++ && gdk_pixbuf_get_n_channels (src) == 3) ++ || (gdk_pixbuf_get_has_alpha (src) ++ && gdk_pixbuf_get_n_channels (src) == 4), NULL); ++ g_return_val_if_fail (gdk_pixbuf_get_bits_per_sample (src) == 8, NULL); ++ ++ dest = gdk_pixbuf_copy (src); ++ ++ has_alpha = gdk_pixbuf_get_has_alpha (src); ++ width = gdk_pixbuf_get_width (src); ++ height = gdk_pixbuf_get_height (src); ++ dst_row_stride = gdk_pixbuf_get_rowstride (dest); ++ src_row_stride = gdk_pixbuf_get_rowstride (src); ++ target_pixels = gdk_pixbuf_get_pixels (dest); ++ original_pixels = gdk_pixbuf_get_pixels (src); ++ ++ for (i = 0; i < height; i++) { ++ pixdest = target_pixels + i * dst_row_stride; ++ pixsrc = original_pixels + i * src_row_stride; ++ for (j = 0; j < width; j++) { ++ *pixdest++ = lighten_component (*pixsrc++); ++ *pixdest++ = lighten_component (*pixsrc++); ++ *pixdest++ = lighten_component (*pixsrc++); ++ if (has_alpha) { ++ *pixdest++ = *pixsrc++; ++ } ++ } ++ } ++ ++ return dest; ++} ++ ++static void ++build_canvas (PanelAddtoCanvas *canvas) ++{ ++ GSList *l, *m; ++ EntryInfo *ei; ++ PanelAddtoDialog *dialog; ++ PanelAddtoCategory *current_category = NULL; ++ PanelAddtoInformation *current_info = NULL; ++ PanelAddtoEntry *current_entry = NULL; ++ PanelAddtoCanvasPrivate *priv; ++ GnomeCanvas *gcanvas; ++ GnomeCanvasGroup *hidden_group; ++ int i, j, index; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ gcanvas = GNOME_CANVAS (canvas); ++ current_category = priv->info->categories->data; ++ current_entry = current_category->entries->data; ++ dialog = current_entry->dialog; ++ index = 0; ++ ++ priv->under_cover = gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ panel_addto_event_box_get_type(), ++ NULL); ++ ++ current_info = priv->info; ++ gnome_canvas_item_grab_focus (GNOME_CANVAS_ITEM (gnome_canvas_root (gcanvas))); ++ g_signal_connect (gnome_canvas_root (gcanvas), "event", ++ G_CALLBACK (cb_canvas_event), dialog); ++ ++ hidden_group = GNOME_CANVAS_GROUP (gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ gnome_canvas_group_get_type (), ++ NULL)); ++ for (l = priv->info->categories, i = 0; l; l = l->next, i++) { ++ ++ CategoryInfo *catinfo; ++ current_category = l->data; ++ ++ if (current_category->user_data == NULL) ++ current_category->user_data = g_new (CategoryInfo, 1); ++ ++ catinfo = current_category->user_data; ++ catinfo->group = NULL; ++ catinfo->title = NULL; ++ catinfo->line = NULL; ++ ++ catinfo->group = ++ GNOME_CANVAS_GROUP (gnome_canvas_item_new (gnome_canvas_root (gcanvas), ++ gnome_canvas_group_get_type (), ++ NULL)); ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (catinfo->group), 0, BORDERS); ++ ++ catinfo->line = gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_rect_get_type (), ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ ++ catinfo->title = NULL; ++ ++ if (current_category && (priv->info->n_categories != 1)) { ++ char *label = g_strdup_printf ("%s", current_category->title); ++ catinfo->title = gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_text_get_type (), ++ "text", current_category->title, ++ "markup", label, ++ "anchor", GTK_ANCHOR_NW, ++ NULL); ++ g_free (label); ++ } ++ ++ for (m = current_category->entries, j = 0; m; m = m->next, j++) { ++ current_entry = m->data; ++ ++ if (current_entry->user_data == NULL) ++ current_entry->user_data = g_new0 (EntryInfo, 1); ++ ++ ei = current_entry->user_data; ++ ++ ei->canvas = canvas; ++ ei->group = GNOME_CANVAS_GROUP ( ++ gnome_canvas_item_new (catinfo->group, ++ gnome_canvas_group_get_type (), ++ NULL)); ++ ei->selection = gnome_canvas_item_new ( ++ ei->group, ++ PANEL_ADDTO_TYPE_ROUNDED_RECT, ++ NULL); ++ ++ if (current_entry->title) { ++ ei->text = gnome_canvas_item_new (ei->group, ++ gnome_canvas_text_get_type (), ++ "anchor", GTK_ANCHOR_NW, ++ "justification", GTK_JUSTIFY_CENTER, ++ "clip", TRUE, ++ NULL); ++ pango_layout_set_alignment (GNOME_CANVAS_TEXT (ei->text)->layout, ++ PANGO_ALIGN_CENTER); ++ pango_layout_set_justify (GNOME_CANVAS_TEXT (ei->text)->layout, ++ FALSE); ++ g_object_set (ei->text, ++ "text", current_entry->title, ++ NULL); ++ } else ++ ei->text = NULL; ++ ++ if (current_entry->icon_pixbuf) { ++ GdkPixbuf *pixbuf = current_entry->icon_pixbuf; ++ GdkPixbuf *highlight_pixbuf = ++ create_spotlight_pixbuf (pixbuf); ++ ++ ei->icon_height = gdk_pixbuf_get_height (pixbuf); ++ ei->icon_width = gdk_pixbuf_get_width (pixbuf); ++ ei->pixbuf = gnome_canvas_item_new (ei->group, ++ gnome_canvas_pixbuf_get_type (), ++ "pixbuf", pixbuf, ++ NULL); ++ g_object_unref (pixbuf); ++ ei->highlight_pixbuf = gnome_canvas_item_new (ei->group, ++ gnome_canvas_pixbuf_get_type (), ++ "pixbuf", highlight_pixbuf, ++ NULL); ++ g_object_unref (highlight_pixbuf); ++ } else { ++ ei->pixbuf = NULL; ++ ei->highlight_pixbuf = NULL; ++ } ++ ++ ei->cover = gnome_canvas_item_new (ei->group, ++ panel_addto_event_box_get_type(), ++ NULL); ++ calculate_item_width (canvas, ei); ++ calculate_item_height (canvas, ei); ++ ++ ei->n_category = i; ++ ei->n_entry = j; ++ ei->index = index; ++ ++ setup_entry (canvas, current_entry); ++ ++ g_signal_connect (ei->cover, "event", ++ G_CALLBACK (cover_event), ++ current_entry); ++ index++; ++ } ++ } ++ ++ dialog = current_entry->dialog; ++ ++ g_signal_connect (G_OBJECT (canvas), "selection-changed", ++ G_CALLBACK (panel_addto_selection_changed), current_entry->dialog); ++} ++ ++ ++static const char * ++panel_addto_utf8_casestrstr (const char *haystack, const char *needle) ++{ ++ ++ if (!haystack) ++ return NULL; ++ ++ haystack = g_utf8_strdown (haystack, -1); ++ needle = g_utf8_strdown (needle, -1); ++ ++ const char *s; ++ gsize i; ++ gsize haystack_len = g_utf8_strlen (haystack, -1); ++ gsize needle_len = g_utf8_strlen (needle, -1); ++ int needle_size = strlen (needle); ++ ++ if (needle_len > haystack_len) ++ return NULL; ++ ++ s = haystack; ++ for (i = 0; i <= haystack_len - needle_len; i++) { ++ if (strncmp (s, needle, needle_size) == 0) ++ return s; ++ s = g_utf8_next_char (s); ++ } ++ ++ return NULL; ++} ++ ++void ++panel_addto_relayout_for_search (GtkWidget *search_entry, PanelAddtoDialog *dialog) ++{ ++ gchar *search_text; ++ PanelAddtoCanvasPrivate *priv; ++ ++ search_text = g_malloc (strlen ((gchar*) gtk_entry_get_text (GTK_ENTRY (search_entry))) + 1); ++ g_stpcpy (search_text, gtk_entry_get_text (GTK_ENTRY (search_entry))); ++ g_strchomp (search_text); ++ if (dialog->canvas) { ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ priv->search_text = search_text; ++ gtk_widget_queue_resize (GTK_WIDGET (dialog->canvas)); ++ } ++} ++ ++void ++panel_addto_activate_from_searchbar (GtkWidget *search_entry, PanelAddtoDialog *dialog) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (dialog->canvas); ++ if (priv->selected) ++ activate_entry (priv->selected); ++} ++ ++/* If we can't find the search query in the applet's name, in the applet's ++ * description, nor in the applet's category, then the applet has to be hidden. ++ */ ++ ++static gboolean ++panel_addto_entry_must_be_hidden (PanelAddtoEntry *entry, const gchar **search_terms) ++{ ++ gint i; ++ gint nb_search_terms = 0, nb_found = 0; ++ gboolean search_is_null = TRUE; ++ ++ for (i = 0; search_terms[i] != NULL; i++) { ++ nb_search_terms ++; ++ search_is_null = FALSE; ++ if ( ++ (entry->title ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->title, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL))) ++ || (entry->comment ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->comment, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL))) ++ || (entry->category->title ++ && panel_addto_utf8_casestrstr (g_locale_to_utf8 (entry->category->title, -1, NULL, NULL, NULL), ++ g_locale_to_utf8 (search_terms[i], -1, NULL, NULL, NULL)))) ++ nb_found++; ++ } ++ ++ if (search_is_null || nb_found == nb_search_terms) ++ return FALSE; ++ ++ return TRUE; ++} ++ ++/* A category canvas item contains all the elements ++ * for the category, as well as the title and a separator ++ */ ++static void ++relayout_category (PanelAddtoCanvas *canvas, CategoryInfo *catinfo, ++ gint vert_pos, gint *category_vert_pos) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (catinfo->group), ++ 0, vert_pos); ++ ++ if (catinfo->line) { ++ gnome_canvas_item_move_absolute (catinfo->line, BORDERS, ABOVE_LINE_SPACING); ++ ++ gnome_canvas_item_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ } ++ ++ if (catinfo->title) { ++ double text_height, text_width; ++ ++ g_object_get (catinfo->title, ++ "text_height", &text_height, ++ "text_width", &text_width, ++ NULL); ++ ++ *category_vert_pos += text_height; /* move it down 1 line */ ++ gnome_canvas_item_move_absolute (catinfo->title, ++ (priv->rtl) ? priv->max_width - BORDERS - text_width : BORDERS, ++ *category_vert_pos); ++ *category_vert_pos += text_height + text_height/2 + UNDER_TITLE_SPACING; ++ } ++} ++ ++static void ++relayout_item (PanelAddtoCanvas *canvas, EntryInfo *ei, ++ gint category_horiz_pos, gint category_vert_pos) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ gnome_canvas_item_move_absolute (GNOME_CANVAS_ITEM (ei->group), ++ category_horiz_pos, ++ category_vert_pos); ++ ++ gnome_canvas_item_set (ei->selection, ++ "x2", (double) priv->max_item_width + 2 * PAD, ++ "y2", (double) ei->text_height + 1, /* expand it down slightly */ ++ NULL); ++ ++ gnome_canvas_item_move_absolute (ei->selection, -PAD, priv->max_icon_height); ++ ++ if (ei->text) { ++ /* canvas asks layout for its extent, layout gives real ++ * size, not fixed width and drawing gets confused. ++ */ ++ gnome_canvas_item_set (ei->text, ++ "clip_width", (double) priv->max_item_width, ++ "clip_height", (double) priv->max_item_height, ++ NULL); ++ ++ /* text is centered by pango */ ++ pango_layout_set_width (GNOME_CANVAS_TEXT (ei->text)->layout, ++ (gint) priv->max_item_width * PANGO_SCALE); ++ ++ gnome_canvas_item_move_absolute (ei->text, ++ 0, priv->max_icon_height); ++ } ++ ++ if (ei->pixbuf) { ++ /* manually center the icon */ ++ gnome_canvas_item_move_absolute (ei->pixbuf, ++ priv->max_item_width / 2 - ei->icon_width / 2, 0); ++ gnome_canvas_item_move_absolute (ei->highlight_pixbuf, ++ priv->max_item_width / 2 - ei->icon_width / 2, 0); ++ } ++ ++ /* cover the item */ ++ gnome_canvas_item_set (ei->cover, ++ "x2", (double) priv->max_item_width, ++ "y2", (double) priv->max_item_height, ++ NULL); ++} ++ ++static void ++relayout_canvas (PanelAddtoCanvas *canvas) ++{ ++ gint entry; ++ gint vert_pos, category_vert_pos, category_horiz_pos; ++ gint real_width; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ CategoryInfo *catinfo; ++ EntryInfo *ei; ++ GSList *l, *m; ++ gboolean at_least_one_found, first_shown_category, first_shown_entry; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ real_width = priv->max_width - 2 * BORDERS + ITEMS_SEPARATION; ++ priv->items_per_row = real_width / ((gint) priv->max_item_width + ITEMS_SEPARATION); ++ ++ vert_pos = BORDERS; ++ ++ const gchar *search_text = priv->search_text; ++ gchar **search_terms; ++ search_terms = search_text ? g_strsplit (search_text, " ", 0) : NULL; ++ ++ first_shown_category = TRUE; ++ first_shown_entry = TRUE; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ ++ at_least_one_found = FALSE; ++ category_vert_pos = 0; ++ ++ category_horiz_pos = (priv->rtl) ? priv->max_width - (gint) priv->max_item_width - BORDERS : BORDERS; ++ ++ current_category = l->data; ++ catinfo = current_category->user_data; ++ ++ relayout_category (canvas, catinfo, vert_pos, &category_vert_pos); ++ category_vert_pos += UNDER_LINE_SPACING; ++ ++ for (m = current_category->entries, entry = 0; m; m = m->next, entry++) { ++ ++ current_entry = m->data; ++ ei = current_entry->user_data; ++ ++ /* we don't want the first item to wrap, it would ++ be too separated from the section title */ ++ ++ if (!search_text || !panel_addto_entry_must_be_hidden (current_entry, (const gchar **)search_terms)) { ++ at_least_one_found = TRUE; ++ gnome_canvas_item_show (GNOME_CANVAS_ITEM (ei->group)); ++ ei->visible = TRUE; ++ if ((entry > 0) && ++ ((priv->items_per_row == 0) || ++ (priv->items_per_row > 0 && (entry % priv->items_per_row == 0)))) { ++ ++ category_horiz_pos = (priv->rtl) ? ++ priv->max_width - (gint) priv->max_item_width - BORDERS : BORDERS; ++ category_vert_pos += (gint) priv->max_item_height + ITEMS_SEPARATION; ++ } ++ ++ relayout_item (canvas, ei, category_horiz_pos, category_vert_pos); ++ ++ if (priv->rtl) ++ category_horiz_pos -= (gint) priv->max_item_width + ITEMS_SEPARATION; ++ else ++ category_horiz_pos += (gint) priv->max_item_width + ITEMS_SEPARATION; ++ ++ /* If the user is actually using the search bar, select ++ * the first shown entry. ++ */ ++ if (search_text && first_shown_entry) { ++ select_entry (canvas, current_entry); ++ first_shown_entry = FALSE; ++ } ++ } else { ++ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (ei->group)); ++ ei->visible = FALSE; ++ entry --; ++ } ++ ++ } ++ if (at_least_one_found) { ++ gnome_canvas_item_show (GNOME_CANVAS_ITEM (catinfo->group)); ++ catinfo->visible = TRUE; ++ category_vert_pos += (gint) priv->max_item_height; ++ vert_pos += category_vert_pos + ITEMS_SEPARATION; ++ ++ if (first_shown_category) { ++ g_object_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) 0, ++ NULL); ++ first_shown_category = FALSE; ++ } else { ++ g_object_set (catinfo->line, ++ "x2", (double) priv->max_width - 2 * BORDERS, ++ "y2", (double) LINE_HEIGHT, ++ NULL); ++ } ++ ++ } else { ++ gnome_canvas_item_hide (GNOME_CANVAS_ITEM (catinfo->group)); ++ catinfo->visible = FALSE; ++ } ++ } ++ ++ /* substract the last ITEMS_SEPARATION to ++ adjust the canvas size a bit more */ ++ vert_pos -= ITEMS_SEPARATION; ++ ++ priv->height = MAX (vert_pos, priv->min_height); ++ priv->width = priv->max_width; ++} ++ ++ ++static void ++set_style (PanelAddtoCanvas *canvas, gboolean font_changed) ++{ ++ GSList *l, *m; ++ PanelAddtoCategory *current_category; ++ PanelAddtoEntry *current_entry; ++ PanelAddtoCanvasPrivate *priv; ++ GtkWidget *widget = GTK_WIDGET (canvas); ++ ++ ++ if (!GTK_WIDGET_REALIZED (widget)) ++ return; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ CategoryInfo *catinfo = current_category->user_data; ++ ++ if (catinfo->line) { ++ g_object_set (catinfo->line, ++ "fill_color_gdk", &widget->style->text_aa[GTK_STATE_NORMAL], ++ NULL); ++ } ++ if (catinfo->title) { ++ g_object_set (catinfo->title, ++ "fill_color_gdk", &widget->style->text[GTK_STATE_NORMAL], ++ NULL); ++ ++ if (font_changed) ++ g_object_set (catinfo->title, ++ "font", NULL, ++ NULL); ++ } ++ ++ for (m = current_category->entries; m; m = m->next) { ++ current_entry = m->data; ++ EntryInfo *entryinfo = current_entry->user_data; ++ if (font_changed && entryinfo->text) ++ g_object_set (entryinfo->text, ++ "font", NULL, ++ NULL); ++ setup_entry (canvas, current_entry); ++ } ++ } ++ ++ if (font_changed) { ++ calculate_sizes (canvas); ++ relayout_canvas (canvas); ++ } ++} ++ ++ ++GtkWidget* ++panel_addto_canvas_new (PanelAddtoInformation *info) ++{ ++ ++ return g_object_new (PANEL_ADDTO_TYPE_CANVAS, ++ "info", info, ++ NULL); ++} ++ ++/* Accessibility support */ ++ ++static gpointer accessible_parent_class; ++static gpointer accessible_item_parent_class; ++ ++enum { ++ ACTION_ACTIVATE, ++ LAST_ACTION ++}; ++ ++typedef struct { ++ AtkObject parent; ++ ++ PanelAddtoEntry *entry; ++ AtkStateSet *state_set; ++ ++ guint action_idle_handler; ++} PanelAddtoCanvasItemAccessible; ++ ++typedef struct { ++ AtkObjectClass parent_class; ++} PanelAddtoCanvasItemAccessibleClass; ++ ++static const gchar *const action_names[] = ++{ ++ "activate", ++ NULL ++}; ++ ++static const gchar *const action_descriptions[] = ++{ ++ "Activate item", ++ NULL ++}; ++ ++static void ++panel_addto_canvas_item_accessible_get_extents (AtkComponent *component, ++ gint *x, ++ gint *y, ++ gint *width, ++ gint *height, ++ AtkCoordType coord_type) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvas *canvas; ++ GnomeCanvasItem *cover; ++ AtkObject *parent_object; ++ gint p_x, p_y; ++ ++ item = (PanelAddtoCanvasItemAccessible *) component; ++ ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ parent_object = gtk_widget_get_accessible (GTK_WIDGET (canvas)); ++ atk_component_get_position (ATK_COMPONENT (parent_object), &p_x, &p_y, coord_type); ++ ++ ++ /* the cover pretty much represents the item size */ ++ ++ ++ cover = GNOME_CANVAS_ITEM (((EntryInfo *)item->entry->user_data)->cover); ++ ++ *x = p_x + cover->x1; ++ *y = p_y + cover->y1; ++ *width = cover->x2 - cover->x1; ++ *height = cover->y2 - cover->y1; ++} ++ ++static void ++atk_component_item_interface_init (AtkComponentIface *iface) ++{ ++ iface->get_extents = panel_addto_canvas_item_accessible_get_extents; ++} ++ ++static gboolean ++idle_do_action (gpointer data) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ item = (PanelAddtoCanvasItemAccessible *) data; ++ ++ item->action_idle_handler = 0; ++ activate_entry (item->entry); ++ ++ return FALSE; ++} ++ ++ ++static gboolean ++panel_addto_canvas_item_accessible_action_do_action (AtkAction *action, ++ gint index) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ if (index < 0 || index >= LAST_ACTION) ++ return FALSE; ++ ++ item = (PanelAddtoCanvasItemAccessible *) action; ++ ++ switch (index) { ++ case ACTION_ACTIVATE: ++ if (!item->action_idle_handler) ++ item->action_idle_handler = g_idle_add (idle_do_action, item); ++ break; ++ default: ++ g_assert_not_reached (); ++ return FALSE; ++ } ++ ++ return TRUE; ++} ++ ++static gint ++panel_addto_canvas_item_accessible_action_get_n_actions (AtkAction *action) ++{ ++ return LAST_ACTION; ++} ++ ++static const gchar * ++panel_addto_canvas_item_accessible_action_get_description (AtkAction *action, ++ gint index) ++{ ++ if (index < 0 || index >= LAST_ACTION) ++ return NULL; ++ ++ return action_descriptions[index]; ++} ++ ++static const gchar * ++panel_addto_canvas_item_accessible_action_get_name (AtkAction *action, ++ gint index) ++{ ++ if (index < 0 || index >= LAST_ACTION) ++ return NULL; ++ ++ return action_names[index]; ++} ++ ++static void ++atk_action_item_interface_init (AtkActionIface *iface) ++{ ++ iface->do_action = panel_addto_canvas_item_accessible_action_do_action; ++ iface->get_n_actions = panel_addto_canvas_item_accessible_action_get_n_actions; ++ iface->get_description = panel_addto_canvas_item_accessible_action_get_description; ++ iface->get_name = panel_addto_canvas_item_accessible_action_get_name; ++} ++ ++static gint ++panel_addto_canvas_item_accessible_get_index_in_parent (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ return ((EntryInfo *) item->entry->user_data)->index; ++} ++ ++static G_CONST_RETURN gchar* ++panel_addto_canvas_item_accessible_get_name (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ ++ if (object->name) ++ return object->name; ++ else { ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ if (item->entry && item->entry->title) ++ return item->entry->title; ++ else ++ return "Item with no description"; ++ } ++} ++ ++static AtkObject* ++panel_addto_canvas_item_accessible_get_parent (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvas *canvas; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ ++ return gtk_widget_get_accessible (GTK_WIDGET (canvas)); ++} ++ ++static AtkStateSet* ++panel_addto_canvas_item_accessible_ref_state_set (AtkObject *object) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ canvas = ((EntryInfo *) item->entry->user_data)->canvas; ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (item->entry == priv->selected) ++ atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSED); ++ else ++ atk_state_set_remove_state (item->state_set, ATK_STATE_FOCUSED); ++ ++ return g_object_ref (item->state_set); ++} ++ ++static void ++panel_addto_canvas_item_accessible_class_init (AtkObjectClass *class) ++{ ++ GObjectClass *object_class; ++ ++ accessible_item_parent_class = g_type_class_peek_parent (class); ++ ++ object_class = (GObjectClass *)class; ++ ++ class->get_index_in_parent = panel_addto_canvas_item_accessible_get_index_in_parent; ++ class->get_name = panel_addto_canvas_item_accessible_get_name; ++ class->get_parent = panel_addto_canvas_item_accessible_get_parent; ++ class->ref_state_set = panel_addto_canvas_item_accessible_ref_state_set; ++} ++ ++static void ++panel_addto_canvas_item_accessible_object_init (PanelAddtoCanvasItemAccessible *item) ++{ ++ item->state_set = atk_state_set_new (); ++ ++ atk_state_set_add_state (item->state_set, ATK_STATE_ENABLED); ++ atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSABLE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_SENSITIVE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_SELECTABLE); ++ atk_state_set_add_state (item->state_set, ATK_STATE_VISIBLE); ++ ++ item->action_idle_handler = 0; ++} ++ ++static GType ++panel_addto_canvas_item_accessible_get_type (void) ++{ ++ static GType type = 0; ++ ++ if (type == 0) { ++ static const GTypeInfo info = { ++ sizeof (PanelAddtoCanvasItemAccessibleClass), ++ (GBaseInitFunc) NULL, /* base init */ ++ (GBaseFinalizeFunc) NULL, /* base finalize */ ++ (GClassInitFunc) panel_addto_canvas_item_accessible_class_init, /* class init */ ++ (GClassFinalizeFunc) NULL, /* class finalize */ ++ NULL, /* class data */ ++ sizeof (PanelAddtoCanvasItemAccessible), /* instance size */ ++ 0, /* nb preallocs */ ++ (GInstanceInitFunc) panel_addto_canvas_item_accessible_object_init, /* instance init */ ++ NULL /* value table */ ++ }; ++ ++ static const GInterfaceInfo atk_component_info = { ++ (GInterfaceInitFunc) atk_component_item_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ static const GInterfaceInfo atk_action_info = { ++ (GInterfaceInitFunc) atk_action_item_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ type = g_type_register_static (ATK_TYPE_OBJECT, ++ "PanelAddtoCanvasItemAccessible", &info, 0); ++ ++ g_type_add_interface_static (type, ATK_TYPE_COMPONENT, ++ &atk_component_info); ++ g_type_add_interface_static (type, ATK_TYPE_ACTION, ++ &atk_action_info); ++ } ++ ++ return type; ++} ++ ++static gint ++panel_addto_canvas_accessible_get_n_children (AtkObject *accessible) ++{ ++ GSList *l; ++ PanelAddtoCategory *current_category; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ gint count; ++ ++ widget = GTK_ACCESSIBLE (accessible)->widget; ++ ++ if (!widget) ++ return 0; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ count = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ count += current_category->n_entries; ++ } ++ ++ return count; ++} ++ ++static PanelAddtoEntry* ++panel_addto_canvas_accessible_get_entry (PanelAddtoCanvas *canvas, gint index) ++{ ++ GSList *l; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCategory *current_category; ++ gint count; ++ ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ count = 0; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ if (index >= count && ++ index < count + current_category->n_entries) { ++ return g_slist_nth_data (current_category->entries, index - count); ++ } else ++ count += current_category->n_entries; ++ } ++ ++ return NULL; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_child (AtkObject *accessible, gint index) ++{ ++ PanelAddtoCanvasItemAccessible *item; ++ PanelAddtoEntry *entry; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ AtkObject *object; ++ ++ widget = GTK_ACCESSIBLE (accessible)->widget; ++ ++ if (!widget) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ entry = panel_addto_canvas_accessible_get_entry (canvas, index); ++ ++ if (!entry) ++ return NULL; ++ ++ object = g_hash_table_lookup (priv->accessible_children, &index); ++ ++ if (!object) { ++ object = g_object_new (panel_addto_canvas_item_accessible_get_type (), NULL); ++ item = (PanelAddtoCanvasItemAccessible *) object; ++ ++ object->role = ATK_ROLE_ICON; ++ item->entry = entry; ++ ++ g_hash_table_insert (priv->accessible_children, ++ &((EntryInfo *) entry->user_data)->index, object); ++ } ++ ++ return g_object_ref (object); ++} ++ ++static void ++panel_addto_canvas_accessible_initialize (AtkObject *accessible, gpointer data) ++{ ++ if (ATK_OBJECT_CLASS (accessible_parent_class)->initialize) ++ ATK_OBJECT_CLASS (accessible_parent_class)->initialize (accessible, data); ++ ++ accessible->role = ATK_ROLE_LAYERED_PANE; ++} ++ ++static void ++panel_addto_canvas_accessible_class_init (AtkObjectClass *class) ++{ ++ GObjectClass *object_class; ++ GtkAccessibleClass *accessible_class; ++ ++ accessible_parent_class = g_type_class_peek_parent (class); ++ ++ object_class = (GObjectClass *)class; ++ accessible_class = (GtkAccessibleClass *)class; ++ ++ class->get_n_children = panel_addto_canvas_accessible_get_n_children; ++ class->ref_child = panel_addto_canvas_accessible_ref_child; ++ class->initialize = panel_addto_canvas_accessible_initialize; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_add_selection (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ PanelAddtoEntry *entry; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ entry = panel_addto_canvas_accessible_get_entry (canvas, i); ++ select_entry (canvas, entry); ++ ++ return TRUE; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_clear_selection (AtkSelection *selection) ++{ ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ select_entry (canvas, NULL); ++ ++ return TRUE; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_selection (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ if (priv->selected) ++ return atk_object_ref_accessible_child (gtk_widget_get_accessible (widget), ++ ((EntryInfo *)priv->selected->user_data)->index); ++ return NULL; ++} ++ ++static gint ++panel_addto_canvas_accessible_get_selection_count (AtkSelection *selection) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return 0; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ return (priv->selected) ? 1 : 0; ++} ++ ++static gboolean ++panel_addto_canvas_accessible_is_child_selected (AtkSelection *selection, gint i) ++{ ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ GtkWidget *widget; ++ ++ widget = GTK_ACCESSIBLE (selection)->widget; ++ ++ if (!widget) ++ return FALSE; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ return (priv->selected == panel_addto_canvas_accessible_get_entry (canvas, i)); ++} ++ ++static gboolean ++panel_addto_canvas_accessible_remove_selection (AtkSelection *selection, gint i) ++{ ++ /* There can be only one item selected */ ++ return panel_addto_canvas_accessible_clear_selection (selection); ++} ++ ++static gboolean ++panel_addto_canvas_accessible_select_all_selection (AtkSelection *selection) ++{ ++ /* This can't happen */ ++ return FALSE; ++} ++ ++static void ++panel_addto_canvas_accessible_selection_interface_init (AtkSelectionIface *iface) ++{ ++ iface->add_selection = panel_addto_canvas_accessible_add_selection; ++ iface->clear_selection = panel_addto_canvas_accessible_clear_selection; ++ iface->ref_selection = panel_addto_canvas_accessible_ref_selection; ++ iface->get_selection_count = panel_addto_canvas_accessible_get_selection_count; ++ iface->is_child_selected = panel_addto_canvas_accessible_is_child_selected; ++ iface->remove_selection = panel_addto_canvas_accessible_remove_selection; ++ iface->select_all_selection = panel_addto_canvas_accessible_select_all_selection; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_ref_accessible_at_point (AtkComponent *component, ++ gint x, ++ gint y, ++ AtkCoordType coord_type) ++{ ++ GSList *l, *m; ++ GtkWidget *widget; ++ PanelAddtoCanvasPrivate *priv; ++ PanelAddtoCanvas *canvas; ++ PanelAddtoCategory *current_category; ++ EntryInfo *entry; ++ gint x_pos, y_pos, x_w, y_w; ++ ++ widget = GTK_ACCESSIBLE (component)->widget; ++ ++ if (widget == NULL) ++ return NULL; ++ ++ canvas = PANEL_ADDTO_CANVAS (widget); ++ priv = PANEL_ADDTO_CANVAS_GET_PRIVATE (canvas); ++ ++ atk_component_get_extents (component, &x_pos, &y_pos, NULL, NULL, coord_type); ++ x_w = x - x_pos; ++ y_w = y - y_pos; ++ ++ for (l = priv->info->categories; l; l = l->next) { ++ current_category = l->data; ++ for (m = current_category->entries; m; m = m->next) { ++ entry = (EntryInfo *) m->data; ++ ++ if (x_w > entry->cover->x1 && ++ x_w < entry->cover->x2 && ++ y_w > entry->cover->y1 && ++ y_w < entry->cover->y2) ++ return panel_addto_canvas_accessible_ref_child (ATK_OBJECT (component), entry->index); ++ } ++ } ++ ++ return NULL; ++} ++ ++static void ++atk_component_interface_init (AtkComponentIface *iface) ++{ ++ iface->ref_accessible_at_point = panel_addto_canvas_accessible_ref_accessible_at_point; ++} ++ ++static GType ++panel_addto_canvas_accessible_get_type (void) ++{ ++ static GType type = 0; ++ AtkObjectFactory *factory; ++ GType derived_type; ++ GTypeQuery query; ++ GType derived_atk_type; ++ ++ if (type == 0) { ++ static GTypeInfo info = { ++ 0, /* class size */ ++ (GBaseInitFunc) NULL, /* base init */ ++ (GBaseFinalizeFunc) NULL, /* base finalize */ ++ (GClassInitFunc) panel_addto_canvas_accessible_class_init, ++ (GClassFinalizeFunc) NULL, /* class finalize */ ++ NULL, /* class data */ ++ 0, /* instance size */ ++ 0, /* nb preallocs */ ++ (GInstanceInitFunc) NULL, /* instance init */ ++ NULL /* value table */ ++ }; ++ ++ static const GInterfaceInfo atk_component_info = { ++ (GInterfaceInitFunc) atk_component_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ static const GInterfaceInfo atk_selection_info = { ++ (GInterfaceInitFunc) panel_addto_canvas_accessible_selection_interface_init, ++ (GInterfaceFinalizeFunc) NULL, ++ NULL ++ }; ++ ++ derived_type = g_type_parent (PANEL_ADDTO_TYPE_CANVAS); ++ factory = atk_registry_get_factory (atk_get_default_registry (), ++ derived_type); ++ ++ derived_atk_type = atk_object_factory_get_accessible_type (factory); ++ g_type_query (derived_atk_type, &query); ++ ++ info.class_size = query.class_size; ++ info.instance_size = query.instance_size; ++ ++ type = g_type_register_static (derived_atk_type, ++ "PanelAddtoCanvasAccessible", ++ &info, 0); ++ ++ g_type_add_interface_static (type, ++ ATK_TYPE_COMPONENT, ++ &atk_component_info); ++ g_type_add_interface_static (type, ++ ATK_TYPE_SELECTION, ++ &atk_selection_info); ++ } ++ ++ return type; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_new (GObject *object) ++{ ++ AtkObject *accessible; ++ ++ accessible = g_object_new (panel_addto_canvas_accessible_get_type (), NULL); ++ atk_object_initialize (accessible, object); ++ ++ return accessible; ++} ++ ++static AtkObject* ++panel_addto_canvas_accessible_factory_create_accessible (GObject *object) ++{ ++ return panel_addto_canvas_accessible_new (object); ++} ++ ++static void ++panel_addto_canvas_accessible_factory_class_init (AtkObjectFactoryClass *class) ++{ ++ class->create_accessible = panel_addto_canvas_accessible_factory_create_accessible; ++ class->get_accessible_type = panel_addto_canvas_accessible_get_type; ++} ++ ++static GType ++panel_addto_canvas_accessible_factory_get_type (void) ++{ ++ static GType type = 0; ++ ++ if (type == 0) { ++ static const GTypeInfo info = { ++ sizeof (AtkObjectFactoryClass), ++ NULL, /* base_init */ ++ NULL, /* base_finalize */ ++ (GClassInitFunc) panel_addto_canvas_accessible_factory_class_init, ++ NULL, /* class_finalize */ ++ NULL, /* class_data */ ++ sizeof (AtkObjectFactory), ++ 0, /* n_preallocs */ ++ NULL, NULL ++ }; ++ ++ type = g_type_register_static (ATK_TYPE_OBJECT_FACTORY, ++ "PanelAddtoCanvasAccessibleFactory", ++ &info, 0); ++ } ++ ++ return type; ++} ++ ++static AtkObject* ++panel_addto_canvas_get_accessible (GtkWidget *widget) ++{ ++ static gboolean already_here = FALSE; ++ ++ if (!already_here) { ++ AtkObjectFactory *factory; ++ AtkRegistry *registry; ++ GType derived_type; ++ GType derived_atk_type; ++ ++ already_here = TRUE; ++ ++ derived_type = g_type_parent (PANEL_ADDTO_TYPE_CANVAS); ++ ++ registry = atk_get_default_registry (); ++ factory = atk_registry_get_factory (registry, derived_type); ++ ++ derived_atk_type = atk_object_factory_get_accessible_type (factory); ++ ++ if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) { ++ atk_registry_set_factory_type (registry, ++ PANEL_ADDTO_TYPE_CANVAS, ++ panel_addto_canvas_accessible_factory_get_type ()); ++ } ++ } ++ ++ return (* GTK_WIDGET_CLASS (panel_addto_canvas_parent_class)->get_accessible) (widget); ++} +diff -Nur gnome-panel-2.14.1/panel-addto-canvas.h gnome-panel-2.14.1.new/panel-addto-canvas.h +--- gnome-panel-2.14.1/panel-addto-canvas.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-canvas.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,88 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* Copyright (C) 2005 Carlos Garnacho ++ * ++ * 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 2 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. ++ * ++ * Authors: Jody Goldberg ++ * Carlos Garnacho Parro ++ * Manu Cornet ++ */ ++ ++#ifndef PANEL_ADDTO_CANVAS_H ++#define PANEL_ADDTO_CANVAS_H ++ ++#include ++#include ++#include "panel-addto.h" ++ ++G_BEGIN_DECLS ++ ++#define PANEL_ADDTO_TYPE_CANVAS (panel_addto_canvas_get_type ()) ++#define PANEL_ADDTO_CANVAS(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvas)) ++#define PANEL_ADDTO_CANVAS_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasClass)) ++#define PANEL_ADDTO_IS_CANVAS(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PANEL_ADDTO_TYPE_CANVAS)) ++#define PANEL_ADDTO_IS_CANVAS_CLASS(c) (G_TYPE_CHECK_CLASS_TYPE ((c), PANEL_ADDTO_TYPE_CANVAS)) ++#define PANEL_ADDTO_CANVAS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), PANEL_ADDTO_TYPE_CANVAS, PanelAddtoCanvasClass)) ++ ++typedef struct _PanelAddtoCanvas PanelAddtoCanvas; ++typedef struct _PanelAddtoCanvasClass PanelAddtoCanvasClass; ++ ++struct _PanelAddtoCanvas { ++ GnomeCanvas parent; ++}; ++ ++struct _PanelAddtoCanvasClass { ++ GnomeCanvasClass parent_class; ++ ++ void (*changed) (PanelAddtoCanvas *canvas, gchar *str); ++}; ++ ++typedef struct _PanelAddtoCanvasPrivate PanelAddtoCanvasPrivate; ++ ++struct _PanelAddtoCanvasPrivate { ++ GnomeCanvasItem *under_cover; ++ double height; ++ double width; ++ ++ double min_height; ++ double max_width; ++ PanelAddtoInformation *info; ++ PanelAddtoEntry *selected; ++ ++ gboolean rtl; ++ gint items_per_row; ++ gint selected_row; ++ ++ gchar *search_text; ++ ++ /* calculated sizes ++ for the elements */ ++ gdouble max_item_width; ++ gdouble max_item_height; ++ gdouble max_icon_height; ++ ++ /* accessibility stuff */ ++ GHashTable *accessible_children; ++}; ++ ++GType panel_addto_canvas_get_type (void); ++void activate_entry (PanelAddtoEntry *entry); ++void panel_addto_relayout_for_search (GtkWidget *search_entry, PanelAddtoDialog *dialog); ++void panel_addto_activate_from_searchbar (GtkWidget *search_entry, PanelAddtoDialog *dialog); ++GtkWidget* panel_addto_canvas_new (PanelAddtoInformation *info); ++ ++G_END_DECLS ++ ++#endif /* PANEL_ADDTO_CANVAS_H */ +diff -Nur gnome-panel-2.14.1/panel-addto-event-box.c gnome-panel-2.14.1.new/panel-addto-event-box.c +--- gnome-panel-2.14.1/panel-addto-event-box.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-event-box.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,99 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation ++ * All rights reserved. ++ * ++ * This file is part of the Gnome Library. ++ * ++ * The Gnome Library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * The Gnome Library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with the Gnome Library; see the file COPYING.LIB. If not, ++ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/* ++ @NOTATION@ ++ */ ++/* Event box item type for GnomeCanvas widget ++ * ++ * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is ++ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties. ++ * ++ * ++ * Author: Chris Lahey ++ */ ++ ++#include ++ ++#include "panel-addto-event-box.h" ++ ++#define noVERBOSE ++ ++static GnomeCanvasItemClass *parent_class; ++ ++static double ++panel_addto_event_box_point (GnomeCanvasItem *item, double x, double y, int cx, int cy, ++ GnomeCanvasItem **actual_item) ++{ ++ double x1, x2, y1, y2; ++ g_object_get (item, ++ "x1", &x1, ++ "x2", &x2, ++ "y1", &y1, ++ "y2", &y2, ++ NULL); ++ if (x <= x2 && x >= x1 && ++ y <= y2 && y >= y1) { ++ *actual_item = item; ++ ++ return 0.0; ++ } ++ return 1e12; ++} ++ ++static void ++panel_addto_event_box_class_init (PanelAddtoEventBoxClass *class) ++{ ++ GnomeCanvasItemClass *item_class; ++ ++ item_class = (GnomeCanvasItemClass *) class; ++ ++ parent_class = g_type_class_peek_parent (class); ++ ++ item_class->point = panel_addto_event_box_point; ++} ++ ++GType ++panel_addto_event_box_get_type (void) ++{ ++ static GType type; ++ ++ if (!type) { ++ static const GTypeInfo object_info = { ++ sizeof (PanelAddtoEventBoxClass), ++ (GBaseInitFunc) NULL, ++ (GBaseFinalizeFunc) NULL, ++ (GClassInitFunc) panel_addto_event_box_class_init, ++ (GClassFinalizeFunc) NULL, ++ NULL, /* class_data */ ++ sizeof (PanelAddtoEventBox), ++ 0, /* n_preallocs */ ++ (GInstanceInitFunc) NULL, ++ NULL /* value_table */ ++ }; ++ ++ type = g_type_register_static (GNOME_TYPE_CANVAS_RECT, "PanelAddtoEventBox", ++ &object_info, 0); ++ } ++ ++ return type; ++} +diff -Nur gnome-panel-2.14.1/panel-addto-event-box.h gnome-panel-2.14.1.new/panel-addto-event-box.h +--- gnome-panel-2.14.1/panel-addto-event-box.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-event-box.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,75 @@ ++/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation ++ * All rights reserved. ++ * ++ * This file is part of the Gnome Library. ++ * ++ * The Gnome Library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU Library General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * The Gnome Library 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 ++ * Library General Public License for more details. ++ * ++ * You should have received a copy of the GNU Library General Public ++ * License along with the Gnome Library; see the file COPYING.LIB. If not, ++ * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ++ * Boston, MA 02111-1307, USA. ++ */ ++/* ++ @NOTATION@ ++ */ ++/* Event Box item type for GnomeCanvas widget ++ * ++ * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is ++ * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties. ++ * ++ * ++ * Author: Chris Lahey ++ */ ++ ++#ifndef PANEL_ADDTO_EVENT_BOX_H ++#define PANEL_ADDTO_EVENT_BOX_H ++ ++ ++#include ++ ++#include ++ ++G_BEGIN_DECLS ++ ++/* Event Box item. No configurable or queryable arguments are available (use those in ++ * GnomeCanvasRE). ++ */ ++ ++ ++#define PANEL_ADDTO_TYPE_EVENT_BOX (panel_addto_event_box_get_type ()) ++#define PANEL_ADDTO_EVENT_BOX(obj) (GTK_CHECK_CAST ((obj), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBox)) ++#define PANEL_ADDTO_EVENT_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBoxClass)) ++#define PANEL_ADDTO_IS_EVENT_BOX(obj) (GTK_CHECK_TYPE ((obj), PANEL_ADDTO_TYPE_EVENT_BOX)) ++#define PANEL_ADDTO_IS_EVENT_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), PANEL_ADDTO_TYPE_EVENT_BOX)) ++#define PANEL_ADDTO_EVENT_BOX_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), PANEL_ADDTO_TYPE_EVENT_BOX, PanelAddtoEventBoxClass)) ++ ++ ++typedef struct _PanelAddtoEventBox PanelAddtoEventBox; ++typedef struct _PanelAddtoEventBoxClass PanelAddtoEventBoxClass; ++ ++struct _PanelAddtoEventBox { ++ GnomeCanvasRect item; ++}; ++ ++struct _PanelAddtoEventBoxClass { ++ GnomeCanvasRectClass parent_class; ++}; ++ ++ ++/* Standard Gtk function */ ++GType panel_addto_event_box_get_type (void) G_GNUC_CONST; ++ ++G_END_DECLS ++ ++#endif +diff -Nur gnome-panel-2.14.1/panel-addto-rounded-rect.c gnome-panel-2.14.1.new/panel-addto-rounded-rect.c +--- gnome-panel-2.14.1/panel-addto-rounded-rect.c 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-rounded-rect.c 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,103 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * panel-addto-rounded-rect.c: A rectangle with rounded corners ++ * ++ * Copyright (C) 2004 Novell Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of version 2 of the GNU General Public ++ * License as published by the Free Software Foundation. ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ * USA ++ */ ++ ++#include ++#include "panel-addto-rounded-rect.h" ++#include "panel-addto-rounded-rect-pixbuf.h" ++#include ++#include ++ ++struct _PanelAddtoRoundedRect { ++ GnomeCanvasRect base; ++}; ++typedef GnomeCanvasRectClass PanelAddtoRoundedRectClass; ++ ++#define GNOMECC_ROUNDED_RECT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), GNOMECC_TYPE_ROUNDED_RECT, PanelAddtoRoundedRectClass)) ++#define GNOMECC_IS_ROUNDED_RECT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GNOMECC_TYPE_ROUNDED_RECT)) ++ ++G_DEFINE_TYPE (PanelAddtoRoundedRect, panel_addto_rounded_rect, GNOME_TYPE_CANVAS_RECT); ++ ++/************************************************************************* ++ * Adapted from nautilus/libnautilus-private/nautilus-icon-canvas-item.c ++ */ ++/* clear the corners of the selection pixbuf by copying the corners of the passed-in pixbuf */ ++static void ++panel_addto_rounded_rect_draw (GnomeCanvasItem *item, GdkDrawable *drawable, ++ int x, int y, int width, int height) ++{ ++ static GdkPixbuf *corner_pixbuf = NULL; ++ GnomeCanvasRE const *re = GNOME_CANVAS_RE (item); ++ int dest_width, dest_height, src_width, src_height; ++ int dx, dy; ++ int corner_size = 5; ++ double affine[6]; ++ ++ GNOME_CANVAS_ITEM_CLASS (panel_addto_rounded_rect_parent_class)->draw (item, drawable, x, y, width, height); ++ ++ if (corner_pixbuf == NULL) ++ corner_pixbuf = gdk_pixbuf_new_from_inline (-1, ++ panel_addto_rounded_rect_frame, FALSE, NULL); ++ src_width = gdk_pixbuf_get_width (corner_pixbuf); ++ src_height = gdk_pixbuf_get_height (corner_pixbuf); ++ ++ gnome_canvas_item_i2c_affine (item, affine); ++ ++ dest_width = fabs (re->x2 - re->x1); ++ dest_height = fabs (re->y2 - re->y1); ++ dx = affine[4] - x; ++ dy = affine[5] - y; ++ ++ /* draw top left corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ 0, 0, ++ dx, dy, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw top right corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ src_width - corner_size, 0, ++ dx + dest_width - corner_size, dy, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw bottom left corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ 0, src_height - corner_size, ++ dx, dy + dest_height - corner_size, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++ /* draw bottom right corner */ ++ gdk_draw_pixbuf (drawable, NULL, corner_pixbuf, ++ src_width - corner_size, src_height - corner_size, ++ dx + dest_width - corner_size, dy + dest_height - corner_size, ++ corner_size, corner_size, ++ GDK_RGB_DITHER_NORMAL, 0, 0); ++} ++ ++static void ++panel_addto_rounded_rect_class_init (PanelAddtoRoundedRectClass *klass) ++{ ++ GnomeCanvasItemClass *item_klass = (GnomeCanvasItemClass *) klass; ++ item_klass->draw = panel_addto_rounded_rect_draw; ++} ++static void ++panel_addto_rounded_rect_init (PanelAddtoRoundedRect *rr) ++{ ++} +diff -Nur gnome-panel-2.14.1/panel-addto-rounded-rect.h gnome-panel-2.14.1.new/panel-addto-rounded-rect.h +--- gnome-panel-2.14.1/panel-addto-rounded-rect.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-rounded-rect.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,39 @@ ++/* vim: set sw=8: -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ ++/* ++ * gnomecc-rounded-rect.c: A rectangle with rounded corners ++ * ++ * Copyright (C) 2004 Novell Inc ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of version 2 of the GNU General Public ++ * License as published by the Free Software Foundation. ++ * ++ * 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, write to the Free Software ++ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 ++ * USA ++ */ ++#ifndef PANEL_ADDTO_ROUNDED_RECT_H ++#define PANEL_ADDTO_ROUNDED_RECT_H ++ ++#include ++#include ++#include ++ ++G_BEGIN_DECLS ++ ++#define PANEL_ADDTO_TYPE_ROUNDED_RECT (panel_addto_rounded_rect_get_type ()) ++#define PANEL_ADDTO_ROUNDED_RECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), PANEL_ADDTO_TYPE_ROUNDED_RECT, PanelAddtoRoundedRect)) ++#define PANEL_ADDTO_IS_ROUNDED_RECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), PANEL_ADDTO_TYPE_ROUNDED_RECT)) ++ ++typedef struct _PanelAddtoRoundedRect PanelAddtoRoundedRect; ++GType panel_addto_rounded_rect_get_type (void); ++ ++G_END_DECLS ++ ++#endif /* PANEL_ADDTO_ROUNDED_RECT_H */ +diff -Nur gnome-panel-2.14.1/panel-addto-rounded-rect-pixbuf.h gnome-panel-2.14.1.new/panel-addto-rounded-rect-pixbuf.h +--- gnome-panel-2.14.1/panel-addto-rounded-rect-pixbuf.h 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.1.new/panel-addto-rounded-rect-pixbuf.h 2006-04-16 22:07:22.000000000 +0200 +@@ -0,0 +1,319 @@ ++/* GdkPixbuf RGBA C-Source image dump */ ++ ++#ifdef __SUNPRO_C ++#pragma align 4 (panel_addto_rounded_rect_frame) ++#endif ++#ifdef __GNUC__ ++static const guint8 panel_addto_rounded_rect_frame[] __attribute__ ((__aligned__ (4))) = ++#else ++static const guint8 panel_addto_rounded_rect_frame[] = ++#endif ++{ "" ++ /* Pixbuf magic (0x47646b50) */ ++ "GdkP" ++ /* length: header (24) + pixel_data (5848) */ ++ "\0\0\26\360" ++ /* pixdata_type (0x1010002) */ ++ "\1\1\0\2" ++ /* rowstride (344) */ ++ "\0\0\1X" ++ /* width (86) */ ++ "\0\0\0V" ++ /* height (17) */ ++ "\0\0\0\21" ++ /* pixel_data: */ ++ "\377\377\377\377\377\377\377\377\377\377\377\303\377\377\377q\377\377" ++ "\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377/\377\377\377q\377\377\377\303\377\377" ++ "\377\377\377\377\377\377\377\377\377\377\377\377\377\242\377\377\377" ++ "(\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" ++ "\0\377\377\377(\377\377\377\242\377\377\377\377\377\377\377\303\377\377" ++ "\377(\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377(\377\377\377\303\377\377" ++ "\377q\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377q\377\377\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377/\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377/\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377/\377\377" ++ "\377q\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377q\377\377\377\303\377\377\377(\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377(\377\377\377\303\377\377\377\377\377\377\377\242\377\377\377(\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" ++ "\377\377(\377\377\377\242\377\377\377\377\377\377\377\377\377\377\377" ++ "\377\377\377\377\303\377\377\377q\377\377\377/\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377" ++ "\377/\377\377\377q\377\377\377\303\377\377\377\377\377\377\377\377"}; ++ ++ --- gnome-panel-2.14.1.orig/debian/patches/99_about-ubuntu-translation.patch +++ gnome-panel-2.14.1/debian/patches/99_about-ubuntu-translation.patch @@ -0,0 +1,2689 @@ +diff -Nur gnome-panel-2.14.0/intltool-extract.in gnome-panel-2.14.0.new/intltool-extract.in +--- gnome-panel-2.14.0/intltool-extract.in 2006-03-13 20:48:07.000000000 +0100 ++++ gnome-panel-2.14.0.new/intltool-extract.in 2006-02-08 00:32:13.000000000 +0100 +@@ -32,7 +32,7 @@ + ## Release information + my $PROGRAM = "intltool-extract"; + my $PACKAGE = "intltool"; +-my $VERSION = "0.34.1"; ++my $VERSION = "0.34.2"; + + ## Loaded modules + use strict; +diff -Nur gnome-panel-2.14.0/intltool-merge.in gnome-panel-2.14.0.new/intltool-merge.in +--- gnome-panel-2.14.0/intltool-merge.in 2006-03-13 20:48:07.000000000 +0100 ++++ gnome-panel-2.14.0.new/intltool-merge.in 2006-02-08 00:32:13.000000000 +0100 +@@ -35,7 +35,7 @@ + ## Release information + my $PROGRAM = "intltool-merge"; + my $PACKAGE = "intltool"; +-my $VERSION = "0.34.1"; ++my $VERSION = "0.34.2"; + + ## Loaded modules + use strict; +diff -Nur gnome-panel-2.14.0/intltool-update.in gnome-panel-2.14.0.new/intltool-update.in +--- gnome-panel-2.14.0/intltool-update.in 2006-03-13 20:48:07.000000000 +0100 ++++ gnome-panel-2.14.0.new/intltool-update.in 2006-02-08 00:32:13.000000000 +0100 +@@ -30,7 +30,7 @@ + + ## Release information + my $PROGRAM = "intltool-update"; +-my $VERSION = "0.34.1"; ++my $VERSION = "0.34.2"; + my $PACKAGE = "intltool"; + + ## Loaded modules +diff -Nur gnome-panel-2.14.0/po/gnome-panel-2.0.pot gnome-panel-2.14.0.new/po/gnome-panel-2.0.pot +--- gnome-panel-2.14.0/po/gnome-panel-2.0.pot 1970-01-01 01:00:00.000000000 +0100 ++++ gnome-panel-2.14.0.new/po/gnome-panel-2.0.pot 2006-03-14 12:44:58.000000000 +0100 +@@ -0,0 +1,2641 @@ ++# SOME DESCRIPTIVE TITLE. ++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER ++# This file is distributed under the same license as the PACKAGE package. ++# FIRST AUTHOR , YEAR. ++# ++#, fuzzy ++msgid "" ++msgstr "" ++"Project-Id-Version: PACKAGE VERSION\n" ++"Report-Msgid-Bugs-To: \n" ++"POT-Creation-Date: 2006-03-14 12:44+0100\n" ++"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" ++"Last-Translator: FULL NAME \n" ++"Language-Team: LANGUAGE \n" ++"MIME-Version: 1.0\n" ++"Content-Type: text/plain; charset=UTF-8\n" ++"Content-Transfer-Encoding: 8bit\n" ++"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:1 ++msgid "Ad_just Date & Time" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:2 ++msgid "Copy _Date" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:3 ++msgid "Copy _Time" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:4 ++#: ../applets/fish/GNOME_FishApplet.xml.h:1 ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.xml.h:1 ++#: ../applets/wncklet/GNOME_ShowDesktopApplet.xml.h:1 ++#: ../applets/wncklet/GNOME_WindowListApplet.xml.h:1 ++#: ../applets/wncklet/GNOME_WindowMenuApplet.xml.h:1 ++#: ../applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml.h:1 ++msgid "_About" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:5 ++#: ../applets/fish/GNOME_FishApplet.xml.h:2 ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.xml.h:2 ++#: ../applets/wncklet/GNOME_ShowDesktopApplet.xml.h:2 ++#: ../applets/wncklet/GNOME_WindowListApplet.xml.h:2 ++#: ../applets/wncklet/GNOME_WindowMenuApplet.xml.h:2 ++#: ../applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml.h:2 ++#: ../gnome-panel/drawer.c:600 ../gnome-panel/panel-action-button.c:775 ++#: ../gnome-panel/panel-context-menu.c:326 ../gnome-panel/panel-menu-bar.c:412 ++#: ../gnome-panel/panel-menu-button.c:685 ++msgid "_Help" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet.xml.h:6 ++#: ../applets/fish/GNOME_FishApplet.xml.h:3 ++#: ../applets/wncklet/GNOME_WindowListApplet.xml.h:3 ++#: ../applets/wncklet/GNOME_WorkspaceSwitcherApplet.xml.h:3 ++msgid "_Preferences" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet_Factory.server.in.in.h:1 ++#: ../applets/fish/GNOME_FishApplet_Factory.server.in.in.h:1 ++msgid "Accessories" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet_Factory.server.in.in.h:2 ++#: ../applets/clock/clock.c:2738 ++msgid "Clock" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet_Factory.server.in.in.h:3 ++msgid "Clock Applet Factory" ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet_Factory.server.in.in.h:4 ++msgid "Factory for creating clock applets." ++msgstr "" ++ ++#: ../applets/clock/GNOME_ClockApplet_Factory.server.in.in.h:5 ++msgid "Get the current time and date" ++msgstr "" ++ ++#: ../applets/clock/clock.c:312 ++msgid "%l:%M:%S %p" ++msgstr "" ++ ++#: ../applets/clock/clock.c:312 ../applets/clock/clock.c:633 ++msgid "%l:%M %p" ++msgstr "" ++ ++#: ../applets/clock/clock.c:314 ../applets/clock/clock.c:1779 ++msgid "%H:%M:%S" ++msgstr "" ++ ++#: ../applets/clock/clock.c:314 ../applets/clock/clock.c:635 ++#: ../applets/clock/clock.c:1781 ++msgid "%H:%M" ++msgstr "" ++ ++#. translators: replace %e with %d if, when the day of the ++#. * month as a decimal number is a single digit, it ++#. * should begin with a 0 in your locale (e.g. "May ++#. * 01" instead of "May 1"). ++#. ++#: ../applets/clock/clock.c:325 ++msgid "%a %b %e" ++msgstr "" ++ ++#. translators: reverse the order of these arguments ++#. * if the time should come before the ++#. * date on a clock in your locale. ++#. ++#: ../applets/clock/clock.c:332 ++#, c-format ++msgid "" ++"%1$s\n" ++"%2$s" ++msgstr "" ++ ++#. translators: reverse the order of these arguments ++#. * if the time should come before the ++#. * date on a clock in your locale. ++#. ++#: ../applets/clock/clock.c:339 ++#, c-format ++msgid "%1$s, %2$s" ++msgstr "" ++ ++#. Show date in tooltip ++#: ../applets/clock/clock.c:420 ++msgid "%A %B %d" ++msgstr "" ++ ++#: ../applets/clock/clock.c:432 ++msgid "Click to view your appointments and tasks" ++msgstr "" ++ ++#: ../applets/clock/clock.c:434 ++msgid "Click to view month calendar" ++msgstr "" ++ ++#. Translators: If the event did not start on the current day ++#. we will display the start date in the most abbreviated way possible. ++#: ../applets/clock/clock.c:640 ++msgid "%b %d" ++msgstr "" ++ ++#: ../applets/clock/clock.c:987 ++msgid "Tasks" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1137 ++msgid "All Day" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1176 ++msgid "Appointments" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1408 ++msgid "Calendar" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1697 ++msgid "Computer Clock" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1774 ++msgid "%I:%M:%S %p" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1776 ++msgid "%I:%M %p" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1818 ++msgid "%A, %B %d %Y" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1875 ++#, c-format ++msgid "Failed to launch time configuration tool: %s" ++msgstr "" ++ ++#: ../applets/clock/clock.c:1911 ++msgid "" ++"Failed to locate a program for configuring the date and time. Perhaps none " ++"is installed?" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2389 ++msgid "Custom format" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2513 ../applets/clock/clock.c:2697 ++#: ../applets/fish/fish.c:158 ../applets/notification_area/main.c:83 ++#: ../applets/wncklet/window-list.c:114 ../applets/wncklet/wncklet.c:124 ++#: ../applets/wncklet/workspace-switcher.c:239 ++#, c-format ++msgid "There was an error displaying help: %s" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2548 ++msgid "Clock Preferences" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2572 ++msgid "Clock _type:" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2583 ++msgid "12 hour" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2584 ++msgid "24 hour" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2585 ++msgid "UNIX time" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2586 ++msgid "Internet time" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2594 ++msgid "Custom _format:" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2613 ++msgid "Show _seconds" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2622 ++msgid "Show _date" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2631 ++msgid "Use _UTC" ++msgstr "" ++ ++#: ../applets/clock/clock.c:2741 ++msgid "The Clock displays the current time and date" ++msgstr "" ++ ++#. Translator credits ++#: ../applets/clock/clock.c:2744 ../applets/fish/fish.c:583 ++#: ../applets/notification_area/main.c:134 ++#: ../applets/wncklet/showdesktop.c:503 ../applets/wncklet/window-list.c:784 ++#: ../applets/wncklet/window-menu.c:75 ++#: ../applets/wncklet/workspace-switcher.c:562 ++#: ../gnome-panel/panel-context-menu.c:131 ++msgid "translator-credits" ++msgstr "" ++ ++#. Translators: ++#. This controls whether the GNOME panel clock should display time in 24 hour mode ++#. or 12 hour mode by default. The only valid values for this are "24-hour" and ++#. "12-hour". If your locale uses 24 hour time notation, translate this to "24-hour". ++#. If your locale uses 12 hour time notation with am/pm, translate this to "12-hour". ++#. ++#. Do NOT translate this into anything else than "24-hour" or "12-hour". For example, ++#. if you translate this to "24 sata" or anything else that isn't "24-hour" or ++#. "12-hour", things will not work. ++#. ++#: ../applets/clock/clock.schemas.in.h:11 ++msgid "24-hour" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:12 ++msgid "Custom format of the clock" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:13 ++msgid "Hour format" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:14 ++msgid "If true, display date in the clock, in addition to time." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:15 ++msgid "If true, display seconds in time." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:16 ++msgid "If true, display time in Universal Coordinated Time zone." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:17 ++msgid "If true, show date in a tooltip when the pointer is over the clock." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:18 ++msgid "If true, show week numbers in the calendar." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:19 ++msgid "Show date in clock" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:20 ++msgid "Show date in tooltip" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:21 ++msgid "Show time with seconds" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:22 ++msgid "Show week numbers in calendar" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:23 ++msgid "" ++"The use of this key was deprecated in GNOME 2.6 in favour of the 'format' " ++"key. The schema is retained for compatibility with older versions." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:24 ++msgid "" ++"This key specifies the format used by the clock applet when the format key " ++"is set to \"custom\". You can use conversion specifiers understood by " ++"strftime() to obtain a specific format." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:25 ++msgid "" ++"This key specifies the hour format used by the clock applet. Possible values " ++"are \"12-hour\", \"24-hour\", \"internet\", \"unix\" and \"custom\". If set " ++"to \"internet\", the clock will display Internet time. The Internet time " ++"system divides the day into 1000 \".beats\". There are no time zones in this " ++"system, so time is the same all over the world. If set to \"unix\", the " ++"clock will display time in seconds since Epoch, i.e. 1970-01-01. If set to " ++"\"custom\", the clock will display time according to the format specified in " ++"the custom_format key." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:26 ++msgid "This key specifies the program to run in order to configure the time." ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:27 ++msgid "Time configuration tool" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:28 ++msgid "Use Internet time" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:29 ++msgid "Use UNIX time" ++msgstr "" ++ ++#: ../applets/clock/clock.schemas.in.h:30 ++msgid "Use UTC" ++msgstr "" ++ ++#: ../applets/fish/GNOME_FishApplet_Factory.server.in.in.h:2 ++msgid "Display a swimming fish or another animated creature" ++msgstr "" ++ ++#: ../applets/fish/GNOME_FishApplet_Factory.server.in.in.h:3 ++#: ../applets/fish/fish.c:577 ++msgid "Fish" ++msgstr "" ++ ++#: ../applets/fish/GNOME_FishApplet_Factory.server.in.in.h:4 ++msgid "From Whence That Stupid Fish Came" ++msgstr "" ++ ++#: ../applets/fish/GNOME_FishApplet_Factory.server.in.in.h:5 ++msgid "Wanda Factory" ++msgstr "" ++ ++#: ../applets/fish/fish.c:246 ++#, c-format ++msgid "" ++"Warning: The command appears to be something actually useful.\n" ++"Since this is a useless applet, you may not want to do this.\n" ++"We strongly advise you against using %s for anything\n" ++"which would make the applet \"practical\" or useful." ++msgstr "" ++ ++#: ../applets/fish/fish.c:431 ../gnome-panel/panel-properties-dialog.c:440 ++msgid "Images" ++msgstr "" ++ ++#: ../applets/fish/fish.c:545 ../applets/fish/fish.c:605 ++#: ../applets/fish/fish.c:720 ++#, no-c-format ++msgid "%s the Fish" ++msgstr "" ++ ++#: ../applets/fish/fish.c:546 ++#, c-format ++msgid "" ++"%s has no use what-so-ever. It only takes up disk space and compilation " ++"time, and if loaded it also takes up precious panel space and memory. " ++"Anybody found using it should be promptly sent for a psychiatric evaluation." ++msgstr "" ++ ++#: ../applets/fish/fish.c:570 ++msgid "(with minor help from George)" ++msgstr "" ++ ++#: ../applets/fish/fish.c:606 ++#, c-format ++msgid "%s the Fish, a contemporary oracle" ++msgstr "" ++ ++#: ../applets/fish/fish.c:676 ++msgid "Unable to locate the command to execute" ++msgstr "" ++ ++#: ../applets/fish/fish.c:725 ++#, no-c-format ++msgid "%s the Fish Says:" ++msgstr "" ++ ++#: ../applets/fish/fish.c:794 ++#, c-format ++msgid "" ++"Unable to read output from command\n" ++"\n" ++"Details: %s" ++msgstr "" ++ ++#: ../applets/fish/fish.c:859 ++msgid "_Speak again" ++msgstr "" ++ ++#: ../applets/fish/fish.c:940 ++#, c-format ++msgid "The configured command is not working and has been replaced by: %s" ++msgstr "" ++ ++#: ../applets/fish/fish.c:963 ++#, c-format ++msgid "" ++"Unable to execute '%s'\n" ++"\n" ++"Details: %s" ++msgstr "" ++ ++#: ../applets/fish/fish.c:979 ++#, c-format ++msgid "" ++"Unable to read from '%s'\n" ++"\n" ++"Details: %s" ++msgstr "" ++ ++#: ../applets/fish/fish.c:1597 ++msgid "" ++"The water needs changing!\n" ++"(Look at today's date)" ++msgstr "" ++ ++#: ../applets/fish/fish.c:1691 ++#, c-format ++msgid "%s the Fish, the fortune teller" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:1 ../applets/wncklet/window-list.glade.h:1 ++#: ../applets/wncklet/workspace-switcher.glade.h:1 ++#: ../gnome-panel/panel-properties-dialog.glade.h:1 ++msgid " " ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:2 ++msgid "Animation" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:3 ++msgid "General" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:4 ++msgid "Co_mmand to run when clicked:" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:5 ++msgid "Fish Preferences" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:6 ++msgid "Select an animation" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:7 ++msgid "_File:" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:8 ++msgid "_Name of fish:" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:9 ++msgid "_Pause per frame:" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:10 ++msgid "_Rotate on vertical panels" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:11 ++msgid "_Total frames in animation:" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:12 ++msgid "frames" ++msgstr "" ++ ++#: ../applets/fish/fish.glade.h:13 ++msgid "seconds" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:1 ++msgid "" ++"A fish without a name is a pretty dull fish. Bring your fish to life by " ++"naming him." ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:2 ++msgid "Command to execute on click" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:3 ++msgid "Frames in fish's animation" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:4 ++msgid "" ++"If true, the fish's animation will be displayed rotated on vertical panels." ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:5 ++msgid "Pause per frame" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:6 ++msgid "Rotate on vertical panels" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:7 ++msgid "The fish's animation pixmap" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:8 ++msgid "The fish's name" ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:9 ++msgid "" ++"This key specifies the command that will be tried to execute when the fish " ++"is clicked." ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:10 ++msgid "" ++"This key specifies the filename of the pixmap which will be used for the " ++"animation displayed in the fish applet relative to the pixmap directory." ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:11 ++msgid "" ++"This key specifies the number of frames that will be displayed in the fish's " ++"animation." ++msgstr "" ++ ++#: ../applets/fish/fish.schemas.in.h:12 ++msgid "This key specifies the number of seconds each frame will be displayed." ++msgstr "" ++ ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.server.in.in.h:1 ++msgid "Area where notification icons appear" ++msgstr "" ++ ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.server.in.in.h:2 ++#: ../applets/notification_area/main.c:129 ++msgid "Notification Area" ++msgstr "" ++ ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.server.in.in.h:3 ++msgid "Notification Area Factory" ++msgstr "" ++ ++#: ../applets/notification_area/GNOME_NotificationAreaApplet.server.in.in.h:4 ++#: ../gnome-panel/panel-action-button.c:321 ++#: ../gnome-panel/panel-action-button.c:333 ++#: ../gnome-panel/panel-action-button.c:356 ++#: ../gnome-panel/panel-action-button.c:367 ../gnome-panel/panel-addto.c:70 ++#: ../gnome-panel/panel-addto.c:83 ../gnome-panel/panel-addto.c:96 ++msgid "Utilities" ++msgstr "" ++ ++#: ../applets/notification_area/eggtraymanager.c:146 ++msgid "Orientation" ++msgstr "" ++ ++#: ../applets/notification_area/eggtraymanager.c:147 ++msgid "The orientation of the tray." ++msgstr "" ++ ++#: ../applets/notification_area/main.c:308 ++msgid "Panel Notification Area" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:1 ++msgid "Desktop & Windows" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:2 ++msgid "Factory for the window navigation related applets" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:3 ++msgid "Hide application windows and show the desktop" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:4 ++msgid "Show Desktop" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:5 ++msgid "Switch between open windows using a menu" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:6 ++msgid "Switch between open windows using buttons" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:7 ++msgid "Switch between workspaces" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:8 ++#: ../applets/wncklet/window-list.c:787 ++msgid "Window List" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:9 ++msgid "Window Navigation Applet Factory" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:10 ++#: ../applets/wncklet/window-menu.c:78 ../applets/wncklet/window-menu.c:241 ++msgid "Window Selector" ++msgstr "" ++ ++#: ../applets/wncklet/GNOME_Wncklet_Factory.server.in.in.h:11 ++#: ../applets/wncklet/workspace-switcher.c:565 ++msgid "Workspace Switcher" ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:161 ++#, c-format ++msgid "Failed to load %s: %s\n" ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:162 ++msgid "Icon not found" ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:220 ++msgid "Click here to restore hidden windows." ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:223 ++msgid "Click here to hide all windows and show the desktop." ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:420 ../applets/wncklet/showdesktop.c:506 ++msgid "Show Desktop Button" ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:508 ++msgid "This button lets you hide all windows and show the desktop." ++msgstr "" ++ ++#: ../applets/wncklet/showdesktop.c:538 ++msgid "" ++"Your window manager does not support the show desktop button, or you are not " ++"running a window manager." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.c:789 ++msgid "" ++"The Window List shows a list of all windows in a set of buttons and lets you " ++"browse them." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:2 ++msgid "Restoring Minimized Windows" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:3 ++msgid "Window Grouping" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:4 ++msgid "Window List Content" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:5 ++msgid "Window List Size" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:6 ++msgid "Behavior" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:7 ++msgid "Group windows when _space is limited" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:8 ++msgid "M_inimum size:" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:9 ++msgid "Ma_ximum size:" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:10 ++msgid "Restore to current _workspace" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:11 ++msgid "Restore to na_tive workspace" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:12 ++msgid "Sh_ow windows from current workspace" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:13 ++msgid "Show windows from a_ll workspaces" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:14 ++msgid "Size" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:15 ++msgid "Window List Preferences" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:16 ++msgid "_Always group windows" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:17 ++msgid "_Never group windows" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.glade.h:18 ++#: ../gnome-panel/panel-properties-dialog.glade.h:28 ++msgid "pixels" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:1 ++msgid "" ++"Decides when to group windows from the same application on the window list. " ++"Possible values are \"never\", \"auto\" and \"always\"." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:2 ++msgid "" ++"If true, the window list will show windows from all workspaces. Otherwise it " ++"will only display windows from the current workspace." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:3 ++msgid "" ++"If true, then when unminimizing a window, move it to the current workspace. " ++"Otherwise, switch to the workspace of the window." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:4 ++msgid "Maximum window list size" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:5 ++msgid "Minimum window list size" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:6 ++msgid "Move windows to current workspace when unminimized" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:7 ++msgid "Show windows from all workspaces" ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:8 ++msgid "" ++"This key specifies the maximum width that the window list requests. The " ++"maximum width setting is useful to limit the size of the window list in " ++"large panels, where the window list could fill the entire space available." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:9 ++msgid "This key specifies the minimum width that the window list requests." ++msgstr "" ++ ++#: ../applets/wncklet/window-list.schemas.in.h:10 ++msgid "When to group windows" ++msgstr "" ++ ++#: ../applets/wncklet/window-menu.c:82 ++msgid "" ++"The Window Selector shows a list of all windows in a menu and lets you " ++"browse them." ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:131 ++#: ../applets/wncklet/workspace-switcher.c:866 ++#: ../applets/wncklet/workspace-switcher.glade.h:11 ++msgid "rows" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:131 ++#: ../applets/wncklet/workspace-switcher.c:866 ++msgid "columns" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:428 ++#, c-format ++msgid "Error loading num_rows value for Workspace Switcher: %s\n" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:439 ++#, c-format ++msgid "" ++"Error loading display_workspace_names value for Workspace Switcher: %s\n" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:454 ++#, c-format ++msgid "Error loading display_all_workspaces value for Workspace Switcher: %s\n" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.c:567 ++msgid "" ++"The Workspace Switcher shows you a small version of your workspaces that " ++"lets you manage your windows." ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:2 ++msgid "Switcher" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:3 ++msgid "Workspaces" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:4 ++msgid "Number of _workspaces:" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:5 ++msgid "Show _all workspaces in:" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:6 ++msgid "Show _only the current workspace" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:7 ++msgid "Show workspace _names in switcher" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:8 ++msgid "Workspace Names" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:9 ++msgid "Workspace Switcher Preferences" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.glade.h:10 ++msgid "Workspace na_mes:" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:1 ++msgid "Display all workspaces" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:2 ++msgid "Display workspace names" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:3 ++msgid "" ++"If true, the workspace switcher will show all workspaces. Otherwise it will " ++"only show the current workspace." ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:4 ++msgid "" ++"If true, the workspaces in the workspace switcher will display the names of " ++"the workspaces. Otherwise they will display the windows on the workspace." ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:5 ++msgid "Rows in workspace switcher" ++msgstr "" ++ ++#: ../applets/wncklet/workspace-switcher.schemas.in.h:6 ++msgid "" ++"This key specifies how many rows (for horizontal layout) or columns (for " ++"vertical layout) the workspace switcher shows the workspaces in. This key is " ++"only relevant if the display_all_workspaces key is true." ++msgstr "" ++ ++#: ../gnome-panel/GNOME_Panel.server.in.h:1 ++msgid "GNOME Panel Shell" ++msgstr "" ++ ++#: ../gnome-panel/GNOME_Panel_Popup.xml.h:1 ../gnome-panel/applet.c:540 ++msgid "Loc_k To Panel" ++msgstr "" ++ ++#: ../gnome-panel/GNOME_Panel_Popup.xml.h:2 ../gnome-panel/applet.c:523 ++msgid "_Move" ++msgstr "" ++ ++#: ../gnome-panel/GNOME_Panel_Popup.xml.h:3 ../gnome-panel/applet.c:516 ++msgid "_Remove From Panel" ++msgstr "" ++ ++#: ../gnome-panel/applet.c:433 ++msgid "???" ++msgstr "" ++ ++#: ../gnome-panel/applet.c:1226 ++msgid "Can't find an empty spot" ++msgstr "" ++ ++#: ../gnome-panel/button-widget.c:198 ++msgid "Could not load icon" ++msgstr "" ++ ++#: ../gnome-panel/drawer.c:349 ../gnome-panel/panel-addto.c:111 ++#: ../gnome-panel/panel-toplevel.c:1524 ++msgid "Drawer" ++msgstr "" ++ ++#: ../gnome-panel/drawer.c:588 ++msgid "_Add to Drawer..." ++msgstr "" ++ ++#: ../gnome-panel/drawer.c:594 ../gnome-panel/launcher.c:946 ++#: ../gnome-panel/panel-action-button.c:136 ++#: ../gnome-panel/panel-context-menu.c:248 ++msgid "_Properties" ++msgstr "" ++ ++#. Translators: %s is a URI ++#: ../gnome-panel/egg-recent-view-gtk.c:346 ++#: ../gnome-panel/panel-menu-items.c:396 ../gnome-panel/panel-recent.c:202 ++#, c-format ++msgid "Open '%s'" ++msgstr "" ++ ++#: ../gnome-panel/egg-recent-view-gtk.c:446 ++msgid "Empty" ++msgstr "" ++ ++#: ../gnome-panel/gnome-desktop-item-edit.c:27 ++msgid "Create new file in the given directory" ++msgstr "" ++ ++#. class ++#: ../gnome-panel/launcher.c:144 ../gnome-panel/menu-ditem.c:517 ++msgid "Could not save launcher to disk" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:175 ++msgid "Could not show this URL" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:176 ++msgid "No URL was specified." ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:188 ++#, c-format ++msgid "Could not show '%s'" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:225 ++msgid "Could not launch application" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:283 ++msgid "Could not use dropped item" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:479 ++msgid "No URI provided for panel launcher desktop file\n" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:510 ++#, c-format ++msgid "Unable to open desktop file %s for panel launcher%s%s\n" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:828 ../gnome-panel/menu-ditem.c:181 ++#: ../gnome-panel/menu-ditem.c:264 ++msgid "Launcher Properties" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:940 ++msgid "_Launch" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:979 ++#, c-format ++msgid "Key %s is not set, can't load launcher\n" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:1034 ../gnome-panel/launcher.c:1053 ++#: ../gnome-panel/menu-ditem.c:469 ../gnome-panel/menu-ditem.c:486 ++#: ../gnome-panel/menu-ditem.c:542 ++msgid "Could not create launcher" ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:1035 ../gnome-panel/menu-ditem.c:470 ++msgid "You have to specify a name." ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:1054 ../gnome-panel/menu-ditem.c:487 ++msgid "You have to specify a valid URL or command." ++msgstr "" ++ ++#: ../gnome-panel/launcher.c:1098 ../gnome-panel/menu-ditem.c:550 ++msgid "Create Launcher" ++msgstr "" ++ ++#: ../gnome-panel/menu-ditem.c:126 ++msgid "Could not save changes to launcher" ++msgstr "" ++ ++#: ../gnome-panel/menu-ditem.c:308 ++msgid "Menu" ++msgstr "" ++ ++#: ../gnome-panel/menu-ditem.c:543 ++msgid "You do not have permission to write to this location." ++msgstr "" ++ ++#: ../gnome-panel/menu.c:935 ++msgid "Add this launcher to _panel" ++msgstr "" ++ ++#: ../gnome-panel/menu.c:946 ++msgid "Add this launcher to _desktop" ++msgstr "" ++ ++#: ../gnome-panel/menu.c:962 ++msgid "_Entire menu" ++msgstr "" ++ ++#: ../gnome-panel/menu.c:972 ++msgid "Add this as _drawer to panel" ++msgstr "" ++ ++#: ../gnome-panel/menu.c:984 ++msgid "Add this as _menu to panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:124 ++msgid "_Activate Screensaver" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:130 ++msgid "_Lock Screen" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:208 ++#: ../gnome-panel/panel-action-button.c:221 ++#: ../gnome-panel/panel-menu-bar.c:488 ../gnome-panel/panel-menu-button.c:1023 ++#: ../gnome-panel/panel-util.c:747 ++#, c-format ++msgid "Could not execute '%s'" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:257 ++msgid "Could not connect to server" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:291 ++msgid "Lock Screen" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:292 ++#: ../gnome-panel/panel-action-button.c:309 ++#: ../gnome-panel/panel-action-button.c:344 ../gnome-panel/panel-addto.c:109 ++msgid "Desktop & Windows" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:294 ++msgid "Protect your computer from unauthorized use" ++msgstr "" ++ ++#. when changing one of those two strings, don't forget to ++#. * update the ones in panel-menu-items.c (look for ++#. * panel:showusername|1) ++#: ../gnome-panel/panel-action-button.c:308 ++msgid "Log Out..." ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:311 ++msgid "Log out of this session to log in as a different user" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:320 ++msgid "Run Application..." ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:323 ++msgid "Run an Application by entering a command" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:332 ++msgid "Search for Files..." ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:335 ++msgid "Find files, folders, and documents on your computer" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:343 ++msgid "Force Quit" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:346 ++msgid "Force a misbehaving application to quit" ++msgstr "" ++ ++#. FIXME icon ++#: ../gnome-panel/panel-action-button.c:355 ++msgid "Connect to Server..." ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:358 ++msgid "Connect to a remote server" ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:366 ++msgid "Shut Down..." ++msgstr "" ++ ++#: ../gnome-panel/panel-action-button.c:369 ++msgid "Shut down the computer" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:72 ++msgid "Main Menu" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:73 ++msgid "The main GNOME menu" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:85 ++msgid "Menu Bar" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:86 ++msgid "A custom menu bar" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:98 ++msgid "Separator" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:99 ++msgid "A separator to organize the panel items" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:112 ++msgid "A pop out drawer to store other items in" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:212 ++msgid "(empty)" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:347 ++#: ../libpanel-applet/panel-test-applets.c:248 ++#, c-format ++msgid "query returned exception %s\n" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:402 ++msgid "Miscellaneous" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:1269 ++#, c-format ++msgid "Select an _item to add to \"%s\":" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:1273 ++msgid "Add to Drawer" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:1275 ++msgid "Select an _item to add to the drawer:" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:1277 ++msgid "Add to Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-addto.c:1279 ++msgid "" ++"Select an _item to add to the panel \n" ++"(you can also directly drag and drop items onto the panel):" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:833 ++#, c-format ++msgid "Exception from popup_menu '%s'\n" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:952 ++#, c-format ++msgid "\"%s\" has quit unexpectedly" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:954 ++msgid "Panel object has quit unexpectedly" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:961 ++msgid "" ++"If you reload a panel object, it will automatically be added back to the " ++"panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:967 ++msgid "_Don't Reload" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:968 ++msgid "_Reload" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:1014 ++#, c-format ++msgid "The panel encountered a problem while loading \"%s\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:1031 ++msgid "Do you want to delete the applet from your configuration?" ++msgstr "" ++ ++#: ../gnome-panel/panel-applet-frame.c:1130 ++msgid "Unable to obtain AppletShell interface from control\n" ++msgstr "" ++ ++#: ../gnome-panel/panel-bindings.c:168 ++#, c-format ++msgid "Error watching gconf key '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-bindings.c:186 ++#, c-format ++msgid "Error loading gconf directory '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-bindings.c:200 ++#, c-format ++msgid "Error getting value for '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:101 ++msgid "And many, many others..." ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:124 ++msgid "The GNOME Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:127 ++msgid "" ++"This program is responsible for launching other applications and embedding " ++"small applets within itself." ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:167 ++msgid "Cannot delete this panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:168 ++msgid "You must always have at least one panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:216 ++msgid "_Delete This Panel..." ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:219 ++#: ../gnome-panel/panel-context-menu.c:261 ++msgid "_Delete This Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:233 ++msgid "_Add to Panel..." ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:278 ++msgid "_New Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-context-menu.c:337 ++msgid "A_bout Panels" ++msgstr "" ++ ++#: ../gnome-panel/panel-force-quit.c:75 ++msgid "" ++"Click on a window to force the application to quit. To cancel press ." ++msgstr "" ++ ++#: ../gnome-panel/panel-force-quit.c:203 ++msgid "" ++"Force this application to exit?\n" ++"(Any open documents will be lost.)" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:1 ++msgid "" ++"A boolean flag to indicate whether the user's previous configuration in /" ++"apps/panel/profiles/default has been copied to the new location in /apps/" ++"panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:2 ++msgid "" ++"A list of panel IDs. Each ID identifies an individual toplevel panel. The " ++"settings for each of these panels are stored in /apps/panel/toplevels/$(id)." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:3 ++msgid "" ++"A list of panel applet IDs. Each ID identifies an individual panel applet. " ++"The settings for each of these applets are stored in /apps/panel/applets/" ++"$(id)." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:4 ++msgid "" ++"A list of panel object IDs. Each ID identifies an individual panel object (e." ++"g. a launcher, action button or menu button/bar). The settings for each of " ++"these objects are stored in /apps/panel/objects/$(id)." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:5 ++msgid "Enable autocompletion in \"Run Application\" dialog" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:6 ++msgid "Enable program list in \"Run Application\" dialog" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:7 ++msgid "Expand program list in \"Run Application\" dialog" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:8 ++msgid "" ++"If true, autocompletion in the \"Run Application\" dialog is made available." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:9 ++msgid "" ++"If true, the \"Known Applications\" listing in the \"Run Application\" " ++"dialog is expanded when the dialog is opened. This key is only relevant if " ++"the enable_program_list key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:10 ++msgid "" ++"If true, the \"Known Applications\" listing in the \"Run Application\" " ++"dialog is made available. Whether or not the listing is expanded when the " ++"dialog is shown is controlled by the show_program_list key." ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:11 ++msgid "Old profiles configuration migrated" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:12 ++msgid "Panel ID list" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:13 ++msgid "Panel applet ID list" ++msgstr "" ++ ++#: ../gnome-panel/panel-general.schemas.in.h:14 ++msgid "Panel object ID list" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:1 ++msgid "" ++"A list of applet IIDs that the panel will ignore. This way you can disable " ++"certain applets from loading or showing up in the menu. For example to " ++"disable the mini-commander applet add 'OAFIID:GNOME_MiniCommanderApplet' to " ++"this list. The panel must be restarted for this to take effect." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:2 ++msgid "Applet IIDs to disable from loading" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:3 ++msgid "Autoclose drawer" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:4 ++msgid "Complete panel lockdown" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:5 ++msgid "Confirm panel removal" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:6 ++msgid "Deprecated" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:7 ++msgid "Disable Force Quit" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:8 ++msgid "Disable Lock Screen" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:9 ++msgid "Disable Logging Out" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:10 ++#: ../gnome-panel/panel-toplevel.schemas.in.h:9 ++msgid "Enable animations" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:11 ++msgid "Enable tooltips" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:12 ++msgid "Highlight launchers on mouseover" ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:13 ++msgid "" ++"If true, a dialog is shown asking for confirmation if the user wants to " ++"remove a panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:14 ++msgid "" ++"If true, a drawer will automatically be closed when the user clicks a " ++"launcher in it." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:15 ++msgid "" ++"If true, a launcher is highlighted when the user moves the pointer over it." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:16 ++msgid "" ++"If true, the panel will not allow a user to force an application to quit by " ++"removing access to the force quit button." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:17 ++msgid "" ++"If true, the panel will not allow a user to lock their screen, by removing " ++"access to the lock screen menu entries." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:18 ++msgid "" ++"If true, the panel will not allow a user to log out, by removing access to " ++"the log out menu entries." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:19 ++msgid "" ++"If true, the panel will not allow any changes to the configuration of the " ++"panel. Individual applets may need to be locked down separately however. The " ++"panel must be restarted for this to take effect." ++msgstr "" ++ ++#: ../gnome-panel/panel-global.schemas.in.h:20 ++msgid "If true, tooltips are shown for objects in panels." ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:223 ++#, c-format ++msgid "You will be automatically logged out in %d second." ++msgid_plural "You will be automatically logged out in %d seconds." ++msgstr[0] "" ++msgstr[1] "" ++ ++#: ../gnome-panel/panel-logout.c:230 ++#, c-format ++msgid "This system will be automatically shut down in %d second." ++msgid_plural "This system will be automatically shut down in %d seconds." ++msgstr[0] "" ++msgstr[1] "" ++ ++#: ../gnome-panel/panel-logout.c:302 ++msgid "Log out of this system now?" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:308 ++msgid "_Switch User" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:314 ++msgid "_Log Out" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:319 ++msgid "Shut down this system now?" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:329 ++msgid "_Suspend" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:334 ++msgid "_Restart" ++msgstr "" ++ ++#: ../gnome-panel/panel-logout.c:340 ++msgid "_Shut Down" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-bar.c:74 ++msgid "Browse and run installed applications" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-bar.c:86 ++msgid "Access documents, folders and network places" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-bar.c:98 ++msgid "Change desktop appearance and behavior, get help, or log out" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-bar.c:184 ++msgid "Applications" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-bar.c:419 ../gnome-panel/panel-menu-button.c:688 ++msgid "_Edit Menus" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:114 ../gnome-panel/panel-run-dialog.c:325 ++#, c-format ++msgid "Could not open location '%s'" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:375 ++msgid "Bookmarks" ++msgstr "" ++ ++#. Translators: the first string is a ++#. * path and the second string is a ++#. * hostname. nautilus contains the same ++#. * string to translate. ++#: ../gnome-panel/panel-menu-items.c:431 ++#, c-format ++msgid "%1$s on %2$s" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:527 ++msgid "Network Places" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:530 ++msgid "Removable Media" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:596 ++msgid "Documents" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:597 ++msgid "Documents directory" ++msgstr "" ++ ++#. Translators: Desktop is used here as in ++#. * "Desktop Folder" (this is not the Desktop ++#. * environment). Do not keep "Desktop Folder|" ++#. * in the translation ++#: ../gnome-panel/panel-menu-items.c:612 ++msgid "Desktop Folder|Desktop" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:613 ++msgid "Open the desktop as a folder" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:734 ++msgid "Help" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:742 ++msgid "System Documentation" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:745 ../gnome-panel/panel-menu-items.c:746 ++msgid "Online Support" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:1060 ++msgid "Places" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:1095 ++msgid "System" ++msgstr "" ++ ++#. Translators: translate "panel:showusername|1" to anything ++#. * but "1" if "Log Out %s" doesn't make any sense in your ++#. * language (where %s is a username). ++#. ++#: ../gnome-panel/panel-menu-items.c:1187 ++msgid "panel:showusername|1" ++msgstr "" ++ ++#. keep those strings in sync with the ones in ++#. * panel-action-button.c ++#. Translators: this string is used ONLY if you translated ++#. * "panel:showusername|1" to "1" ++#: ../gnome-panel/panel-menu-items.c:1199 ++#, c-format ++msgid "Log Out %s..." ++msgstr "" ++ ++#. Translators: this string is used ONLY if you translated ++#. * "panel:showusername|1" to "1" ++#: ../gnome-panel/panel-menu-items.c:1203 ++#, c-format ++msgid "Log out %s of this session to log in as a different user" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:1251 ++msgid "Could not launch menu item" ++msgstr "" ++ ++#: ../gnome-panel/panel-menu-items.c:1263 ++msgid "Could not load menu item" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:1 ++msgid "Action button type" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:2 ++msgid "Applet Bonobo IID" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:3 ++msgid "Icon used for object's button" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:4 ++msgid "" ++"If true, the custom_icon key is used as a custom icon for the button. If " ++"false, the custom_icon key is ignored. This key is only relevant if the " ++"object_type key is \"menu-object\" or \"drawer-object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:5 ++msgid "" ++"If true, the menu_path key is used as the path from which the menu contents " ++"should be constructed. If false, the menu_path key is ignored. This key is " ++"only relevant if the object_type key is \"menu-object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:6 ++msgid "" ++"If true, the position of the object is interpreted relative to the right (or " ++"bottom if vertical) edge of the panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:7 ++msgid "" ++"If true, the user may not move the applet without first unlocking the object " ++"using the \"Unlock\" menuitem." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:8 ++msgid "Interpret position relative to bottom/right edge" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:9 ++msgid "Launcher location" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:10 ++msgid "Lock the object to the panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:11 ++msgid "Menu content path" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:12 ++msgid "Object's position on the panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:13 ++msgid "Panel attached to drawer" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:14 ++msgid "Panel object type" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:15 ++msgid "" ++"The Bonobo implementation ID of the applet - e.g. \"OAFIID:GNOME_ClockApplet" ++"\". This key is only relevant if the object_type key is \"bonobo-applet\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:16 ++msgid "" ++"The action type this button represents. Possible values are \"lock\", " ++"\"logout\", \"run\", \"search\" and \"screenshot\". This key is only " ++"relevant if the object_type key is \"action-applet\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:17 ++msgid "" ++"The identifier of the panel attached to this drawer. This key is only " ++"relevant if the object_type key is \"drawer-object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:18 ++msgid "The identifier of the toplevel panel which contains this object." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:19 ++msgid "" ++"The location of the .desktop file describing the launcher. This key is only " ++"relevant if the object_type key is \"launcher-object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:20 ++msgid "" ++"The location of the image file used as the icon for the object's button. " ++"This key is only relevant if the object_type key is \"drawer-object\" or " ++"\"menu-object\" and the use_custom_icon key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:21 ++msgid "" ++"The path from which the menu contents is contructed. This key is only " ++"relevant if the use_menu_path key is true and the object_type key is \"menu-" ++"object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:22 ++msgid "" ++"The position of this panel object. The position is specified by the number " ++"of pixels from the left (or top if vertical) panel edge." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:23 ++msgid "" ++"The text to display in a tooltip for this drawer or this menu. This key is " ++"only relevant if the object_type key is \"drawer-object\" or \"menu-object\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:24 ++msgid "" ++"The type of this panel object. Possible values are \"drawer-object\", \"menu-" ++"object\", \"launcher-object\", \"bonobo-applet\", \"action-applet\" and " ++"\"menu-bar\"." ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:25 ++msgid "Tooltip displayed for drawer or menu" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:26 ++msgid "Toplevel panel containing object" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:27 ++msgid "Use custom icon for object's button" ++msgstr "" ++ ++#: ../gnome-panel/panel-object.schemas.in.h:28 ++msgid "Use custom path for menu contents" ++msgstr "" ++ ++#: ../gnome-panel/panel-profile.c:762 ../gnome-panel/panel-profile.c:789 ++#: ../gnome-panel/panel-profile.c:825 ../gnome-panel/panel-profile.c:1648 ++#, c-format ++msgid "Error reading GConf string value '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-profile.c:804 ../gnome-panel/panel-profile.c:1544 ++#: ../gnome-panel/panel-profile.c:1617 ../gnome-panel/panel-profile.c:1680 ++#, c-format ++msgid "Error reading GConf integer value '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-profile.c:1554 ++#, c-format ++msgid "" ++"Panel '%s' is set to be displayed on screen %d which is not currently " ++"available. Not loading this panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-profile.c:1632 ++#, c-format ++msgid "Error reading GConf boolean value '%s': %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:120 ++#: ../libpanel-applet/panel-test-applets.c:53 ++msgid "Orientation|Top" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:121 ++#: ../libpanel-applet/panel-test-applets.c:54 ++msgid "Orientation|Bottom" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:122 ++#: ../libpanel-applet/panel-test-applets.c:55 ++msgid "Orientation|Left" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:123 ++#: ../libpanel-applet/panel-test-applets.c:56 ++msgid "Orientation|Right" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:1019 ++msgid "Could not display properties dialog" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.c:1020 ++#: ../gnome-panel/panel-run-dialog.c:1832 ++#, c-format ++msgid "Unable to load file '%s'." ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:2 ++msgid "*" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:3 ++msgid "Opaque" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:4 ++msgid "Transparent" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:5 ++msgid "Arro_ws on hide buttons" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:6 ++msgid "Background" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:7 ++msgid "Background _image:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:8 ++msgid "Co_lor:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:9 ++msgid "E_xpand" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:10 ++msgid "General" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:11 ++msgid "Image Background Details" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:12 ++msgid "Panel Properties" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:13 ++msgid "Pick a color" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:14 ++msgid "Rotate image when panel is _vertical" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:15 ++msgid "S_tyle:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:16 ++msgid "Select background" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:17 ++msgid "Show hide _buttons" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:18 ++msgid "Solid c_olor" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:19 ++msgid "Some of these properties are locked down" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:20 ++msgid "St_retch" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:21 ++msgid "_Autohide" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:22 ++msgid "_Icon:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:23 ++msgid "_None (use system theme)" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:24 ++#: ../libpanel-applet/panel-test-applets.glade.h:4 ++msgid "_Orientation:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:25 ++msgid "_Scale" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:26 ++#: ../libpanel-applet/panel-test-applets.glade.h:6 ++msgid "_Size:" ++msgstr "" ++ ++#: ../gnome-panel/panel-properties-dialog.glade.h:27 ++msgid "_Tile" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:54 ++msgid "Could not find a suitable application." ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:94 ../gnome-panel/panel-recent.c:102 ++#, c-format ++msgid "Could not open recently used document \"%s\"" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:103 ++#, c-format ++msgid "An unknown error occurred while trying to open \"%s\"" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:155 ++msgid "Clear the Recent Documents list?" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:157 ++msgid "" ++"If you clear the Recent Documents list, you clear the following:\n" ++"\n" ++"• All items from the Places → Recent Documents menu item.\n" ++"• All items from the recent documents list in all applications." ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:225 ++msgid "Recent Documents" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:269 ++msgid "Clear Recent Documents" ++msgstr "" ++ ++#: ../gnome-panel/panel-recent.c:273 ++msgid "Clear all items from the recent documents list" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:299 ++#, c-format ++msgid "Could not run command '%s'" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:377 ++#, c-format ++msgid "Could not convert '%s' from UTF-8" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:1171 ++msgid "Choose a file to append to the command..." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:1538 ++#: ../gnome-panel/panel-run-dialog.glade.h:10 ++msgid "Select an application to view its description." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:1576 ++#, c-format ++msgid "Will run command: '%s'" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:1607 ++#, c-format ++msgid "URI list dropped on run dialog had wrong format (%d) or length (%d)\n" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.c:1831 ++msgid "Could not display run dialog" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:1 ++msgid "" ++"Click this button to browse for a file whose name to append to the command " ++"string." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:2 ++msgid "" ++"Click this button to run the selected application or the command in the " ++"command entry field." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:3 ++msgid "Command entry" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:4 ++msgid "Command icon" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:5 ++msgid "Enter a command string here to run it." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:6 ++msgid "List of known applications" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:7 ++msgid "Run Application" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:8 ++msgid "Run in _terminal" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:9 ++msgid "Run with _file..." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:11 ++msgid "Select this box to run the command in a terminal window." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:12 ++msgid "Show list of known _applications" ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:13 ++msgid "The icon of the command to be run." ++msgstr "" ++ ++#: ../gnome-panel/panel-run-dialog.glade.h:14 ++#: ../gnome-panel/panel-stock-icons.c:89 ++msgid "_Run" ++msgstr "" ++ ++#: ../gnome-panel/panel-shell.c:74 ++msgid "" ++"I've detected a panel already running,\n" ++"and will now exit." ++msgstr "" ++ ++#: ../gnome-panel/panel-shell.c:78 ++#, c-format ++msgid "" ++"There was a problem registering the panel with the bonobo-activation " ++"server.\n" ++"The error code is: %d\n" ++"The panel will now exit." ++msgstr "" ++ ++#: ../gnome-panel/panel-stock-icons.c:90 ++msgid "_Force quit" ++msgstr "" ++ ++#: ../gnome-panel/panel-stock-icons.c:91 ++msgid "C_lear" ++msgstr "" ++ ++#: ../gnome-panel/panel-stock-icons.c:92 ++msgid "D_on't Delete" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1114 ++msgid "Hide Panel" ++msgstr "" ++ ++#. translators: these string will be shown in MetaCity's switch window ++#. * popup when you pass the focus to a panel ++#: ../gnome-panel/panel-toplevel.c:1495 ++msgid "Top Expanded Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1496 ++msgid "Top Centered Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1497 ++msgid "Top Floating Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1498 ++msgid "Top Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1502 ++msgid "Bottom Expanded Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1503 ++msgid "Bottom Centered Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1504 ++msgid "Bottom Floating Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1505 ++msgid "Bottom Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1509 ++msgid "Left Expanded Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1510 ++msgid "Left Centered Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1511 ++msgid "Left Floating Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1512 ++msgid "Left Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1516 ++msgid "Right Expanded Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1517 ++msgid "Right Centered Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1518 ++msgid "Right Floating Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.c:1519 ++msgid "Right Edge Panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:1 ++msgid "Animation speed" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:2 ++msgid "Automatically hide panel into corner" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:3 ++msgid "Background color" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:4 ++msgid "Background color opacity" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:5 ++msgid "Background image" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:6 ++msgid "Background type" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:7 ++msgid "Center panel on x-axis" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:8 ++msgid "Center panel on y-axis" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:10 ++msgid "Enable arrows on hide buttons" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:11 ++msgid "Enable hide buttons" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:12 ++msgid "Expand to occupy entire screen width" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:13 ++msgid "Fit image to panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:14 ++msgid "" ++"If true, arrows will be placed on the hide buttons. This key is only " ++"relevant if the enable_buttons key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:15 ++msgid "" ++"If true, buttons will be placed on each side of the panel which may be used " ++"to move the panel to edge of the screen, leaving only a button showing." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:16 ++msgid "" ++"If true, hiding and un-hiding of this panel will be animated rather than " ++"happening instantly." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:17 ++msgid "" ++"If true, the background image will be rotated when the panel is oriented " ++"vertically." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:18 ++msgid "" ++"If true, the image will be scaled (retaining the aspect ratio of the image) " ++"to the panel height (if horizontal)." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:19 ++msgid "" ++"If true, the image will be scaled to the panel dimensions. The aspect ratio " ++"of the image will not be maintained." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:20 ++msgid "" ++"If true, the panel is automatically hidden into a corner of the screen when " ++"the pointer leaves the panel area. Moving the pointer to that corner again " ++"will cause the panel to re-appear." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:21 ++msgid "" ++"If true, the panel will occupy the entire screen width (height if this is a " ++"vertical panel). In this mode the panel can only be placed at a screen edge. " ++"If false, the panel will only be large enough to accommodate the applets, " ++"launchers and buttons on the panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:22 ++msgid "" ++"If true, the x key is ignored and the panel is placed at the center of the x-" ++"axis of the screen. If the panel is resized it will remain at that position " ++"- i.e. the panel will grow on both sides. If false, the x key specifies the " ++"location of the panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:23 ++msgid "" ++"If true, the y key is ignored and the panel is placed at the center of the y-" ++"axis of the screen. If the panel is resized it will remain at that position " ++"- i.e. the panel will grow on both sides. If false, the y key specifies the " ++"location of the panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:24 ++msgid "" ++"In a Xinerama setup, you may have panels on each individual monitor. This " ++"key identifies the current monitor the panel is displayed on." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:25 ++msgid "Name to identify panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:26 ++msgid "Panel autohide delay" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:27 ++msgid "Panel autounhide delay" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:28 ++msgid "Panel orientation" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:29 ++msgid "Panel size" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:30 ++msgid "Rotate image on vertical panels" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:31 ++msgid "Specifies the background color for the panel in #RGB format." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:32 ++msgid "" ++"Specifies the file to be used for the background image. If the image " ++"contains an alpha channel it will be composited onto the desktop background " ++"image." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:33 ++msgid "" ++"Specifies the number of milliseconds delay after the pointer enters the " ++"panel area before the panel is automatically re-shown. This key is only " ++"relevant if the auto_hide key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:34 ++msgid "" ++"Specifies the number of milliseconds delay after the pointer leaves the " ++"panel area before the panel is automatically hidden. This key is only " ++"relevant if the auto_hide key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:35 ++msgid "" ++"Specifies the number of pixels visible when the panel is automatically " ++"hidden into a corner. This key is only relevant if the auto_hide key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:36 ++msgid "" ++"Specifies the opacity of the background color format. If the color is not " ++"completely opaque (a value of less than 65535), the color will be composited " ++"onto the desktop background image." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:37 ++msgid "Stretch image to panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:38 ++msgid "" ++"The height (width for a vertical panel) of the panel. The panel will " ++"determine at runtime a minimum size based on the font size and other " ++"indicators. The maximum size is fixed at one quarter of the screen height " ++"(or width)." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:39 ++msgid "" ++"The location of the panel along the x-axis. This key is only relevant in un-" ++"expanded mode. In expanded mode this key is ignored and the panel is placed " ++"at the screen edge specified by the orientation key." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:40 ++msgid "" ++"The location of the panel along the y-axis. This key is only relevant in un-" ++"expanded mode. In expanded mode this key is ignored and the panel is placed " ++"at the screen edge specified by the orientation key." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:41 ++msgid "" ++"The orientation of the panel. Possible values are \"top\", \"bottom\", \"left" ++"\", \"right\". In expanded mode the key specifies which screen edge the " ++"panel is on. In un-expanded mode the difference between \"top\" and \"bottom" ++"\" is less important - both indicate that this is a horizontal panel - but " ++"still give a useful hint as to how some panel objects should behave. For " ++"example, on a \"top\" panel a menu button will pop up its menu below the " ++"panel, whereas on a \"bottom\" panel the menu will be popped up above the " ++"panel." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:42 ++msgid "" ++"The speed in which panel animations should occur. Possible values are \"slow" ++"\", \"medium\" and \"fast\". This key is only relevant if the " ++"enable_animations key is true." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:43 ++msgid "" ++"This is a human readable name which you can use to identify a panel. Its " ++"main purpose is to serve as the panel's window title which is useful when " ++"navigating between panels." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:44 ++msgid "Visible pixels when hidden" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:45 ++msgid "" ++"Which type of background should be used for this panel. Possible values are " ++"\"gtk\" - the default GTK+ widget background will be used, \"color\" - the " ++"color key will be used as background color or \"image\" - the image " ++"specified by the image key will be used as background." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:46 ++msgid "" ++"With a multi-screen setup, you may have panels on each individual screen. " ++"This key identifies the current screen the panel is displayed on." ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:47 ++msgid "X co-ordinate of panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:48 ++msgid "X screen where the panel is displayed" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:49 ++msgid "Xinerama monitor where the panel is displayed" ++msgstr "" ++ ++#: ../gnome-panel/panel-toplevel.schemas.in.h:50 ++msgid "Y co-ordinate of panel" ++msgstr "" ++ ++#: ../gnome-panel/panel-util.c:89 ++msgid "Could not display help document" ++msgstr "" ++ ++#: ../gnome-panel/panel-util.c:311 ++#, c-format ++msgid "Details: %s" ++msgstr "" ++ ++#: ../gnome-panel/panel-util.c:624 ++#, c-format ++msgid "Icon '%s' not found" ++msgstr "" ++ ++#: ../gnome-panel/panel.c:480 ++#, c-format ++msgid "Open URL: %s" ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1273 ++msgid "Delete this drawer?" ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1274 ++msgid "" ++"When a drawer is deleted, the drawer and its\n" ++"settings are lost." ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1276 ++msgid "Delete Drawer" ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1278 ++msgid "Delete this panel?" ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1279 ++msgid "" ++"When a panel is deleted, the panel and its\n" ++"settings are lost." ++msgstr "" ++ ++#: ../gnome-panel/panel.c:1281 ++msgid "Delete Panel" ++msgstr "" ++ ++#: ../libpanel-applet/GNOME_Panel_TestApplet.server.in.h:1 ++msgid "A simple applet for testing the GNOME-2.0 panel" ++msgstr "" ++ ++#: ../libpanel-applet/GNOME_Panel_TestApplet.server.in.h:2 ++msgid "Test Bonobo Applet" ++msgstr "" ++ ++#: ../libpanel-applet/GNOME_Panel_TestApplet.server.in.h:3 ++msgid "Test Bonobo Applet Factory" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1042 ++#, c-format ++msgid "Incomplete '%s' background type received" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1056 ++#, c-format ++msgid "Incomplete '%s' background type received: %s" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1065 ++#, c-format ++msgid "Failed to get pixmap %s" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1072 ++msgid "Unknown background type received" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1296 ++msgid "The Applet's containing Panel's orientation" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1304 ++msgid "The Applet's containing Panel's size in pixels" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1312 ++msgid "The Applet's containing Panel's background color or pixmap" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1320 ++msgid "The Applet's flags" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1328 ++msgid "Ranges that hint what sizes are acceptable for the applet" ++msgstr "" ++ ++#: ../libpanel-applet/panel-applet.c:1336 ++msgid "The Applet's containing Panel is locked down" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:34 ++msgid "Specify an applet IID to load" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:35 ++msgid "" ++"Specify a gconf location in which the applet preferences should be stored" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:36 ++msgid "Specify the initial size of the applet (xx-small, medium, large etc.)" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:37 ++msgid "" ++"Specify the initial orientation of the applet (top, bottom, left or right)" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:61 ++msgid "Size|XX Small" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:62 ++msgid "Size|X Small" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:63 ++msgid "Size|Small" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:64 ++msgid "Size|Medium" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:65 ++msgid "Size|Large" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:66 ++msgid "Size|X Large" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:67 ++msgid "Size|XX Large" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.c:129 ++#, c-format ++msgid "Failed to load applet %s" ++msgstr "" ++ ++#. This is an utility to easily test various applets ++#: ../libpanel-applet/panel-test-applets.glade.h:2 ++msgid "Test applet utility" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.glade.h:3 ++msgid "_Applet:" ++msgstr "" ++ ++#: ../libpanel-applet/panel-test-applets.glade.h:5 ++msgid "_Prefs Dir:" ++msgstr "" ++ ++#: ../debian/ubuntu-about.desktop.in.h:1 ++msgid "About Ubuntu" ++msgstr "" ++ ++#: ../debian/ubuntu-about.desktop.in.h:2 ++msgid "Learn more about Ubuntu" ++msgstr "" +diff -Nur gnome-panel-2.14.0/po/POTFILES.in gnome-panel-2.14.0.new/po/POTFILES.in +--- gnome-panel-2.14.0/po/POTFILES.in 2006-01-16 18:42:56.000000000 +0100 ++++ gnome-panel-2.14.0.new/po/POTFILES.in 2006-03-14 12:44:27.000000000 +0100 +@@ -73,3 +73,4 @@ + libpanel-applet/panel-applet.c + libpanel-applet/panel-test-applets.c + libpanel-applet/panel-test-applets.glade ++debian/ubuntu-about.desktop.in --- gnome-panel-2.14.1.orig/debian/maintfiles/09_open_drawers_on_right_screen.patch.NOTWORKING +++ gnome-panel-2.14.1/debian/maintfiles/09_open_drawers_on_right_screen.patch.NOTWORKING @@ -0,0 +1,17 @@ +diff -p -u -5 -r1.82 panel-toplevel.c +--- gnome-panel/gnome-panel/panel-toplevel.c 2004/12/22 18:09:19 1.82 ++++ gnome-panel/gnome-panel/panel-toplevel.c 2005/01/06 04:12:41 +@@ -2468,10 +2468,13 @@ panel_toplevel_attach_to_widget (PanelTo + panel_toplevel_reverse_arrows (toplevel); + panel_toplevel_set_expand (toplevel, FALSE); + panel_toplevel_update_attach_orientation (toplevel); + panel_toplevel_update_hide_buttons (toplevel); + ++ gtk_window_set_screen (GTK_WINDOW (toplevel), ++ gtk_widget_get_screen (GTK_WIDGET (toplevel->priv->attach_toplevel))); ++ + if (toplevel->priv->state == PANEL_STATE_NORMAL) + panel_toplevel_push_autohide_disabler (toplevel->priv->attach_toplevel); + + gtk_widget_queue_resize (GTK_WIDGET (toplevel)); + } --- gnome-panel-2.14.1.orig/debian/maintfiles/clock_applet_evo_open.patch +++ gnome-panel-2.14.1/debian/maintfiles/clock_applet_evo_open.patch @@ -0,0 +1,200 @@ +diff -u -r1.10 calendar-client.c +--- applets/clock/calendar-client.c 31 Aug 2004 08:18:34 -0000 1.10 ++++ applets/clock/calendar-client.c 27 Dec 2004 09:07:15 -0000 +@@ -529,18 +529,6 @@ + return g_strdup (icalproperty_get_description (prop)); + } + +-static char * +-get_ical_url (icalcomponent *ical) +-{ +- icalproperty *prop; +- +- prop = icalcomponent_get_first_property (ical, ICAL_URL_PROPERTY); +- if (!prop) +- return NULL; +- +- return g_strdup (icalproperty_get_url (prop)); +-} +- + static inline GTime + get_ical_start_time (icalcomponent *ical, + icaltimezone *default_zone) +@@ -832,7 +820,6 @@ + null_safe_strcmp (a->summary, b->summary) == 0 && + null_safe_strcmp (a->description, b->description) == 0 && + null_safe_strcmp (a->color_string, b->color_string) == 0 && +- null_safe_strcmp (a->url, b->url) == 0 && + a->start_time == b->start_time && + a->due_time == b->due_time && + a->percent_complete == b->percent_complete && +@@ -850,7 +837,6 @@ + task_copy->summary = g_strdup (task->summary); + task_copy->description = g_strdup (task->description); + task_copy->color_string = g_strdup (task->color_string); +- task_copy->url = g_strdup (task->url); + task_copy->start_time = task->start_time; + task_copy->due_time = task->due_time; + task_copy->percent_complete = task->percent_complete; +@@ -872,9 +858,6 @@ + g_free (task->color_string); + task->color_string = NULL; + +- g_free (task->url); +- task->url = NULL; +- + task->percent_complete = 0; + } + +@@ -888,7 +871,6 @@ + task->summary = get_ical_summary (ical); + task->description = get_ical_description (ical); + task->color_string = get_source_color (source->source); +- task->url = get_ical_url (ical); + task->start_time = get_ical_start_time (ical, default_zone); + task->due_time = get_ical_due_time (ical, default_zone); + task->percent_complete = get_ical_percent_complete (ical); +@@ -1980,25 +1962,3 @@ + e_cal_modify_object (esource, ical, CALOBJ_MOD_ALL, NULL); + } + +-gboolean +-calendar_client_launch_editor (CalendarClient *client, +- CalendarEventType event_type, +- GdkScreen *screen, +- GError **error) +-{ +- char *command_line; +- gboolean retval; +- +- g_return_val_if_fail (CALENDAR_IS_CLIENT (client), FALSE); +- g_return_val_if_fail (event_type == CALENDAR_EVENT_APPOINTMENT || +- event_type == CALENDAR_EVENT_TASK, FALSE); +- +- command_line = g_strdup_printf ("evolution -c %s", +- event_type == CALENDAR_EVENT_APPOINTMENT ? "calendar" : "tasks"); +- +- retval = gdk_spawn_command_line_on_screen (screen, command_line, error); +- +- g_free (command_line); +- +- return retval; +-} +diff -u -r1.4 calendar-client.h +--- applets/clock/calendar-client.h 19 Jul 2004 19:11:14 -0000 1.4 ++++ applets/clock/calendar-client.h 27 Dec 2004 09:07:15 -0000 +@@ -27,7 +27,6 @@ + #define __CALENDAR_CLIENT_H__ + + #include +-#include + + G_BEGIN_DECLS + +@@ -90,7 +89,6 @@ + char *summary; + char *description; + char *color_string; +- char *url; + GTime start_time; + GTime due_time; + guint percent_complete; +@@ -139,10 +137,6 @@ + char *task_uid, + gboolean task_completed, + guint percent_complete); +-gboolean calendar_client_launch_editor (CalendarClient *client, +- CalendarEventType event_type, +- GdkScreen *screen, +- GError **error); + + void calendar_event_free (CalendarEvent *event); + +--- applets/clock/clock.c 2005-01-25 01:37:50.000000000 +0100 ++++ applets/clock/clock.c.mod 2005-01-25 01:42:25.000000000 +0100 +@@ -545,7 +545,6 @@ + TASK_COLUMN_COMPLETED_TIME, + TASK_COLUMN_OVERDUE_ATTR, + TASK_COLUMN_COLOR, +- TASK_COLUMN_URL, + N_TASK_COLUMNS + }; + +@@ -625,7 +624,6 @@ + TASK_COLUMN_COMPLETED, task->percent_complete == 100, + TASK_COLUMN_COMPLETED_TIME, task->completed_time, + TASK_COLUMN_COLOR, task->color_string, +- TASK_COLUMN_URL, task->url, + -1); + + g_free (percent_complete_text); +@@ -808,17 +806,21 @@ + GtkTreeViewColumn *column, + ClockData *cd) + { +- GError *err = NULL; + GtkTreeIter iter; +- char *uri; +- ++ gchar *command_line; ++ gchar *uid; ++ + gtk_tree_model_get_iter (GTK_TREE_MODEL (cd->tasks_model), &iter, path); + gtk_tree_model_get (GTK_TREE_MODEL (cd->tasks_model), &iter, +- TASK_COLUMN_URL, &uri, -1); +- +- if (uri) +- gnome_url_show (uri, &err); +- ++ TASK_COLUMN_UID, &uid, -1); ++ ++ command_line = g_strdup_printf ("evolution task:%s", uid); ++ ++ gdk_spawn_command_line_on_screen (gtk_widget_get_screen (cd->calendar), command_line, NULL); ++ ++ g_free (command_line); ++ g_free (uid); ++ + return TRUE; + } + +@@ -909,7 +911,6 @@ + G_TYPE_LONG, /* completed time */ + PANGO_TYPE_ATTR_LIST, /* summary text attributes */ + G_TYPE_STRING, /* color */ +- G_TYPE_STRING /* url */ + }; + + cd->tasks_model = gtk_list_store_newv (N_TASK_COLUMNS, column_types); +@@ -1137,14 +1138,23 @@ + + static void + calendar_day_activated (ClockData *cd) +-{ +- /* FIXME: should be able to launch the editor for +- * the specific day +- */ +- calendar_client_launch_editor (cd->client, +- CALENDAR_EVENT_APPOINTMENT, +- gtk_widget_get_screen (cd->calendar), +- NULL); ++{ ++ guint day; ++ guint year; ++ guint month; ++ ++ GDate *date; ++ gchar command_line[40]; ++ ++ gtk_calendar_get_date (GTK_CALENDAR(cd->calendar), &year, &month, &day); ++ date = g_date_new (); ++ g_date_set_dmy (date, day, month + 1, year); ++ ++ g_date_strftime (command_line, sizeof (command_line), "evolution -c calendar date:%x", date); ++ gdk_spawn_command_line_on_screen (gtk_widget_get_screen (cd->calendar), command_line, NULL); ++ g_date_free (date); ++ ++ return; + } + + static void --- gnome-panel-2.14.1.orig/debian/maintfiles/changelog_unreleased +++ gnome-panel-2.14.1/debian/maintfiles/changelog_unreleased @@ -0,0 +1,2 @@ + + modified gnomezilla patch to fix opening evolution at the selected + date (also partially fix opening tasks) (Closes: #272777). --- gnome-panel-2.14.1.orig/debian/maintfiles/improved_open_recent_doc_in_term.patch.NEEDTESTING +++ gnome-panel-2.14.1/debian/maintfiles/improved_open_recent_doc_in_term.patch.NEEDTESTING @@ -0,0 +1,34 @@ +--- gnome-panel/panel-recent.c.orig 2005-01-26 00:32:36.000000000 +0100 ++++ gnome-panel/panel-recent.c 2005-01-26 00:39:22.000000000 +0100 +@@ -49,6 +49,8 @@ + char *path; + char *quoted; + gboolean ret = TRUE; ++ GConfClient *client; ++ gchar *terminal_exec, *terminal_exec_arg; + + /* Don't allow suspicious looking URIs */ + if (uri [0] == '-') +@@ -62,13 +64,18 @@ + return FALSE; + } + ++ + str = g_string_new (""); + + if (app->requires_terminal) { +- /* FIXME: we should use their preferred terminal +- * maybe a multiscreen variant of gnome_execcute_terminal_shell? +- */ +- g_string_append_printf (str, "gnome-terminal -x %s", app->command); ++ client = panel_gconf_get_client (); ++ terminal_exec = gconf_client_get_string(client, "/desktop/gnome/applications/terminal/exec", NULL); ++ terminal_exec_arg = gconf_client_get_string(client, "/desktop/gnome/applications/terminal/exec_arg", NULL); ++ ++ g_string_append_printf (str, "%s %s %s", terminal_exec, terminal_exec_arg, app->command); ++ ++ g_free(terminal_exec); ++ g_free(terminal_exec_arg); + } else + str = g_string_append (str, app->command); + --- gnome-panel-2.14.1.orig/debian/control +++ gnome-panel-2.14.1/debian/control @@ -0,0 +1,82 @@ +Source: gnome-panel +Section: gnome +Priority: optional +Maintainer: Guilherme de S. Pastore +Uploaders: Sebastien Bacher , Arnaud Patard , Debian GNOME Maintainers , Akira TAGOH , Andreas Rottmann , Andrew Lau , Carlos Perelló Marín , Clément Stenac , Ed Boraas , Edd Dumbill , Emil Soleyman-Zomalan , Gustavo Noronha Silva , J.H.M. Dassen (Ray) , Joe Drew , Johannes Rohr , Jordi Mallach , Jose Carlos Garcia Sogo , Josselin Mouette , Loic Minier , Marc 'HE' Brockschmidt , Ondřej Surý , Rob Bradford , Robert McQueen , Ross Burton , Sebastien Bacher , Sjoerd Simons , Takuo KITAME +Standards-Version: 3.6.2.1 +Build-Depends: cdbs (>= 0.4.23-1.1), build-essential, autotools-dev, debhelper (>= 4.1.0), patchutils (>= 0.2.25), debhelper (>= 5.0.7ubuntu4), liborbit2-dev (>= 1:2.12.1-1), intltool, gnome-pkg-tools, libgtk2.0-dev (>= 2.7.1), libglade2-dev (>= 1:2.5.1), libwnck-dev (>= 2.13.5), scrollkeeper (>= 0.3.14-9.1), libgnome2-dev (>= 2.13.0), libgnome-desktop-dev (>= 2.11.1), libpng12-dev, libbonobo2-dev (>= 2.8.1-2), libxmu-dev, libedata-cal1.2-dev (>= 1.2.1-1) [!hurd-i386], libgnome-menu-dev (>= 2.11.1-1), libgnomevfs2-dev (>= 2.10.0-1), libnspr-dev, libxres-dev, sharutils, gnome-doc-utils, libedataserverui1.2-dev (>= 1.5.3), liblpint-bonobo-dev, liblaunchpad-integration-dev, libcairo2-dev + +Package: gnome-panel +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-panel-data (= ${Source-Version}), gnome-desktop-data (>= 2.10.0-1), gnome-control-center (>= 1:2.8.2-3), gnome-menus (>= 2.11.1-1), gnome-about (>= 2.10.0-1) +Recommends: gnome-applets (>= 2.10.1-1), gnome-session, menu-xdg (>= 0.2), alacarte +Suggests: yelp, gnome2-user-guide, gnome-terminal | x-terminal-emulator, gnome-system-tools, nautilus +Description: launcher and docking facility for GNOME 2 + This package contains toolbar-like “panels” which can be attached to + the sides of your X desktop, or left “floating”. It is designed to be + used in conjunction with the Gnome Desktop Environment. Many features + are provided for use with the panels – including an application menu, + clock, mail checker, network monitor, quick launch icons and the like. + +Package: gnome-panel-dbg +Architecture: any +Depends: gnome-panel (= ${Source-Version}) +Description: Launch and/or dock GNOME 2 applications + This package contains a toolbar (the "panel") that you can attach to the + edge of your X desktop. You can install "applets" on it. Several applets + are supplied: an application menu, a clock, a mail checker, a network + monitor, etc. You can customize the location, and the "autohide" + animations. + . + This development package contains unstripped binaries compiled with + debugging symbols needed by gdb. + +Package: libpanel-applet2-0 +Section: libs +Architecture: any +Depends: ${shlibs:Depends} +Description: library for GNOME 2 panel applets + This library is used by GNOME 2 panel applets. + +Package: libpanel-applet2-0-dbg +Section: libdevel +Architecture: any +Depends: libpanel-applet2-0 (= ${Source-Version}) +Conflicts: libpanel-applet2-dbg +Provides: libpanel-applet2-dbg +Replaces: libpanel-applet2-dbg +Description: library for GNOME 2 panel applets - library with debugging symbols + This library is used by GNOME 2 panel applets. + . + This package contains unstripped shared libraries. It is provided primarily + to provide a backtrace with names in a debugger, this makes it somewhat + easier to interpret core dumps. The libraries are installed in + /usr/lib/debug and can be used by placing that directory in + LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libpanel-applet2-dev +Section: libdevel +Architecture: any +Depends: libpanel-applet2-0 (= ${Source-Version}), libgnomeui-dev (>= 2.10.0-1) +Description: library for GNOME 2 panel applets - development files + This packages provides the include files and static library for the GNOME 2 + panel applet library functions. + +Package: libpanel-applet2-doc +Section: doc +Architecture: all +Suggests: doc-base +Description: library for GNOME 2 panel applets - documentation files + This packages provides the documentation files for the GNOME 2 panel applet + library functions. + +Package: gnome-panel-data +Section: gnome +Architecture: all +Depends: scrollkeeper (>= 0.3.14-9.1), ${misc:Depends} +Recommends: gnome-panel (= ${Source-Version}) +Description: common files for GNOME 2 panel + This package includes some files that are needed by the GNOME 2 panel + (Pixmaps, .desktop files and internationalization files). + --- gnome-panel-2.14.1.orig/debian/changelog +++ gnome-panel-2.14.1/debian/changelog @@ -0,0 +1,2210 @@ +gnome-panel (2.14.1-0ubuntu3) dapper; urgency=low + + * debian/patches/11_panel_addto_dialog.patch: + - cleanup, marked strings as translatable (Ubuntu: #39790) + + -- Sebastien Bacher Sun, 16 Apr 2006 22:04:19 +0200 + +gnome-panel (2.14.1-0ubuntu2) dapper; urgency=low + + * debian/patches/09_help_submenu.patch: + - fix string not marked for translation + * debian/patches/11_applet_use_session_dialog.patch: + - define a "/apps/panel/global/upstream_session" gconf key to use the + upstream sessions dialogs instead of the Ubuntu one + - only the upstream mode has a shutdown applet (Ubuntu: #37179) + + -- Sebastien Bacher Fri, 14 Apr 2006 14:32:00 +0200 + +gnome-panel (2.14.1-0ubuntu1) dapper; urgency=low + + * New upstream version: + Panel: + - Don't show an empty label for local URI that are not file: URI in + the bookmarks (Ubuntu: #31956, #36775) + - Plug leaks + - Always canonicalize URIs in launchers before showing them + - Cleanups + libpanel-applet: + - Plug GnomeProgram leak + Clock Applet: + - Remove GnomeProgram leak + - Fix potential crash + - Fix potential crash with unknown event types + - Launch evolution on the clicked day + - Plug leak of a GError + Show Desktop Applet: + - Use less padding for the focus so the icon doesn't get trimmed + Misc: + - Use po/LINGUAS to list languages + Docs Translators: + - Maxim Dziumanenko (uk) + Translators: + - Vital Khilko (be) + - Jrmy Le Floc'h (br) + - Pema Geyleg (dz) + - Ivar Smolin (et) + - Benot Dejean (fr) + - Ignacio Casal Quinteiro (gl) + - Yuval Tanny (he) + - Luca Ferretti (it) + - Takeshi AIHANA (ja) + - Vladimer Sichinava (ka) + - Wouter Bolsterlee (nl) + - Gora Mohanty (or) + - Dan Damian (ro) + * debian/patches/07_clock_applet_spawn_evo_right_day.patch: + - fixed with the new version + * debian/patches/07_use_beagle.patch: + - use beagle for the places menu search item if available (Ubuntu: #38986) + + -- Sebastien Bacher Mon, 10 Apr 2006 17:08:16 +0200 + +gnome-panel (2.14.0-0ubuntu2) dapper; urgency=low + + * debian/patches/07_clock_applet_spawn_evo_right_day.patch: + - make double clicking on a day from the panel calendar open the + evolution calendar on the same day, patch by Tollef (Ubuntu :#35167) + + -- Sebastien Bacher Mon, 20 Mar 2006 10:42:28 +0100 + +gnome-panel (2.14.0-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Panel: + - Remove the Suspend button on the logout dialog (this is not a + regression wrt 2.12) + - Ignore unknown options passed to the panel + - Fix orientation of handles + - Fix help link for the menubar + - Fix underscores not being visible in menu items + - Workspace Switcher Applet: + - Fix crash when scrolling right on the last workspace + - Misc: + - Update manpage + - Translations: be, bg, bn, cs, cy, da, de, el, es, et, eu, fi, hu, it, + ja, ka, ku, lt, nb, nl, nn, no, pl, pt_BR, ru, sq, sr, sv, th, uk, vi, + zh_CN, zh_HK, zh_TW. + * debian/ubuntu-about.desktop{,.in}: + - added .in file, added Lithuanian translation (Malone: #34711), added + Catalan translation (thanks Jordi Mallach). + * debian/patches/99_about-ubuntu-translation.patch: + - added debian/ubuntu-about.desktop to POTFILES.in, reran + intltool-update -p. + + -- Daniel Holbach Mon, 13 Mar 2006 22:16:31 +0100 + +gnome-panel (2.13.91-0ubuntu6) dapper; urgency=low + + * debian/patches/09_help_submenu.patch: + - make a "help" submenu for support (Ubuntu: #31775) + + -- Sebastien Bacher Thu, 2 Mar 2006 23:49:01 +0100 + +gnome-panel (2.13.91-0ubuntu5) dapper; urgency=low + + * debian/control.in: + - Build-Depends on libpng12 instead of libpng3 (Ubuntu: #32590) + * debian/patches/08_default_clock_setting.patch: + - display the date with the panel clock by default + + -- Sebastien Bacher Thu, 2 Mar 2006 18:59:41 +0100 + +gnome-panel (2.13.91-0ubuntu4) dapper; urgency=low + + * debian/patches/11_applet_use_session_dialog.patch: + - patch update, use one item for the panel menu and make it open the + session dialog + + -- Sebastien Bacher Sat, 25 Feb 2006 00:00:00 +0100 + +gnome-panel (2.13.91-0ubuntu3) dapper; urgency=low + + * debian/patches/04_default_panel_config.patch: + - default browser is firefox not epiphany + + -- Sebastien Bacher Thu, 16 Feb 2006 16:26:39 +0100 + +gnome-panel (2.13.91-0ubuntu2) dapper; urgency=low + + * debian/ubuntu-about.desktop: + - use the distributor-logo as icon (Ubuntu: #10322) + + -- Sebastien Bacher Thu, 16 Feb 2006 15:30:25 +0100 + +gnome-panel (2.13.91-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Panel: + - Use Restart instead of Reboot + - Remove the Shut Down reference in the tooltip of the Log Out item + (Malone: #30293) + - Don't reboot/shutdown immediately if other users are connected + - Don't display the Shut Down item if GDM is not running + - Use a softer countdown for the 30 first seconds in the log out dialogs + - Fix critical warning in the run dialog when the program list is + disabled + - Add "..." at the end of the Log Out and Shut Down items + - Make invisible mnemonics in menu work again + - Add accelerator for items in the context menu of launchers + - Use GOption instead of popt + - Fish Applet: + - Use gender-neutral wording in about dialog + - Window Menu Applet: + - Update help link + - Misc: + - Use GOption instead of popt in the test applet program + - Fix build when /usr/lib/X11R6 is a link to /usr + - Docs Translators: Luca Ferretti (it) + - Translators: Runa Bhattacharjee (bn), Jordi Mallach (ca), Miloslav + Trmac (cs), Ole Laursen (da), Ivar Smolin (et), Ignacio Casal Quinteiro + (gl), Luca Ferretti (it), Øivind Hoel (nb), Evandro Fernandes Giovanini + (pt_BR), Слободан Д. Средојевић (sr), Theppitak Karoonboonyanan (th) + * debian/patches/11_panel_addto_dialog.patch, + debian/patches/12_autoconf.patch: + - updated. + + -- Daniel Holbach Mon, 13 Feb 2006 22:33:00 +0100 + +gnome-panel (2.13.90-0ubuntu2) dapper; urgency=low + + * debian/rules: + - build a .pot + + -- Sebastien Bacher Mon, 6 Feb 2006 22:33:54 +0100 + +gnome-panel (2.13.90-0ubuntu1) dapper; urgency=low + + * New upstream release: + - Panel: + - Fix timeout label in the logout dialogs + - Don't make it possible to have two logout dialogs at the same time + - Put logout dialogs above all windows and on all workspaces + - Show the logout dialog on the correct screen + - Fix crash with logout dialogs when esd and sound events are enabled + - Simplify the logout dialogs questions + - Partial fix for Vincent's stupidity :-) + - Fix search of application launchers in "Add to panel" dialog + - Fix potential crash when there's an error loading an applet + - Update libegg code + - Fix crash when logout dialogs are closed by the window manager + - Remove gnome-screenshot item from the Desktop menu + - Look in the XDG data dirs when loading a .desktop file, so we don't + need the whole path + - Update default panel config to just use basenames for .desktop files + - Remove the screenshot action button and migrates the existing config + to use gnome-screenshot.desktop (Malone: #19090). + - Change accelerator for "Lock To Panel" + - Add username to the Logout menu item + - Fix crash happening with remote bookmarks in the Places menu + - Use an icon for the network places submenu + - Update the launcher item description in the "Add to panel" dialog + - Simplify and add context for some strings + - Fix warnings + - Don't show useless separators in context menus of panel objects when + the panel is locked down + - Fix theoretical breakage if gconf config is broken + - Clock Applet: + - Fix incoherency in the use of two lines format + - Don't offer the 12-hour format to the user if his locale don't + support it + - Misc: + - Add context in some strings of the test applet program + - Docs Translators + - Vincent Untz (fr) + - Translators: Vital Khilko (be), Vladimir Petkov (bg), Hendrik + Brandt (de), Kostas Papadimas (el), Adam Weinberger (en_CA), Francisco + Javier F. Serrador (es), Ilkka Tuohela (fi), Ignacio Casal Quinteiro + (gl), Ankit Patel (gu), Luca Ferretti (it), Takeshi AIHANA (ja), + Žygimantas Beručka (lt), Øivind Hoel (nb), Reinout van Schouwen (nl), + Øivind Hoel (no), Evandro Fernandes Giovanini (pt_BR), Слободан Д. + Средојевић (sr), Theppitak Karoonboonyanan (th), Clytie Siddall (vi), + Funda Wang (zh_CN) + * Other bugs fixed: + - Malone: #28958: "Alt+F2 "Run Dialog" box appears and hides behind" + * debian/ubuntu-about.desktop: + - dropped, DocPath line, thanks Thierry Moisan . + (Malone: #4899) + * debian/patches/04_default_panel_config.patch, + debian/patches/11_panel_addto_dialog.patch, + debian/patches/12_autoconf.patch + - updated. + * debian/patches/08_cvs_fixes_session.patch, + debian/patches/13_fix-bookmarks-crash.patch: + - dropped, Fix released. + + -- Daniel Holbach Sat, 28 Jan 2006 15:47:24 +0100 + +gnome-panel (2.13.5-0ubuntu4) dapper; urgency=low + + * debian/patches/13_fix-bookmarks-crash.patch: + + Fix the crash caused by memory corruption when viewing the Locations + menu. Patch from CVS + + -- Sebastian Dröge Mon, 23 Jan 2006 22:20:17 +0100 + +gnome-panel (2.13.5-0ubuntu3) dapper; urgency=low + + * debian/patches/11_applet_use_session_dialog.patch: + - use the session dialog, instead of the new panel one, when clicking on + the applet, thanks to Vincent Untz for the patch! + + -- Sebastien Bacher Thu, 19 Jan 2006 17:41:04 +0100 + +gnome-panel (2.13.5-0ubuntu2) dapper; urgency=low + + * debian/patches/08_cvs_fixes_session.patch: + - patch from the CVS, fixes different issues with the session dialog + - fixes the crash due to sound events of the session dialog + (Ubuntu: #28917) + + -- Sebastien Bacher Wed, 18 Jan 2006 22:50:22 +0100 + +gnome-panel (2.13.5-0ubuntu1) dapper; urgency=low + + * debian/patches/11_panel_addto_dialog.patch: + - patch updated for the upstream code changes + * debian/patches/12_autotools.patch: + - updated + + [ Daniel Holbach ] + + * New upstream release: + - Panel: + - Remove useless screensaver actions in context menu of the button + (William Jon McCann) + - Fix tiling for image backgrounds (Vincent) + - Update background when size changes (Vincent) + - Make image with transparency backgrounds work (Vincent) + - Fix critical warnings (Vincent) + - Add CD recording item to the Places menu (Sébastien Bacher) (Malone: + #18213) + - Add separator internal applet (Carlos Garcia Campos, Manu Cornet, + Vincent) + - Add a search entry to the "add to panel" dialog (Vincent) + - Re-cache the applications menu when reloading it after there has been + some fam/gamin/inotify events (Vincent) + - Add new logout/shutdown dialogs (Vincent) + - Fix display of remote bookmarks in Places menu (Bastien Nocera, + Vincent) + - Small fixes (Vincent) + - libpanel-applet: + - Fix tiling for image backgrounds (Vincent) + - Avoid crashes with image backgrounds (Vincent) + - Wnck Applets: + - tell libwnck that the applets are pagers (Elijah Newren) + - Documentation: + - Update for clock and fish applets (Joachim Noreiko) + - Misc: + - Depend on libwnck 2.13.5 (Vincent) + - Docs Translators: + - Christophe Bliard (fr) + - Translators: Vladimir Petkov (bg), Jordi Mallach (ca), Hendrik Richter + (de), Adam Weinberger (en_CA), Ilkka Tuohela (fi), Ignacio Casal + Quinteiro (gl), Gabor Kelemen (hu), Takeshi AIHANA (ja), Reinout van + Schouwen (nl), Слободан Д. Средојевић (sr), Theppitak Karoonboonyanan + (th), Clytie Siddall (vi), Woodman Tuen (zh_HK), Woodman Tuen (zh_TW) + * debian/control.in: + - bumped Build-Depends on libwnck. + * debian/patches/11_panel_addto_dialog.patch: + - dropped momentarily. + * debian/changes/12_autotools.patch: + - updated. + * Resynchronized with Debian; changes towards the Debian package are: + - debian/application-default-icon.png.uue, + debian/rules, + debian/patches/01_distrologo.patch + - Distro Icon. + - debian/control.in, + debian/rules: + - additional gnome-panel-dbg package. + - debian/control.in, + debian/patches/09_lpi_src.patch, + debian/patches/12_autotools.patch: + - Launchpad Integration. + - debian/control.in: + - different Recommends, Suggests (alacarte, gnome-sytem-tools). + - different name for libpanel-applet2-0-dbg. + - debian/gnome-panel-data.postinst, + debian/panel-default-setup-laptop.entries: + - additional laptop detect changes. + - debian/watch, + debian/control.in: + - Newer version. + + -- Sebastien Bacher Wed, 18 Jan 2006 01:38:34 +0100 + +gnome-panel (2.12.2-3) unstable; urgency=low + + * Upload to unstable (Closes: #347881) + + [ Josselin Mouette ] + * Suggest gnome-terminal only, as x-terminal-emulator won't be used + (closes: #291058). + + -- Guilherme de S. Pastore Fri, 13 Jan 2006 13:40:37 -0200 + +gnome-panel (2.13.4-0ubuntu3) dapper; urgency=low + + * debian/patches/11_panel_addto_dialog.patch: + - patch update by Manu Cornet + - changes according to dapper-desktop-plan + - move the menu items to the utilities category + - use buttons for the special launchers actions + + -- Sebastien Bacher Thu, 12 Jan 2006 22:41:23 +0100 + +gnome-panel (2.13.4-0ubuntu2) dapper; urgency=low + + * debian/panel-default-setup-laptop.entries, + debian/patches/04_default_panel_config.patch: + - update for dapper-desktop-plan + - don't put yelp on the default panel + - put the session button to the top right corner + + -- Sebastien Bacher Mon, 9 Jan 2006 21:54:49 +0100 + +gnome-panel (2.13.4-0ubuntu1) dapper; urgency=low + + * New upstream version: + Panel: + - Don't crash when an applet can't be loaded + - Fix critical warnings + - Remove useless warning + - Add a preview widget in the image background chooser + - Don't crash with some themes + - Fix sensitivity of "Remove panel" menu item + - Reword error dialogs + - Update the known applications list while typing and only show the + items that match + - Make the "add to panel" dialog a bit nicer + - Use a close button instead of the cancel one in the "add to panel" + dialog + - Add tooltips for the menu bar + - Update from libegg + - Don't do something on double/triple clicks for buttons + - Make applet handles handle transparency + - Fix crash when a toplevel is destroyed + - Fix crash when quitting with "add to dialog" open + - Fix auto-hide panel not autohiding after the "Delete dialog" has been + opened + - Minor fixes + - Code cleanups + libpanel-applet: + - Add new API to automatically update the background of a widget + - Emits the background-changed signal when the allocated size changes + - Fix criticla warning + Clock Applet: + - Make task activation work correctly + - Sort tasks by due date if priorities are the same + - Don't show the date by default + Fish Applet: + - Fix path to cairo.h + - Fix critical warning when choosing a new image + Notification Area Applet: + - Update from libegg. Should fix some icons not showing + Window List Applet: + - Fix critical warning and icon not showing during startup notification + All Applets: + - use new libpanel-applet API for the background + Documentation: + - Update for clock and fish applets + Misc: + - change button order and use Execute button for the test applet program + - don't crash when an applet can't be loaded in the test applet program + - Build fixes + * debian/patches/02_incorrect_applet_loading_crash_fix.patch: + - fixed with the new version + * debian/patches/10_defaulteditor.patch, + debian/patches/11_panel_addto_dialog.patch, + debian/patches/12_autotools.patch: + - updated + * debian/patches/08_tray_icons.patch: + - fixed with the new version + + -- Sebastien Bacher Mon, 2 Jan 2006 22:49:50 +0100 + +gnome-panel (2.12.2-2) experimental; urgency=low + + * Build-depend on libedataserverui1.2-dev (>= 1.3.0), so control-center and + gnome-panel can't be build with conflicting e-d-s libraries. + + -- Sjoerd Simons Tue, 27 Dec 2005 19:54:59 +0100 + +gnome-panel (2.13.3-0ubuntu3) dapper; urgency=low + + * debian/patches/02_incorrect_applet_loading_crash_fix.patch: + - fix a crasher when a bugged applet is configured (Ubuntu: #20912) + + -- Sebastien Bacher Tue, 20 Dec 2005 15:36:53 +0100 + +gnome-panel (2.13.3-0ubuntu2) dapper; urgency=low + + * debian/control.in: + - build with the current evolution-data-server package + + -- Sebastien Bacher Tue, 13 Dec 2005 21:58:32 +0100 + +gnome-panel (2.13.3-0ubuntu1) dapper; urgency=low + + * New upstream version: + Panel: + - Code cleanups + - Synchronize the way remote bookmarks are displayed with nautilus + - Remove deprecated calls + - Update libegg code + Clock Applet: + - Really fix the orientation change + Misc: + - Remove the .spec file + - Build fixes + * debian/patches/02_calendar.patch: + - fixed with the new version. + * debian/patches/09_lpi_src.patch, + debian/patches/12_autotools.patch: + - updated + + -- Sebastien Bacher Tue, 13 Dec 2005 12:14:02 +0100 + +gnome-panel (2.12.2-1) experimental; urgency=low + + * New upstream release + * debian/patches/02_panel-menu-items.c.patch: + - dropped; applied upstream + * Don't build on a separate directory, it breaks gnome-doc-utils + + -- Guilherme de S. Pastore Wed, 30 Nov 2005 14:30:20 -0200 + +gnome-panel (2.13.2-0ubuntu3) dapper; urgency=low + + * debian/control.in, + debian/patches/10_defaulteditor.patch: + - update for the menu editor name change ("alacarte" now). + + -- Sebastien Bacher Tue, 22 Nov 2005 14:50:48 +0100 + +gnome-panel (2.13.2-0ubuntu2) dapper; urgency=low + + * debian/patches/02_calendar.patch: + - fix the calendar for the clock applet (Ubuntu: #19819). + + -- Sebastien Bacher Sat, 19 Nov 2005 14:10:37 +0100 + +gnome-panel (2.13.2-0ubuntu1) dapper; urgency=low + + * Sync with Debian. + * New upstream version: + Panel + - Don't display error when an url show is canceled + - Handle glade errors + - Revert orientation change + - Update libegg code + Clock Applet + - Updates for the orientation change + Fish Applet + - Updates for the orientation change + * debian/application-default-icon.png.uue: + - default icon for the menu entries. + * debian/control.in: + - Build-Depends on cairo/lpi. + - Depends on libnspr4. + - updated the libpanel dbg package name, list a gnome-panel-dbg package. + - Recommends smeg. + * debian/gnome-panel-data.install: + - install the "About Ubuntu" menu item. + * debian/gnome-panel-data.postinst: + - use laptop-detect to determine the default configuration. + * debian/panel-default-setup-laptop.entries: + - laptop profile. + * debian/patches/01_distrologo.patch: + - use the distribution logo. + * debian/patches/01_layout.patch: + - rename the Desktop menu, list the Documents item. + * debian/patches/02_panel-menu-items.c.patch: + - fixed with the current version. + * debian/patches/04_menus_rename.patch: + - no name change for the menu files. + * debian/patches/04_default_panel_config.patch: + - change to the default configuration. + * debian/patches/05_submenus.patch: + - change the order of the administration and preferences menus. + * debian/patches/06_applets_category.patch: + - fix applets categories. + * debian/patches/07_time_cmd.patch: + - use gksudo to set the clock. + * debian/patches/08_tray_icons.patch: + - fix some bugs with the systray. + * debian/patches/09_default_icons.patch: + - shows an icon if the .desktop hasn't one. + * debian/patches/10_defaulteditor.patch: + - change the default editor to smeg. + * debian/patches/11_panel_addto_dialog.patch: + - new 'add to panel' dialog. + * debian/patches/12_autotools.patch: + - update the build files. + * debian/patches/99_reautogenization.patch: + - the previous patch does this job. + * debian/rules: + - install the default menu icon. + - updated for ubuntu dbg packages. + * debian/ubuntu-about.desktop: + - "About Ubuntu" menu item. + * debian/watch: + - updated. + + -- Sebastien Bacher Mon, 14 Nov 2005 12:28:01 +0100 + +gnome-panel (2.12.1-2) experimental; urgency=low + + * New maintainer + Thanks for all your work, Marc! + + * debian/patches/06_sync_clear_documents.patch: + - patch from upstream CVS to force update when Gamin/FAM + notification is not available (Closes: #319800, #330847) + + -- Guilherme de S. Pastore Fri, 11 Nov 2005 20:54:11 -0200 + +gnome-panel (2.12.1-1) experimental; urgency=low + + [ Gustavo Noronha Silva ] + * New upstream release + * debian/patches/01_defaults_add_notifarea.patch, + debian/patches/02_clockapplet_reload_timezone.patch, + debian/patches/03_libpanel-applet_X11_link_missing.patch + - removed, applied upstream or fixed otherwise + * debian/patches/02_panel-menu-items.c.patch: + - added, from Ubuntu's package packaging patch, which added it + from GNOME's bugzilla #315322 + * debian/patches/99_reautogenization.patch: + - updated with: + libtoolize -c -f --automake && aclocal-1.9 && autoheader && \ + automake-1.9 -acf && autoconf && rm -rf autom4te.cache + * debian/patches/04_menus_rename.patch: + - updated + * debian/rules: + - disable scrollkeeper on build, based on Ubuntu's change + * debian/watch: + - updated for 2.12 major + * debian/control.in: + - updated Build-Depends according to Ubuntu's package and on the + upstream package's configure.in pkgconfig stuff + + [ Guilherme de S. Pastore ] + * debian/control.in: + - moved menu-xdg from Suggests to Recommends (Closes: #315782) + + [ Loic Minier ] + * Clarify "Copyright" versus "License". + + -- Gustavo Noronha Silva Sat, 29 Oct 2005 19:54:10 -0200 + +gnome-panel (2.10.2-2) UNRELEASED; urgency=low + + * Menu transition, part 1 and 2: move from #!/usr/sbin/install-menu to + #!/usr/bin/install-menu. [debian/gnome-vfolder-user, + debian/gnome-panel-data.menu-method.experimental, + debian/gnome-panel-data.menu-method] + + -- Loic Minier Thu, 20 Oct 2005 16:33:49 +0200 + +gnome-panel (2.10.2-1) unstable; urgency=low + + * New upstream release + * Removed 06_fr_po_fix.patch now included upstream. + * Re-autogen-ized. + * Increased Standards-Version (no changes needed). + + -- Marc Dequènes (Duck) Tue, 28 Jun 2005 23:30:00 +0200 + +gnome-panel (2.10.1-5) unstable; urgency=medium + + * Don't overwrite DEB_CONFIGURE_SCRIPT_ENV completely. + * Remove most replaces and conflicts fields, they are unused now. + * gnome-panel only Recommends: gnome-session. + * gnome-panel-data only Recommends: gnome-panel (breaking a dependency + cycle). + + -- Josselin Mouette Sat, 25 Jun 2005 19:45:52 +0200 + +gnome-panel (2.10.1-4) unstable; urgency=low + + * Replaced Suggests on menu by menu-xdg (Closes: #313011). + * Added patch to fix missing includes from Dann Frazier (Closes: + #314692). + * Fix fr translation s/Environnement de bureau/Bureau/ (from GNOME + CVS) (Closes: #313351). + * Now building in 'debian/build/' directory (cleaner). + * Pass --as-needed to LDFLAGS to reduce dependencies if possible. + * Disabled evolution-data-server support on Hurd (thanks to Michael + Banck). + + -- Marc Dequènes (Duck) Sun, 19 Jun 2005 11:51:40 +0200 + +gnome-panel (2.10.1-3) unstable; urgency=low + + * Upload to unstable (Closes: #312609). + * Added patch to solve menu files conflicts with other desktop + environnements (Closes: #307098) (thanks to seb128). + * Removed clean rule hack to work around #299010. + + -- Marc Dequènes (Duck) Tue, 7 Jun 2005 23:44:00 +0200 + +gnome-panel (2.10.1-2) experimental; urgency=low + + * Some more build-depends, depends, and suggests update (gnome-about + and new gnome-menus are now dependencies). + * Fixed in 2.10 branch : + + drawer does not open at the right place on dual-screen display + (Closes: #260480). + + click repeat rate in calendar view for clock applet is too fast + (Closes: #272885). + + panel won't scale some SVGs properly (Closes: #275215). + + translation error in pt-BR (Closes: #293656). + * Removed 'gnome-panel-screenshot' man page (command moved to gnome- + utils). + * Fixed stupid cut-and-paste mistake in 'debian/copyright'. + + -- Marc Dequènes (Duck) Sun, 17 Apr 2005 02:25:16 +0200 + +gnome-panel (2.10.1-1) experimental; urgency=low + + * New upstream release + * Removed the following patches now included upstream : + + 03_french_typo.patch + + 06_translation_silliness.patch + + 08_improved_run_in_term_speed.patch + * Mass build-depends and depends update. + * Patched libpanel-applet to correctly link with X11. + * Re-autogen-ized. + * Removed '/usr/share/gnome-panel' not used anymore in 'debian/gnome- + panel-data.install'. + * Updated 'debian/watch'. + + -- Marc Dequènes (Duck) Sun, 10 Apr 2005 21:06:35 +0200 + +gnome-panel (2.8.3-1) unstable; urgency=medium + + * Marc Dequènes: + + Rebuilt with fixed libgnomeui without non-free howl stuff + (Closes: #298887) (thus urgency). + + Used revised timezone patch for clock applet made by Stephen Gildea + (Closes: #294591). + + Made load of gconf config quiet (Closes: #293204). + + Readded 'userprefix' in menu-method as it broke 'favorites://' in + nautilus (Closes: #295091). + + Added a menu-method to produce a customisable Debian menu made by + Bill Allombert (not activated by default, see README.Debian) + (Closes: #259400). + * Sjoerd Simons: + + New upstream release + + debian/patches/07_empty_desktop_keys.patch + - Removed. Merged upstream. + + -- Marc Dequènes (Duck) Sun, 13 Mar 2005 11:01:55 +0100 + +gnome-panel (2.8.2-2) unstable; urgency=medium + + * urgency high because menu bug is very bad for sarge, and custom + lauchers are an important feature which is unfortunatly broken. + * menu : (thanks to Bill Allombert) + + updated suggests and added conflicts for nice woody transition + (Closes: #291085). + + removed unuseful 'userprefix' in menu-method. + * Added patches : + + custom lauchers fix from Sjoerd Simons (Closes: #291185). + + run-application typing completion speed improvements (from + gnomezilla) (Closes: #287120). + * Corrected doc-base index location (Closes: #285650). + * Corrected descriptions to please lintian. + + -- Marc Dequènes (Duck) Fri, 28 Jan 2005 23:58:50 +0100 + +gnome-panel (2.8.2-1) unstable; urgency=low + + * New upstream release : + + no longer respond to delete event (Closes: #254972). + * CDBS Tweaks. + * Regenerated '05_clockapplet_reload_timezone.patch'. + * Regenerated relibtoolize patch. + * Updated policy to 3.6.1.1 (no changes needed). + * Patched or and uk translations : some translators should _really_ + learn how to read english. + + -- Marc Dequènes (Duck) Fri, 10 Dec 2004 02:31:05 +0100 + +gnome-panel (2.8.1-2) unstable; urgency=low + + * Upload to unstable. + + -- Sebastien Bacher Fri, 19 Nov 2004 13:14:18 +0100 + +gnome-panel (2.8.1-1) experimental; urgency=low + + * New upstream release. + * Removed '03_define_types.patch' not necessary anymore. + * Regenerated relibtoolize patch. + * Reintroduced '04_french_typo.patch' removed by mistake. + + -- Marc Dequènes (Duck) Thu, 14 Oct 2004 01:28:31 +0200 + +gnome-panel (2.8.0.1-1) experimental; urgency=low + + * New upstream release : + + clock applet : fixed padding on a 24px panel (Closes: #258323). + + fix panel orientation badly set/remembered (Closes: #216997). + + fix freakiness with autohiding and snap-to-screen-edge + (Closes #255608). + * [JHM] Added devhelp doc symlink (Closes: #273491) + * Dropped '04_french_typo.patch' now included upstream. + + -- Marc Dequènes (Duck) Sun, 3 Oct 2004 15:09:48 +0200 + +gnome-panel (2.8.0-2) experimental; urgency=low + + * Version 2.8.0 corrects : + + run in terminal works again (Closes: #262487). + + custom launcher command browser was lacking navigation entries + (Closes: #254443). + * Enabled evolution-data-server support (Closes: #272061). + * Updated versions in 'debian/control'. + + -- Marc Dequènes (Duck) Wed, 22 Sep 2004 00:50:02 +0200 + +gnome-panel (2.8.0-1) experimental; urgency=low + + * New upstream release. + * Updated watch file. + * Regenerated relibtoolize patch. + * Made build idempotent (typo patch for 'po/fr.po' was causing + problems) + * Added 'autotools-dev' to build dependencies to take advantage of the + CDBS automatic 'config.*' management. + + -- Marc Dequènes (Duck) Tue, 14 Sep 2004 21:16:42 +0200 + +gnome-panel (2.7.92-1) experimental; urgency=low + + * New upstream release : + + correct pointer detection problem on multiscreen causing several + problems like autihiding not always working (Closes: #178710) + + new add applet dialog (Closes: #247982) (bug obsoleted) + * NOTICE : panel settings dialog was removed upstream, use gconf + editor instead. + * Build-Depends/Depends versions update (Closes: #261327). + * Ported changes from 2.6.2-2 & 2.6.2-3. + * Removed 03_po_gu_fix.patch now included upstream. + * Patch added to correct a typo in french translation (Closes: + #268618). + * Corrected quoting problem in description (Closes: #244071). + * Patch from gnomezilla to reload timezone in clock applet (Closes: + #61611). + * Regenerated relibtoolize patch. + + -- Marc Dequènes (Duck) Sun, 12 Sep 2004 17:57:49 +0200 + +gnome-panel (2.7.91.1-1) experimental; urgency=low + + * New upstream development release. + * [debian/control.in] Bumped libwnck build dependency as per configure.in. + * [debian/patches/02_relibtoolise.patch] Regenerated. + * [debian/gnome-panel-data.install] Removed + debian/tmp/usr/share/control-center-2.0 . + * [debian/rules] Ensure at build time that all symbols are resolvable; make + the linker work a bit harder to speed up dynamic loading. + + -- J.H.M. Dassen (Ray) Sat, 21 Aug 2004 13:22:47 +0200 + +gnome-panel (2.7.4.1-1) experimental; urgency=low + + * New upstream release : + + updated translations (Closes: #247982, #247984). + * Regenerated relibtoolize patch. + + -- Marc Dequènes (Duck) Wed, 21 Jul 2004 18:24:00 +0200 + +gnome-panel (2.7.3-1) experimental; urgency=low + + * New upstream release + * Regenerated relibtoolize patch. + + -- Marc Dequènes (Duck) Tue, 6 Jul 2004 14:38:10 +0200 + +gnome-panel (2.7.1-1) experimental; urgency=low + + * New upstream release + + -- Marc Dequènes (Duck) Thu, 24 Jun 2004 20:30:55 +0200 + +gnome-panel (2.6.2-1) unstable; urgency=low + + * New upstream release. + * Updated some Build-Depends versions. + * Regenerated '02_relibtoolise.patch'. + + -- Marc Dequènes (Duck) Sat, 19 Jun 2004 11:14:06 +0200 + +gnome-panel (2.6.1-4) unstable; urgency=low + + * GNOME Team Upload. + * Upload in unstable. + * debian/control.in: + + Don't Build-Depends on evolution-data-server since this package is + not in unstable + + -- Sebastien Bacher Wed, 26 May 2004 16:38:41 +0200 + +gnome-panel (2.6.1-3) experimental; urgency=low + + * GNOME Team Upload. + * Rebuilt with new evolution-data-server (Closes: #250807). + + -- Sebastien Bacher Tue, 25 May 2004 19:38:22 +0200 + +gnome-panel (2.6.1-2) experimental; urgency=low + + * Added missing Build-Depends on 'libxmu-dev' (Closes: #247285). + + -- Marc Dequènes (Duck) Thu, 20 May 2004 18:39:24 +0200 + +gnome-panel (2.6.1-1) experimental; urgency=low + + * New upstream release : + - fixed visibility problem with solid-color background + (Closes: #179871). + * Recreated and split relibtoolize patch. + * Improved tight versioning rules. + * Deactivated gtk-doc documentation regeneration (see GNOME Policy on + Alioth for details). + * Removing all remaining 'Makefile' files in clean rule. + + -- Marc Dequènes (Duck) Wed, 21 Apr 2004 02:47:43 +0200 + +gnome-panel (2.6.0-5) experimental; urgency=low + + * Gustavo Noronha Silva: + - debian/gnome-panel-data.postinst: + + add a call to gconftool-2 to --load the .entries file which + contains the default panel configuration + + -- Gustavo Noronha Silva Thu, 15 Apr 2004 22:14:40 -0300 + +gnome-panel (2.6.0-4) experimental; urgency=low + + * Added missing Replaces for 'libpanel-applet2-dev' on 'gnome-panel- + data' for 2.4->2.6 transition. + * J.H.M. Dassen (Ray): + - [debian/patches/01_relibtoolise.patch] New. Cut down direct + dependencies. + * Jordi Mallach: + - debian/control.in: build-depend on an epoched libglade2-dev. + - debian/rules: don't let clean fail if find returns error. + + -- Marc Dequènes (Duck) Fri, 9 Apr 2004 04:02:26 +0200 + +gnome-panel (2.6.0-3) experimental; urgency=low + + * Rebuilt to use 'evolution-data-server'. + + -- Marc Dequènes (Duck) Mon, 29 Mar 2004 23:56:27 +0200 + +gnome-panel (2.6.0-2) experimental; urgency=low + + * Corrected 'gnome-applet' tight dependency on 'libpanel-applet2-0'. + * Corrected missing Build-Depends on 'cdbs'. + * Updated Depends & Recommends. + + -- Marc Dequènes (Duck) Sun, 28 Mar 2004 23:29:52 +0200 + +gnome-panel (2.6.0-1) experimental; urgency=low + + * New Maintainer (Closes: 238884). + * New upstream release: + + fix X resource leak (Closes: #235903). + + fix auto-open behaviour for drawers (Closes: #216577). + * Switched to CDBS. + * Updated Uploaders and using the 'gnome-pkg-tools' pkg. + * Added some Replaces/Conflicts for smoother upgrade. + * Compatibility level switched to 4, and old patches were deactivated. + * Cleaned dirty 'debian/*' made by CM, now using simple and clean CDBS + rules and '*.install' files. + * Improved 'debian/copyright'. + * Removed now unused 'go.uue' to genrate 'go.png'. + * 'debian/control', 'debian/changelog' and 'debian/copyright' are now + UTF-8 encoded. + + -- Marc Dequènes (Duck) Sun, 28 Mar 2004 23:21:32 +0200 + +gnome-panel (2.4.2-4) unstable; urgency=low + + * the right + + -- Christian Marillat Fri, 19 Mar 2004 15:39:39 +0100 + +gnome-panel (2.4.2-3) unstable; urgency=low + + * Remove DTD hack and update scrollkeeper dependency to 0.3.14-5 + * Add outputencoding="UTF-8" in menu-method file (Closes: #230804) + + -- Christian Marillat Sun, 8 Feb 2004 11:09:26 +0100 + +gnome-panel (2.4.2-2) unstable; urgency=low + + * Suggests gnome-system-tools for gnome-panel, needed if you want to set + up the system time (Closes: #229043) + + -- Christian Marillat Fri, 23 Jan 2004 11:52:49 +0100 + +gnome-panel (2.4.2-1) unstable; urgency=low + + * New upstream release. + * Remove 05_manpage patch, included by upstream + + -- Christian Marillat Fri, 16 Jan 2004 10:22:17 +0100 + +gnome-panel (2.4.1-7) unstable; urgency=low + + * debian/prerm Unregister schemas file from the database. + + -- Christian Marillat Fri, 9 Jan 2004 15:48:01 +0100 + +gnome-panel (2.4.1-6) unstable; urgency=low + + * Add a version (>= 2.4.0) to the gnome-applets recommends (Closes: #223550) + + -- Christian Marillat Wed, 31 Dec 2003 09:21:18 +0100 + +gnome-panel (2.4.1-5) unstable; urgency=low + + * Add a -dbg package for libpanel-applet2 library (Closes: #220734) + * Add missing manpages. + + -- Christian Marillat Sun, 7 Dec 2003 11:05:31 +0100 + +gnome-panel (2.4.1-4) unstable; urgency=low + + * Panel should conflicts with metacity <= 2.6.0 (Closes: #217122) + * Patch from bugzilla to fix duplicate entries in the help message (Closes: #183130) + * debian/control update build-dependecies to GNOME 2.4 packages (Closes: #217497) + + -- Christian Marillat Sat, 25 Oct 2003 09:54:07 +0200 + +gnome-panel (2.4.1-3) unstable; urgency=low + + * Register default panel configuration with gconftool (Closes: #216600) + + -- Christian Marillat Mon, 20 Oct 2003 01:19:20 +0200 + +gnome-panel (2.4.1-2) unstable; urgency=low + + * gnome-panel-data should replaces gnome-desktop-data (Closes: #216458) + * Rebuild to remove liblinc dependency in the -dev package + + -- Christian Marillat Sun, 19 Oct 2003 10:01:36 +0200 + +gnome-panel (2.4.1-1) unstable; urgency=low + + * New upstream release. + * Should suggest a terminal emulator for the run program dialog (Closes: #214650) + * Don't need to depends on xbase-clients + + -- Christian Marillat Sat, 18 Oct 2003 10:36:24 +0200 + +gnome-panel (2.2.2.2-2) unstable; urgency=low + + * Change userprefix in menu-method. You can access user generated Debian + menus with favorites:/// in nautilus + * Use theme folder icons for Debian menus (Closes: #207494) + * New patch to fix manpage entry for gnome-panel (Closes: #212037) + + -- Christian Marillat Sun, 21 Sep 2003 23:33:11 +0200 + +gnome-panel (2.2.2.2-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 15 Jul 2003 15:28:51 +0200 + +gnome-panel (2.2.2.1-2) unstable; urgency=low + + * Patch 04_drawer.c to fix a panel crash when a new drawer is added + (Closes: #198695) + + -- Christian Marillat Sat, 28 Jun 2003 14:35:49 +0200 + +gnome-panel (2.2.2.1-1) unstable; urgency=low + + * New upstream release + * Add a gnome-control-center (>= 2.2.2) dependency (Closes: #198371) + * New patch (01) to fix broken translation in bn.po (Closes: #193635) + + -- Christian Marillat Sun, 22 Jun 2003 15:44:58 +0200 + +gnome-panel (2.2.2-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Fri, 16 May 2003 17:45:28 +0200 + +gnome-panel (2.2.1-2) unstable; urgency=low + + * Only add longtitle as tooltip in Debian menu (Closes: #186697) + * Update section + * Add go icon + + -- Christian Marillat Sun, 13 Apr 2003 08:29:10 +0200 + +gnome-panel (2.2.1-1.1) unstable; urgency=low + + * zero source change NMU to resolve problems on ia64 that binary NMU caused + + -- Bdale Garbee Fri, 11 Apr 2003 02:13:24 -0600 + +gnome-panel (2.2.1-1) unstable; urgency=low + + * New upstream release. + * Remove notification applet patch + + -- Christian Marillat Tue, 11 Mar 2003 15:51:00 +0100 + +gnome-panel (2.2.0.1-2) unstable; urgency=low + + * Patch to fix the notification applet crash (Closes: #180133) + + -- Christian Marillat Mon, 17 Feb 2003 16:04:23 +0100 + +gnome-panel (2.2.0.1-1) unstable; urgency=low + + * New upstream release. + * Remove replaces libpanel-applet-dev in the -dev package. + + -- Christian Marillat Tue, 4 Feb 2003 14:36:28 +0100 + +gnome-panel (2.2.0-2) unstable; urgency=low + + * Conflicts with system-tray-applet (Closes: #178278) + * Add versioned conflicts for gnome-core (Closes: #178401) + + -- Christian Marillat Sat, 25 Jan 2003 23:52:18 +0100 + +gnome-panel (2.2.0-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 21 Jan 2003 15:33:47 +0100 + +gnome-panel (2.1.90.1-1) unstable; urgency=low + + * New upstream release. + * Add a quick-lounge-applet (<= 0.98-1) conflicts, this applet crash the panel. + * Launcher are restored properly (Closes: #172385) + * Menu panel doesn't disappears (Closes: #172848) + * Fixes panel hogging the CPU when hide_delay and show_delay are zero (Closes: #174002) + * Fix inbox monitor randomly displays wildly inaccurate info (Closes: #168877) + * debian/control Add yelp and gnome2-user-guide in Suggests for the panel + + -- Christian Marillat Sat, 18 Jan 2003 17:12:02 +0100 + +gnome-panel (2.0.11-3) unstable; urgency=low + + * Bump Standards-Version to 3.5.8 + + -- Christian Marillat Sat, 28 Dec 2002 17:55:58 +0100 + +gnome-panel (2.0.11-2) unstable; urgency=low + + * Move libpanel documentation in a -doc package (Closes: #171007) + + -- Christian Marillat Fri, 20 Dec 2002 16:18:00 +0100 + +gnome-panel (2.0.11-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Fri, 15 Nov 2002 14:40:58 +0100 + +gnome-panel (2.0.10-2) unstable; urgency=low + + * Upload to unstable + * Gnome-hints has been removed (Closes: #152335) + * Fix in clock update (Closes: #156401) + * Applets save their properties (Closes: #135569) + * No more buttons in the tasklist applet (Closes: #116205) + * Docklet has been removed (Closes: #137450) + * Launcher properties are now saved (Closes: #139827) + * Now menus are always sorted (Closes: #150649) + * kmail doesn't crash the panel (Closes: #146706) + * The tasklist isn't dynamic resizable (Closes: #89752) + * No more problem with windowmaker and the panel (Closes: #94592) + * No more duplicate entrie in the main menu (Closes: #97473) + * No more memory leak in the tasklist applet (Closes: #103880) + * Tasklist doen't display app titles (Closes: #112059) + * Netscape entry menu is fixed (Closes: #135992) + * No more "Fill window thumbnails" option in tasklist (Closes: #151134) + * Tooltips in the arrows panel are correctly displayed (Closes: #113642) + * Completion in run dialog work with ctrl-TAB (Closes: #75665) + * gmenu has been removed (Closes: #95014) + * menu have a mozilla entry (if mozilla is present) (Closes: #135993) + * Xemacs.desktop has been removed (Closes: #148500) + + -- Christian Marillat Mon, 28 Oct 2002 16:08:15 +0100 + +gnome-panel (2.0.10-1) experimental; urgency=low + + * New upstream release. + * gnome-panel should depends on xbase-clients for xrdb + * Add build-dependency for xbase-clients + + -- Christian Marillat Mon, 14 Oct 2002 16:47:55 +0200 + +gnome-panel (2.0.9-4) experimental; urgency=low + + * Upload with original tarball + + -- Christian Marillat Sun, 29 Sep 2002 17:45:08 +0200 + +gnome-panel2 (2.0.9-3) experimental; urgency=low + + * Upload without the 2 suffix + + -- Christian Marillat Sat, 28 Sep 2002 18:46:17 +0200 + +gnome-panel2 (2.0.9-2) experimental; urgency=low + + * Add libmpg3-dev in build-depends (Closes: #160758) + * Update to standards version 3.5.7 + * -dev package should depends on the same lib version + + -- Christian Marillat Mon, 16 Sep 2002 11:35:00 +0200 + +gnome-panel2 (2.0.9-1) experimental; urgency=low + + * New upstream release. + * Update lignome-ui-dev dependencies to 2.0.5-2 + + -- Christian Marillat Fri, 6 Sep 2002 13:50:51 +0200 + +gnome-panel2 (2.0.8-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Thu, 5 Sep 2002 19:00:46 +0200 + +gnome-panel2 (2.0.7-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 27 Aug 2002 11:19:52 +0200 + +gnome-panel2 (2.0.6-2) experimental; urgency=low + + * Add scrollkeeper in build-depends + * Build against the latest libgnomevfs2-dev 2.0.2-4 + + -- Christian Marillat Fri, 16 Aug 2002 17:36:42 +0200 + +gnome-panel2 (2.0.6-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 12 Aug 2002 19:44:49 +0200 + +gnome-panel2 (2.0.5-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Thu, 8 Aug 2002 16:46:21 +0200 + +gnome-panel2 (2.0.4-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 5 Aug 2002 19:35:26 +0200 + +gnome-panel2 (2.0.3-2) experimental; urgency=low + + * Recompiled against the latest lignome-vfs to remove libssl dependency. + + -- Christian Marillat Fri, 2 Aug 2002 17:14:51 +0200 + +gnome-panel2 (2.0.3-1) experimental; urgency=low + + * New upstream release. + * Remove gmenu entry in menu file (Closes: #153213) + * debian/menu s/panel/gnome-panel/ + + -- Christian Marillat Tue, 30 Jul 2002 17:08:21 +0200 + +gnome-panel2 (2.0.2-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 15 Jul 2002 15:31:05 +0200 + +gnome-panel2 (2.0.1-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 17 Jun 2002 16:07:40 +0200 + +gnome-panel2 (2.0.0-1) experimental; urgency=low + + * New upstream release. + * Replace "Distribution menu" by "Debian menu" + + -- Christian Marillat Mon, 10 Jun 2002 16:51:50 +0200 + +gnome-panel2 (1.5.24-2) experimental; urgency=low + + * Build against the latest libraries. + + -- Christian Marillat Sun, 9 Jun 2002 18:29:23 +0200 + +gnome-panel2 (1.5.24-1) experimental; urgency=low + + * New upstream release. + * Remove call to Internet DTD (Closes: #148899) + * Call scrollkeeper-update in gnome-panel-data2.postrm + + -- Christian Marillat Tue, 4 Jun 2002 17:22:35 +0200 + +gnome-panel2 (1.5.23-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 28 May 2002 15:51:18 +0200 + +gnome-panel2 (1.5.22-2) experimental; urgency=low + + * debian/rules Add GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 in install target. + * gnome-panel2 should depends on gnome-desktop-data + * debian/gnome-panel-data2.postinst check if schemas files are present + before calling gconftool-2 + + -- Christian Marillat Mon, 27 May 2002 16:01:57 +0200 + +gnome-panel2 (1.5.22-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 20 May 2002 21:58:18 +0200 + +gnome-panel2 (1.5.21-1) experimental; urgency=low + + * New upstream release. + * Add support for DEB_HOST_GNU_TYPE DEB_BUILD_GNU_TYPE and + DEB_BUILD_OPTIONS + + -- Christian Marillat Wed, 15 May 2002 20:39:24 +0200 + +gnome-panel2 (1.5.20-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Sun, 12 May 2002 14:25:08 +0200 + +gnome-panel2 (1.5.19-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 29 Apr 2002 20:51:20 +0200 + +gnome-panel2 (1.5.18-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 22 Apr 2002 16:41:41 +0200 + +gnome-panel2 (1.5.17-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Wed, 17 Apr 2002 15:46:23 +0200 + +gnome-panel2 (1.5.16-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Mon, 1 Apr 2002 22:40:37 +0200 + +gnome-panel2 (1.5.15-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Fri, 29 Mar 2002 17:01:04 +0100 + +gnome-panel2 (1.5.12-2) experimental; urgency=low + + * Add libwnck-dev in build-depends (Closes: #137954) + + -- Christian Marillat Wed, 13 Mar 2002 10:51:00 +0100 + +gnome-panel2 (1.5.12-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 5 Mar 2002 14:47:36 +0100 + +gnome-panel2 (1.5.11-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Tue, 26 Feb 2002 15:37:43 +0100 + +gnome-panel2 (1.5.10-2) experimental; urgency=low + + * Replace gettext by intltoo in build-depends + + -- Christian Marillat Mon, 25 Feb 2002 15:40:43 +0100 + +gnome-panel2 (1.5.10-1) experimental; urgency=low + + * new upstream release. + + -- Christian Marillat Mon, 18 Feb 2002 22:06:48 +0100 + +gnome-panel2 (1.5.9-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Fri, 15 Feb 2002 00:38:51 +0100 + +gnome-panel2 (1.5.7-1) experimental; urgency=low + + * New upstrema release. + + -- Christian Marillat Tue, 5 Feb 2002 14:41:01 +0100 + +gnome-core2 (1.5.4-1) experimental; urgency=low + + * New upstream release. + + -- Christian Marillat Sun, 20 Jan 2002 16:21:40 +0100 + +gnome-core (1.4.0.4-16) unstable; urgency=low + + * Fix typo in gnome-terminal.wrapper (Closes: #127768) + * Remove gnome-hint patche (Closes: #121390, #129184) + * debian/control Replace libpng-dev by libpng2-dev in Build-Depends + (Closes: #128377) + + -- Christian Marillat Mon, 14 Jan 2002 15:04:52 +0100 + +gnome-core (1.4.0.4-15) unstable; urgency=low + + * Build against the latest gnome-libs to update the libzvt2 dependency + (Closes: #127309, #127271) + * debian/control Replace libpng2-dev by libpng-dev in Build-Depends. + * debian/control Build-depends on libzvt-dev (>= 1.4.1.2-9) + + -- Christian Marillat Tue, 1 Jan 2002 15:27:43 +0100 + +gnome-core (1.4.0.4-14) unstable; urgency=low + + * Fix typo in gnome-terminal.1 (Closes: #123073) + * Fix base page for doc-base in libpanel-applet-dev package. + * Fix typo in gnome-help documentation (Closes: #126566) + * Apply patch to allows meta functionnality in gnome-terminal (Closes: #50427) + + -- Christian Marillat Thu, 27 Dec 2001 14:47:36 +0100 + +gnome-core (1.4.0.4-13) unstable; urgency=low + + * Default font for gnome-terminal is "fixed" only (Closes: #117126) + * Patch against gnome-hint.c Don't use gettext for font descriptor + (Closes: #116606) + * Patch against gnome-about/Makefile.am to use new gdk_pixbuf include path + (Closes: #120312) + * Revert my change on logout.c Only root can shutdown/reboot from the + panel (Closes: #119316, #120127) + + -- Christian Marillat Tue, 20 Nov 2001 11:36:05 +0100 + +gnome-core (1.4.0.4-12) unstable; urgency=low + + * gnome-wm honour --default-wm (Closes: #115668) + * Build against the latest gnome-libs + + -- Christian Marillat Sun, 21 Oct 2001 14:11:19 +0200 + +gnome-core (1.4.0.4-11) unstable; urgency=low + + * debian/control lynx comeback in Recommends (Closes: #114142) + * debian/control replaces xml-i18n-tools by intltool (Closes: #115024) + * Fix automake 1.5 errors. Thanks to Denis Barbier (Closes: #114369) + * Build against the latest orbit (Closes: #115309) + + -- Christian Marillat Fri, 12 Oct 2001 10:46:49 +0200 + +gnome-core (1.4.0.4-10) unstable; urgency=low + + * Fix typo in panel/panel.hints (Closes: #113590) + * Replace lynx by w3m (Closes: #113613) + * Move gnome-terminal.desktop in gnome-terminal package (Closes: #113736) + * Move gnome-help.desktop in gnome-help package + * debian:control Add Replaces: gnome-panel-data (<= 1.4.0.4-9) for above + * Patch against gsm/logout.c Now you can reboot/halt your machine from the + panel. This only work for root, because shutdown doesn't understand the + -a option. Read README.debian in gnome-panel package. + * debian/rules Remove less files in clean target (Closes: #114020) + + -- Christian Marillat Mon, 1 Oct 2001 11:34:06 +0200 + +gnome-core (1.4.0.4-9) unstable; urgency=low + + * Add Debian menu for panel and gmenu (Closes: #112176) + * Remove /var/lib/gnome on purge (Closes: #113005) + * Remove /etc/gnome/config on purge (Closes: #112994) + * Remove /etc/gnome on purge (Closes: #112995) + * debian/control replace cygnus-stylesheets by docbook-utils + + -- Christian Marillat Mon, 24 Sep 2001 18:39:19 +0200 + +gnome-core (1.4.0.4-8) unstable; urgency=high + + * High urgency, because the current release in testing has a missing + dependency on libpanel-applet0 and the panel package doesn't work if + libpanel-applet0 isn't installed (Closes: #111517) + * debian/control for gnome-help, move lynx from depends to recommends + (Closes: #109652) + * debian/control gnome-panel suggests fortune-mod (Closes: #110865) + * debian/control gnome-help suggests gnome-users-guide not + gnome-users-guide-en (Closes: #111200) + * Don't change cursor color (Closes: #97697) + * Change default font for gnome-terminal (Closes: #111319) + + -- Christian Marillat Fri, 7 Sep 2001 15:06:07 +0200 + +gnome-core (1.4.0.4-7) unstable; urgency=low + + * Fix path in gnome-session.1 (Closes: #107724) + * debian/*.sgml Use docbook 4.1 + * debian/control gnome-help-data Replaces gnome-terminal (<= 1.0.55-2) + (CLoses: #107948) + + -- Christian Marillat Wed, 8 Aug 2001 08:07:56 +0200 + +gnome-core (1.4.0.4-6) unstable; urgency=low + + * debian/rules for dh_makeshlibs replace libcapplet0 by libpanel-applet0 + (Closes: #105772) + + -- Christian Marillat Wed, 18 Jul 2001 19:02:59 +0200 + +gnome-core (1.4.0.4-5) unstable; urgency=low + + * Patch against gnome-edit to use EDITOR if the default gnome editor is + unavailable. + * Remove gnome-wm patch, and move the patched file in debian/ + * debian/gnome-wm Try to exec $WINDOW_MANAGER before x-window-manager + (Closes: #103430 + * New patch from Michael Urman to hide task names in tasklist_applet + (Closes: #104587) + + -- Christian Marillat Sat, 14 Jul 2001 16:58:12 +0200 + +gnome-core (1.4.0.4-4) unstable; urgency=low + + * Gnome-help Provides: man-browser, www-browser, info-browser + * Switch to debhelper V3 + * Change libraries versionning to (>= 1.4.0.2-3) instead of the latest + package number. + * Build-depends on groff-base instead of groff + + -- Christian Marillat Fri, 22 Jun 2001 17:02:37 +0200 + +gnome-core (1.4.0.4-3) unstable; urgency=low + + * New patch: Allows to save/load the keyboard secure state (Closes: #83028) + * New patch: Remove a warning in configure + * gnome-help replace gnome-panel-data (Closes: #99499) + * Build-depends on xml-i18n-tools (>= 0.8.4.cvs.20010530-1) (Close: #98784) + + -- Christian Marillat Sat, 2 Jun 2001 14:41:45 +0200 + +gnome-core (1.4.0.4-2) unstable; urgency=low + + * New patch: Replace Distribution by Debian in configuration dialog box. + * New patch: Upstream patch to allow Debian menu in default configuration. + * New patch: Fix some wrong path. + * Move gnome-feedback doc from gnome-help-data to gnome-core. + + -- Christian Marillat Tue, 15 May 2001 15:36:51 +0200 + +gnome-core (1.4.0.4-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Wed, 9 May 2001 23:56:27 +0200 + +gnome-core (1.4.0.3-2) unstable; urgency=low + + * Remove debugging code (/tmp/languages file) + + -- Christian Marillat Mon, 7 May 2001 16:48:18 +0200 + +gnome-core (1.4.0.3-1) unstable; urgency=low + + * New upstream release. + * New: tooltips for long task names in tasklist_applet (Closes: #63898) + + -- Christian Marillat Thu, 3 May 2001 15:51:58 +0200 + +gnome-core (1.4.0.2-3) unstable; urgency=low + + * Fix wrong dif.gz file (Closes: #94499) + * Build against the latest lignome-dev (Closes: #95301, #95691) + * gnome-terminal should depends on gnome-bin (Closes: #95498) + * Doesn't build against gtkhtml this break fonts displaying (Closes: #92187) + + -- Christian Marillat Tue, 1 May 2001 11:03:14 +0200 + +gnome-core (1.4.0.2-2) unstable; urgency=low + + * New/old patch against manpages, never applied by upstream. + * gnome-help depends on lynx. + * Use x-terminal-emulator in gnome-download instead of xterm. + * Move gnome-convert and gnome-download from gnome-core to gnome-help. + * Move gnome-login-check from gnome-core to gnome-session. + * Move gnome-panel-add-launcher from gnome-core to gnome-panel. + * Move sesion-properties* from gnome-core to gnome-session. + * debian/control Add Replaces for the changes above. + * Write manpages (Closes: #87085) + + -- Christian Marillat Tue, 17 Apr 2001 18:54:15 +0200 + +gnome-core (1.4.0.2-1) unstable; urgency=low + + * New upstream release. + * Build-depends on latest gettext (Closes: #93198) + * Icon box in menu editor is back (Closes: #91938) + * Build-depends on latest xml-i18n-tools and libgnome-dev + + -- Christian Marillat Wed, 11 Apr 2001 15:16:20 +0200 + +gnome-core (1.4.0.1-2) unstable; urgency=low + + * Build depends on versionned gettext 0.10.35-17 (Closes: #93198) + * Write manpage for gnome-session and add docbook-to-man in build-depnds + * Write manpages for gnome-help (Closes: #87089) + + -- Christian Marillat Sat, 7 Apr 2001 15:52:40 +0200 + +gnome-core (1.4.0.1-1) unstable; urgency=low + + * New upstream release. + * debian/gnome-terminal.wrapper change -T by -t (Closes: #90847) + * debian/gnome-session.README.debian remove references to .xsession. This + is now obsolete by the new x-session-manager scheme. + + -- Christian Marillat Sun, 1 Apr 2001 15:01:51 +0200 + +gnome-core (1.4.0-2) unstable; urgency=low + + * Build depends on libglade-gnome0-dev (>= 0.16-1) (Closes: #90416) + * debian/control Add Build-Conflicts: libgtkhtml-dev (>= 0.7-1) (Closes: #90700) + + -- Christian Marillat Thu, 22 Mar 2001 16:44:12 +0100 + +gnome-core (1.4.0-1) unstable; urgency=low + + * New upstream release. + * Gnome-core replaces gnome-control-center 1.2.3-1 (Closes: #90124) + * Remove manpages patche included by upstream. + * gnome-session don't always saves session on logout (Closes: #89630) + * Can add a launcher in the panel (Closes: #90018) + * Deskguide don't crashes on Fill with mini-images (Closes: #86952) + * Deskguide don't fail to run (Closes: #89769) + * Pager applet don't fail to run (Closes: #89025) + + -- Christian Marillat Mon, 19 Mar 2001 13:01:26 +0100 + +gnome-core (1.3.1-2) unstable; urgency=low + + * Remove taslisk-applet manpage (Closes: #88994) + * New patch against gnome-terminal.1 (Closes: #89005) + * Move /usr/lib/libtasklist_applet.so in libpanel-applet0 + (Closes: #89053, #89008, #89012, #89091, #89003) + * Gnome-terminal replace gnome-help-data (<= 1.0.55-2) (Closes: #87910) + + -- Christian Marillat Sat, 10 Mar 2001 10:45:14 +0100 + +gnome-core (1.3.1-1) unstable; urgency=low + + * New upstream release. + * Removed default.session patch + * debian/control Add Replaces: gnome-control-center (<= 1.2.2-10), because + the session-properties-capplet is now in this package. + * debian/{postinst,prerm} Call scrollkeeper + * debian/control Add scrollkeeper, xml-i18n-tools and libglade-gnome0-dev in + build-depends and scrollkeeper in depends for gnome-core + * Menu and laucnh keys works now (Closes: #86955) + * Dead keys work in gnome-terminal (Closes: #63102) + * Gnome-terminal isn't broken (Closes: #86752) + * New patch htmlurl.h (This file was broken by upstream author) + * XFMail doesn't crash the tasklist applet in this release (Closes: #88515) + * debian/gnome-core.menu New file for the session properties capplet + + -- Christian Marillat Mon, 5 Mar 2001 11:40:15 +0100 + +gnome-core (1.2.4-11) unstable; urgency=low + + * Update (again) the Build-depends field (Closes: #87419) + * Add a debian directory for the gnome-help-browser and add suggest doc-base + for gnome-help. Now we can watch debian documentation registered with doc-base. + * Add a lintian override file for libpanel-applet0 + + -- Christian Marillat Sun, 25 Feb 2001 16:14:09 +0100 + +gnome-core (1.2.4-10) unstable; urgency=low + + * Update the Build-depends field (Closes: #86441, #87419) + * Call update-alternatives only in remove (gnome-terminal, gnome-session) (Closes: #87327, #87328) + + -- Christian Marillat Sat, 24 Feb 2001 18:03:20 +0100 + +gnome-core (1.2.4-9) unstable; urgency=low + + * Remove abandonned /etc/CORBA/servers/bad-applet.goad (Closes: #84950) + * Build against the latest gnome-libs (1.2.11) (Close: #85932) + + -- Christian Marillat Wed, 14 Feb 2001 13:49:26 +0100 + +gnome-core (1.2.4-8) unstable; urgency=low + + * debian/control Add Replaces: gnome-help-data (<< 1.0.55-2) for + gnome-help (Closes: #80974) + * debian/gnome-help.mime Rewrote (Closes: #82891) + * debian/control gnome-core depends on gnome-bin (Closes: #82951) + * Wrote gnome-panel.README.Debian (Closes: #82954) + + -- Christian Marillat Mon, 22 Jan 2001 16:04:58 +0100 + +gnome-core (1.2.4-7) unstable; urgency=low + + * Added gnome-bin (>= 1.2.0) in gnome-session Depends field (Closes: #80589, #80595, #80733) + + -- Christian Marillat Wed, 27 Dec 2000 19:24:08 +0100 + +gnome-core (1.2.4-6) unstable; urgency=low + + * Apply patch to gnome-run to call x-terminal-emulator (Closes: #80219) + * debian/gnome-terminal.wrapper This is -t not -T close (Closes: #80405) + + -- Christian Marillat Sun, 24 Dec 2000 03:27:12 +0100 + +gnome-core (1.2.4-5) unstable; urgency=low + + * Install gnome-terminal.wrapper as x-terminal-emulator and remove + debian/patches/gnome-terminal.dpatch (Closes: 64326) + Thanks to Eric Gillespie, Jr. + * Add Recommends: gnome-applets on gnome-panel (Closes: #72208) + * gnome-sesion provides x-session-manager and install alternative (Closes: #60667) + * Added hints=Gnome for all menu files. + + -- Christian Marillat Wed, 20 Dec 2000 23:19:55 +0100 + +gnome-core (1.2.4-4) unstable; urgency=low + + * Call x-terminal-emulator in gnome-wm and add depends on the latest debianutils + for gnome-session. Thanks to Joseph Carter for the file + (Closes: #79776) + * Rewrote default.session patch + * Add patch form Doug Larrick for gwmthumbnail.c (Closes: #78550) + + -- Christian Marillat Sun, 17 Dec 2000 12:04:54 +0100 + +gnome-core (1.2.4-3) unstable; urgency=low + + * Change gnome-help.mime to call the right file (Closes: #77986) + Thanks Malcolm Parsons for the patch. + * Patch gsm/default.in (two entries with same id) (Closes: #78276) + Thanks to Normal User (Nice name) + * Move gnome-control-center from Depends to Suggests. + * Remove libgtkhtml-dev from Build-Depends (Closes: #79527) + + -- Christian Marillat Wed, 13 Dec 2000 18:01:34 +0100 + +gnome-core (1.2.4-2) unstable; urgency=low + + * Remove README and NEWS files (Closes: #77250) + * Disable thumbnails by default in deskguide_applet (Closes: #77205) + * debian/rules --with-window-manager is now sawfish (was x-window-manager) + and rewrote debian/patches/gnome-wm.dpatch to remove x-window-manager (Closes: #77401) + * Should close this old bug (Closes: #51198) + * Patch gnome-edit to use x-terminal-emulator instead of xterm. + + -- Christian Marillat Mon, 20 Nov 2000 11:35:55 +0100 + +gnome-core (1.2.4-1) unstable; urgency=low + + * New upstream release. + + -- Christian Marillat Thu, 16 Nov 2000 00:43:15 +0100 + +gnome-core (1.2.3.1-1) unstable; urgency=low + + * New upstream release. + * Add gnome-help example and manpage in gnome-help package (Closes: #49977) + * This release should close these old bugs (Closes: #60561, #60768, #45053) + * Gnome-panel don't use all CPU time (Closes: #75251, #60209) + * Remove gmenu patch included by upstream. + + -- Christian Marillat Wed, 8 Nov 2000 17:09:42 +0100 + +gnome-core (1.2.3-1) unstable; urgency=low + + * New upstream release. + * Debian menus aren't empty (Closes: #70470) + * Launcher can find icon (Closes: #62502) + + -- Christian Marillat Tue, 24 Oct 2000 15:51:11 +0200 + +gnome-core (1.2.2.1-3) unstable; urgency=low + + * Add gnome-terminal.prerm for update-alternatives --remove (Closes: #74451) + * Patch gnome-terminal to accept -T option (Closes: #74450) + * Move README.debian in gnome-session package (Closes: #60440) + * mesg work in gnome-terminal (Closes: #71728) + * Upstream fix these old bugs in Gnome-terminal + Problem with menubar (Closes: #57516) + Problem with console-apt Closes: #60079) + Problem with screen (Closes: #50156) + * Binaries don't should go in /usr/X11R6/bin (Closes: #24031) + Quoting Debian policy : + "Packages using the X Window System should abide by the FHS standard" + "whenever possible; they should install binaries, libraries, manual" + "pages, and other files in FHS-mandated locations wherever possible." + "This means that files must not be installed into /usr/X11R6/bin/'" + * hostname isn't harcoded (Closes: #72536) + * Error messages mention Lynx (Closes: #62216) + * Display correctly deskuse.html (Closes: #49974) + * Add patch from malcolm (Closes: #64820) + + -- Christian Marillat Sat, 14 Oct 2000 23:39:49 +0200 + +gnome-core (1.2.2.1-2) unstable; urgency=low + + * Typo in debian/gnome-terminal.postinst + * Add gnome-terminal manpage (Closes: #69188) + * Closes: #63103 already closed in 1.2.1-0.2 (typo in debian/changelog) + * Gnome-terminal write to /var/run/utmp (Closes: #59053) + * delete/backspace keys works (Closes: #57198) + * Install GnomeHelp file in /etc/gnome/config (Closes: #73012) + * Convert png icons in xpm for Debian menu. + * Rearange documentation for dhelp (Closes: #56672) + + -- Christian Marillat Thu, 5 Oct 2000 00:59:44 +0200 + +gnome-core (1.2.2.1-1) unstable; urgency=low + + * New upstream release. + * Patch all manpages (Closes: #70009) + * gnome-panel 1.0.55-2.0.1 (sparc) is now installable (Closes: #69075, #71570) + * gmenu don't jam up all translations (Closes: #46446) + * panel remember its configuration between session + (Closes: #47734, #54190) + * Icons are now centered (Closes: #63868) + * Bugs closed by previous NMU in gnome-panel (Closes: #40036, #52584, #54755, + #58278, #61083, #69428)) + * libgen_util_applet.so installed in 1.2.1-0.2 (Closes: #69463) + * debian/control remove Conflicts: asclock (Closes: #52077) + * gnome-help 1.0.55-2.0.1 (sparc) is now installable (Closes: #69356) + * Bugs closed by previous NMU in gnome-help (Closes: #49734, #56081, #58679, #58973) + * debian/control move gmc from Recommends to Suggests (Closes: #59415) + * The first search in gnome-wm search is x-window-manager + (Closes: #50940, #65969, #62143) + * Bug closed in 1.2.2-1 (README.debian in gnome-session package) (Closes: #66219) + * Bugs closed by previous NMU in gnome-terminal + (Closes: #64579, #63592, #63332, #56584, #55477, #54428) + * gnome-terminal provide x-terminal-emulator (Closes: #61805, #53994, #56225) + + -- Christian Marillat Wed, 27 Sep 2000 16:02:16 +0200 + +gnome-core (1.2.2-1) unstable; urgency=low + + * New maintainer, thanks James. + * New upstream release. + * Switch to debhelper V2 + * Move README.debian in gnome-session package (Closes: #65235) and + update this file (Closes: #71339) + * Bug closed in 1.2.1-0.2 (Install missing libraries) (Closes: #69590, #70483) + * Bugs closed in 1.2.1-0.1 (typo close instead closes) (Closes: #53764, #54050) + * Remove gtkhtml patch. + * The desk guide show thumbnail (Closes: #72359) + * Missing package under sparc (Closes: #71438) + * debian/control add Conflicts: libgnome32 (<< 1.2.0-1) for gnome-panel (Closes: #72039) + * Added icons in Debian menu. + * Eject in drivemount check if '-u' is available (Closes: #63954) + * Patch gmenu to find Debian menu. + + -- Christian Marillat Tue, 26 Sep 2000 17:34:23 +0200 + +gnome-core (1.2.1-0.2) unstable; urgency=low + + * NMU. + * Install these libraries libfish_applet.so libgen_util_applet.so + libpanel_status.so (Closes: #69428, #69590) + * Copy latest gnome aclocal in macros/ and run macros/autogen.sh + This is needed to build gnome-help-browser against libgtkhtml4. + * In debian/control + gnome-session depends on gnome-panel (>= ${Source-Version}). + gnome-help depends on gnome-core (>= 1.2.0-0.1) no Source-Version. + gnome-terminal don't depends on gnome-core. + * URL's are clickable in gnome-terminal (Closes: 63103). + * debian/gnome-panel.undocumented removed printer_applet.1 + * Cut and paste work in gnome-terminal (Closes: #63592). + + -- Christian Marillat Wed, 23 Aug 2000 21:23:36 +0200 + +gnome-core (1.2.1-0.1) unstable; urgency=low + + * New upstream release (Closes: #58806, #66467) + * NMU. + * Standards-Version to 3.1.1.1 Added Build-depends field. + * Removed patches: dialer, drivemount-floppy, modemlights, term, + help-browser, debian-menu, url-match. + * Added patches: gtkhtml. + * Build against libgtkhtml3. Closes: #58679, #36806, #49734 + * Default manpath and infopath are wrong. Closes: #56081 + * gmenu segfaults. Close: #53764, #54050 + * gnome-panel: panel no longer works. Closes: #58278 + * gnome-panel: gnomepager-applet should put braces around. Closes: #52584 + * Backspace and delete work correctly. Closes: #54428 + * TERM never select xterm-debian. Closes: #56584, #55477, #64579 + * Disable arrows option is now saved. Closes: #54755 + * No more files in /usr/share. Closes: #61083 + * Show debian menus. Closes #66214 + * New help documentation for panel. Closes: #40036 + * Gnome-terminal write to /var/run/utmp. Closes #59053 + * gnome-terminal provide x-terminal-emulator. Closes #61805, #56225 + * README.Debian is here. Closes: #65235 + + -- Christian Marillat Tue, 25 Jul 2000 19:09:21 +0200 + +gnome-core (1.0.55-2) frozen unstable; urgency=low + + * Make x-window-manager run first by gnome-wm script to conform to + debian policy (Closes: #61617) (This is an important bug) + + -- James LewisMoss Sun, 21 May 2000 19:31:19 -0400 + +gnome-core (1.0.55-1) unstable; urgency=low + + * New upstream. + + -- James LewisMoss Sun, 2 Jan 2000 07:32:36 -0500 + +gnome-core (1.0.54-2) unstable; urgency=low + + * Fix the gnome-pager forgets size settings bug (was saved to wrong + section). Closes: #49839, #46845. + + -- James LewisMoss Fri, 12 Nov 1999 07:54:46 -0500 + +gnome-core (1.0.54-1) unstable; urgency=low + + * New upstream. + + -- James LewisMoss Thu, 4 Nov 1999 23:20:14 -0500 + +gnome-core (1.0.53-4) unstable; urgency=low + + * New maintainer. + + -- James LewisMoss Mon, 25 Oct 1999 23:17:31 -0400 + +gnome-core (1.0.53-3) unstable; urgency=low + + * Ok, I made a mistake by setgiding gnome-terminal to + utmp. Reverted the change. Closes: #47960 + + -- Raphael Hertzog Mon, 18 Oct 1999 19:17:27 +0200 + +gnome-core (1.0.53-2) unstable; urgency=low + + * gnome-session does launch a default window-manager. It does launch + gnome-wm if no other information has been found. gnome-wm now + reads the list of window managers from /etc/X11/window-managers + once it has tried gnome compliant wm. Closes: #38347, #47370 + * Patched gnome-terminal. TERM=xterm-debian again ... actually this + closes: #47552, #44960, #41065 + * gnome-terminal is now setgid utmp and can thus register itself + in the UTMP database. Closes: #40507 + * The URL match does now accept % characters. Closes: #47281 + * libpanel-applet0.postinst check for the changelog.gz mysteriously + staying around. Closes: #45871 + * Unreproducable bugs without answer from the submitter. + Closes: #41195, #42865 + + -- Raphael Hertzog Sat, 16 Oct 1999 19:52:38 +0200 + +gnome-core (1.0.53-1) unstable; urgency=low + + * New upstream version. + * gnome-session does now depend on gnome-panel and recommends + gmc (both are needed for a full Gnome desktop). + * gnome-terminal does not have a border. Closes: #38972 + + -- Raphael Hertzog Tue, 12 Oct 1999 21:17:58 +0200 + +gnome-core (1.0.52-1) unstable; urgency=low + + * New maintainer. Steve said that he wanted to give away some of + his packages. I've asked to take gnome-core, he never replied, so + I'm taking it but I will give it back to him if he wanted to + keep it. In the meantime I can better manage bugs with my name + in the Maintainer field. + * New upstream version. + + -- Raphael Hertzog Mon, 4 Oct 1999 21:28:18 +0200 + +gnome-core (1.0.50-0.1) unstable; urgency=low + + * New upstream version. + * NMU again. + + -- Raphael Hertzog Thu, 30 Sep 1999 22:10:03 +0200 + +gnome-core (1.0.41-0.1) unstable; urgency=low + + * New upstream version. + * NMU again. + + -- Raphael Hertzog Mon, 27 Sep 1999 13:10:31 +0200 + +gnome-core (1.0.9-0.1) unstable; urgency=low + + * New upstream version. Closes: #43253, #44098 + * Apply patches before configuring (and relaunch automake && autoconf + because one of the patches is applied on Makefile.am). + * NMU. Thanks to Christian Marillat for his work. + * Imlib bug corrected: closes: #39085 + * X11 binaries don't have to go /usr/X11R6/bin. Closes: #24031 + * The panel does start correctly wihout complaining about a + missing name service. Closes: #39380, #39634, #40478 + * The panel doesn't consume all CPU resources. Closes: #30654 + * The panel launches apps from where it has been launched itself. + Closes: #32319 + * The panel keeps the settings. Closes: #37052, #40579, #43496 + * Old core dump corrected upstream. Closes: #39400, #40328, #42167 + Closes: #44344, #44724, #44732, #44759, #44773 + * Bug in menu-method, not in gnome-panel. Already reported against + menu. Closes: #40089 + * cdplayer_applet works again. Closes: #42192 + * gnome pager works well: Closes: #42499, #42610 + * modem_lights draws itself correctly. Closes: #43861, #45055 + * The dialer applets doesn't exit when stopping while + not yet connected. Closes: #45287 + * No more Debian menu in the panel. Closes: #41040 + * GnomeICU works with this panel. Closes: #39626, #39515 + * gnome-panel-data conflicts with asclock. + Closes: #40712, #40715, #40808, #41430 + A better solution will be needed. Maybe put asclock in his own + package or create a asclock-data package that will be shared. + * Updated the modemlights patch. Closes: #43512 + * Added a patch for gnome-wm. Closes: #38366 + * Move lib{gkb,fish}_applet.so files to libgnome-applet0 (those are + not libraries to be linked with, just simple modules). Closes: #38596 + * Asclock works well without xearth (the code still mentions xearth + however). Closes: #40530 + * New patch (help-browser) for changing the default MANPATH and INFOPATH in + gnome-help-browser.c Closes: #41452 + * Moved help-browser to the new "Help" menu section. + * Added gnome-help.mime. Closes: #42205 + * Gnome-session does launch gnome-panel ! (I suppose that it failed + to launch since panel was broken). Closes: #42937 + * gnome-sesion doesn't core dump. Closes: #36640 + * The terminal does remember the TERM var. Closes: #43067 + * The terminal keeps its size when dragging the manu bar in and out. + Closes: #44762 + * The menu section of gnome-terminal corrected. Closes: #37635 + + -- Raphael Hertzog Wed, 22 Sep 1999 13:24:34 +0200 + +gnome-core (1.0.7-1) unstable; urgency=low + + * New upstream version. + * Removed "term" patch + + -- Steve Haslam Mon, 28 Jun 1999 01:36:31 +0100 + +gnome-core (1.0.6-2) unstable; urgency=low + + * debian-menu.dpatch: created to fix guessing Debian menus + (/etc/menu-methods/gnome-panel now) and to make Debian menus the default + instead of GNOME system menus. + * gnome-help now suggests gnome-users-guide-en (closes: #35724) + * /etc/menu-methods/gnome-panel now creates .directory files and searches + /usr/X11R6/include/X11/pixmaps for menu icons + + -- Steve Haslam Sun, 13 Jun 1999 15:28:52 +0100 + +gnome-core (1.0.6-1) unstable; urgency=low + + * New upstream version. + + -- Steve Haslam Sat, 5 Jun 1999 12:57:08 +0100 + +gnome-core (1.0.5-3) unstable; urgency=low + + * debian/gnome-terminal.menu: managed to lose change mentioned in last + revision. Replaced. + * debian/gnome-core.undocumented: removed gnome-wm.1 (it was in + gnome-session.undocumented too). + + -- Steve Haslam Mon, 31 May 1999 19:15:54 +0100 + +gnome-core (1.0.5-2) unstable; urgency=low + + * debian/gnome-terminal.menu: changed section to XShells (Bug#37635) + * debian/rules: added gnome-wm and gnome-edit to dh_undocumented call + (Bug#37632) + * debian/gnome.menu-method: added patch to honour needs=text (Bug#36928) + from Decklin Foster + * Call dh_strip when making libpanel-applet-dev (Closes Bug#31244) + * Removed /usr/share/gnome/apps/Debian symlink, (closes #38100) + * Sanified build system a la gnome-libs + * debian/control: made gnome-help, gnome-help-data and gnome-panel-data + packages. + + -- Steve Haslam Sun, 23 May 1999 14:35:44 +0100 + +gnome-core (1.0.5-1) unstable; urgency=low + + * New maintainer. + + -- Steve Haslam Tue, 11 May 1999 01:01:12 +0100 + +gnome-core (1.0.5-0.2) unstable; urgency=low + + * gnome-panel.files.in: added asclock themes, libgkb_applet.a + * gnome-core.files.in: added gnome-wm, gnome-edit + * term.dpatch: gnome-terminal TERM to xterm-debian rather than xterm + * gsm/Makefile.am: put default.session, default.wm in /etc/gnome + * debian/gnome-session.conffiles.in: added above two files + * debian/gnome-session.files.in: updated this too + + -- Steve Haslam Sun, 18 Apr 1999 16:47:23 +0100 + +gnome-core (1.0.5-0.1) unstable; urgency=low + + * Non-maintainer upload + * New upstream version + + -- Steve Haslam Thu, 15 Apr 1999 23:22:23 +0100 + +gnome-core (1.0.1-0.3) unstable; urgency=low + + * Weehay! More broken dependencies. This one libghttp -1.1, + a bogus package that only ever existed on my machine. + + -- Jules Bean Mon, 8 Mar 1999 08:24:00 +0000 + +gnome-core (1.0.1-0.2) unstable; urgency=low + + * Another NMU, this time to fix bogus dependencies on libgtop0 + and libglib1.1 + + -- Jules Bean Sun, 7 Mar 1999 14:21:12 +0000 + +gnome-core (1.0.1-0.1) unstable; urgency=low + + * NMU for GNOME-1.0 + * Hacked to patch SIGPIPE bug + * Don't delete GIFs in rules + + -- Jules Bean Fri, 5 Mar 1999 18:36:29 +0100 + +gnome-core (0.99.99pre1.0.0-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Fri, 26 Feb 1999 23:18:10 -0800 + +gnome-core (0.99.3.2-4) unstable; urgency=low + + * Recompiled yet again - dual dependency on libglib. + Fixes: BUG#32510 + + -- Jim Pick Thu, 28 Jan 1999 00:00:22 -0800 + +gnome-core (0.99.3.2-3) unstable; urgency=low + + * Recompiled again to due to dependencies. + + -- Jim Pick Sun, 24 Jan 1999 01:10:07 -0800 + +gnome-core (0.99.3.2-2) unstable; urgency=low + + * Recompiled with libgnome 0.99.4. + + -- Jim Pick Fri, 22 Jan 1999 16:44:45 -0800 + +gnome-core (0.99.3.2-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Wed, 20 Jan 1999 11:42:46 -0800 + +gnome-core (0.30-2) frozen unstable; urgency=low + + * Recompiled with new libs. + * Fixed reference to /usr/X11R6 in README.Debian. + * Added warnings (Gnome is ALPHA). + * Patched dialer_applet to use pon/poff. + * Patched drivemount_applet to default to /floppy. + + -- Jim Pick Tue, 24 Nov 1998 10:56:08 -0800 + +gnome-core (0.30-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Thu, 24 Sep 1998 21:28:02 -0700 + +gnome-core (0.28.1-1) unstable; urgency=low + + * New upstream release. + * Hopefully fixes panel applet bug. + + -- Jim Pick Wed, 19 Aug 1998 20:12:25 -0700 + +gnome-core (0.28-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Mon, 17 Aug 1998 12:59:26 -0700 + +gnome-core (0.27-1) unstable; urgency=low + + * New upstream release. + * Added /usr/doc/gnome + + -- Jim Pick Sat, 15 Aug 1998 14:21:06 -0700 + +gnome-core (0.25-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Thu, 6 Aug 1998 22:51:22 -0700 + +gnome-core (0.20-2) unstable; urgency=low + + * Added Debian menu-method for gnome-panel. Fixed Bug #24025 + (Thanks to Ray Dassen for reporting the bug, and Riku Voipio + who wrote the menu method for Gnome 0.12) + + -- Jim Pick Wed, 22 Jul 1998 20:22:00 -0700 + +gnome-core (0.20-1) unstable; urgency=low + + * New upstream release. + + -- Jim Pick Mon, 8 Jun 1998 12:00:08 -0700 + +gnome-core (0.13-1) unstable; urgency=low + + * Initial Release. + + -- Jim Pick Mon, 16 Mar 1998 15:27:43 -0800 --- gnome-panel-2.14.1.orig/debian/control.in +++ gnome-panel-2.14.1/debian/control.in @@ -0,0 +1,82 @@ +Source: gnome-panel +Section: gnome +Priority: optional +Maintainer: Guilherme de S. Pastore +Uploaders: Sebastien Bacher , Arnaud Patard , @GNOME_TEAM@ +Standards-Version: 3.6.2.1 +Build-Depends: @cdbs@, liborbit2-dev (>= 1:2.12.1-1), intltool, gnome-pkg-tools, libgtk2.0-dev (>= 2.7.1), libglade2-dev (>= 1:2.5.1), libwnck-dev (>= 2.13.5), scrollkeeper (>= 0.3.14-9.1), libgnome2-dev (>= 2.13.0), libgnome-desktop-dev (>= 2.11.1), libpng12-dev, libbonobo2-dev (>= 2.8.1-2), libxmu-dev, libedata-cal1.2-dev (>= 1.2.1-1) [!hurd-i386], libgnome-menu-dev (>= 2.11.1-1), libgnomevfs2-dev (>= 2.10.0-1), libnspr-dev, libxres-dev, sharutils, gnome-doc-utils, libedataserverui1.2-dev (>= 1.5.3), liblpint-bonobo-dev, liblaunchpad-integration-dev, libcairo2-dev + +Package: gnome-panel +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends}, gnome-panel-data (= ${Source-Version}), gnome-desktop-data (>= 2.10.0-1), gnome-control-center (>= 1:2.8.2-3), gnome-menus (>= 2.11.1-1), gnome-about (>= 2.10.0-1) +Recommends: gnome-applets (>= 2.10.1-1), gnome-session, menu-xdg (>= 0.2), alacarte +Suggests: yelp, gnome2-user-guide, gnome-terminal | x-terminal-emulator, gnome-system-tools, nautilus +Description: launcher and docking facility for GNOME 2 + This package contains toolbar-like “panels” which can be attached to + the sides of your X desktop, or left “floating”. It is designed to be + used in conjunction with the Gnome Desktop Environment. Many features + are provided for use with the panels – including an application menu, + clock, mail checker, network monitor, quick launch icons and the like. + +Package: gnome-panel-dbg +Architecture: any +Depends: gnome-panel (= ${Source-Version}) +Description: Launch and/or dock GNOME 2 applications + This package contains a toolbar (the "panel") that you can attach to the + edge of your X desktop. You can install "applets" on it. Several applets + are supplied: an application menu, a clock, a mail checker, a network + monitor, etc. You can customize the location, and the "autohide" + animations. + . + This development package contains unstripped binaries compiled with + debugging symbols needed by gdb. + +Package: libpanel-applet2-0 +Section: libs +Architecture: any +Depends: ${shlibs:Depends} +Description: library for GNOME 2 panel applets + This library is used by GNOME 2 panel applets. + +Package: libpanel-applet2-0-dbg +Section: libdevel +Architecture: any +Depends: libpanel-applet2-0 (= ${Source-Version}) +Conflicts: libpanel-applet2-dbg +Provides: libpanel-applet2-dbg +Replaces: libpanel-applet2-dbg +Description: library for GNOME 2 panel applets - library with debugging symbols + This library is used by GNOME 2 panel applets. + . + This package contains unstripped shared libraries. It is provided primarily + to provide a backtrace with names in a debugger, this makes it somewhat + easier to interpret core dumps. The libraries are installed in + /usr/lib/debug and can be used by placing that directory in + LD_LIBRARY_PATH. + Most people will not need this package. + +Package: libpanel-applet2-dev +Section: libdevel +Architecture: any +Depends: libpanel-applet2-0 (= ${Source-Version}), libgnomeui-dev (>= 2.10.0-1) +Description: library for GNOME 2 panel applets - development files + This packages provides the include files and static library for the GNOME 2 + panel applet library functions. + +Package: libpanel-applet2-doc +Section: doc +Architecture: all +Suggests: doc-base +Description: library for GNOME 2 panel applets - documentation files + This packages provides the documentation files for the GNOME 2 panel applet + library functions. + +Package: gnome-panel-data +Section: gnome +Architecture: all +Depends: scrollkeeper (>= 0.3.14-9.1), ${misc:Depends} +Recommends: gnome-panel (= ${Source-Version}) +Description: common files for GNOME 2 panel + This package includes some files that are needed by the GNOME 2 panel + (Pixmaps, .desktop files and internationalization files). + --- gnome-panel-2.14.1.orig/debian/ubuntu-about.desktop +++ gnome-panel-2.14.1/debian/ubuntu-about.desktop @@ -0,0 +1,50 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=About Ubuntu +Name[ca]=Quant a Ubuntu +Name[da]=Om Ubuntu +Name[de]=Über Ubuntu +Name[el]=Περί Ubuntu +Name[es]=Acerca de Ubuntu +Name[fa]=درباره Ubuntu +Name[fi]=Tietoja Ubuntusta +Name[fr]=À propos d'Ubuntu +Name[he]=אודות אובונטו +Name[hu]=Az Ubuntu névjegye +Name[is]=Um Ubuntu +Name[it]=Informazioni su Ubuntu +Name[nl]=Over Ubuntu +Name[pt]=Sobre o Ubuntu +Name[pt_BR]=Sobre o Ubuntu +Name[ro]=Despre Ubuntu +Name[sk]=O Ubuntu +Name[sv]=Om Ubuntu +Name[xh]=Malunga ne-Ubuntu +Name[zh_CN]=关于 Ubuntu +Comment=Learn more about Ubuntu +Comment[ca]=Conegueu més sobre Ubuntu +Comment[da]=Lær mere om Ubuntu +Comment[de]=Mehr über Ubuntu erfahren +Comment[el]=Μάθετε περισσότερα για το Ubuntu +Comment[es]=Sepa más acerca de ubuntu +Comment[fa]=راجع به Ubuntu بیشتر بدانید +Comment[fi]=Näytä tietoja Ubuntu-järjestelmästä +Comment[fr]=En savoir plus à propos d'Ubuntu +Comment[he]=קרא דואר באמצעות אבולושיין +Comment[hu]=Tudjon meg többet az Ubunturól +Comment[is]=Lærðu meira um Ubuntu +Comment[it]=Sapere di più circa Ubuntu +Comment[nl]=Kom meer te weten over Ubunt +Comment[pt]=Aprenda mais sobre o Ubuntu +Comment[pt_BR]=Aprenda mais sobre o Ubuntu +Comment[ro]=Aflaţi mai multe despre Ubuntu +Comment[sk]=Dozvedieť sa viac o Ubuntu +Comment[sv]=Lär dig mer om Ubuntu +Comment[xh]=Funda ngaphezulu nge-Ubuntu +Comment[zh_CN]=更多有关 Ubuntu 的信息 +Exec=yelp ghelp:about-ubuntu +Icon=/usr/share/icons/hicolor/48x48/apps/distributor-logo.png +Terminal=false +Type=Application +Categories=GNOME;Application;Core; +StartupNotify=true --- gnome-panel-2.14.1.orig/debian/rules +++ gnome-panel-2.14.1/debian/rules @@ -0,0 +1,53 @@ +#!/usr/bin/make -f + +# Gnome Team +include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk + +include /usr/share/cdbs/1/rules/debhelper.mk +# Including this file gets us a simple patch system. You can just +# drop patches in debian/patches, and they will be automatically +# applied and unapplied. +include /usr/share/cdbs/1/rules/simple-patchsys.mk +# Including this gives us a number of rules typical to a GNOME +# program, including setting GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1. +# Note that this class inherits from autotools.mk and docbookxml.mk, +# so you don't need to include those too. +include /usr/share/cdbs/1/class/gnome.mk + +DEB_BUILDDIR = $(CURDIR)/debian/build +DEB_CONFIGURE_SCRIPT_ENV += LDFLAGS="-Wl,-z,defs -Wl,-O1 -Wl,--as-needed" +DEB_CONFIGURE_EXTRA_FLAGS := --disable-scrollkeeper +ifneq ($(DEB_BUILD_GNU_SYSTEM),gnu) + DEB_CONFIGURE_EXTRA_FLAGS += --enable-eds +endif + +# debug lib +DEB_DH_STRIP_ARGS := --dbg-package=libpanel-applet2-0 --dbg-package=gnome-panel + +# tight versioning +DEB_NOREVISION_VERSION := $(shell dpkg-parsechangelog | egrep '^Version:' | cut -f 2 -d ' ' | cut -f 1 -d '-') +DEB_DH_MAKESHLIBS_ARGS_libpanel-applet2-0 := -V"libpanel-applet2-0 (>= $(DEB_NOREVISION_VERSION))" +DEB_SHLIBDEPS_LIBRARY_gnome-panel:= libpanel-applet2-0 +DEB_SHLIBDEPS_INCLUDE_gnome-panel := debian/libpanel-applet2-0/usr/lib/ + + +binary-install/gnome-panel:: + chmod a+x debian/gnome-panel/usr/lib/gnome-panel/* + cd po; intltool-update -p + +binary-install/gnome-panel-data:: + chmod a+x debian/gnome-panel-data/etc/menu-methods/gnome-panel-data + find debian/gnome-panel-data/usr/share -type f -exec chmod -R a-x {} \; + cp debian/panel-default-setup-laptop.entries debian/gnome-panel-data/usr/share/gconf/schemas/ + uudecode debian/application-default-icon.png.uue -o debian/application-default-icon.png + mkdir -p debian/gnome-panel-data/usr/share/icons + cp debian/application-default-icon.png debian/gnome-panel-data/usr/share/icons/ + +binary-install/libpanel-applet2-doc:: + find debian/libpanel-applet2-doc/usr/share/doc/libpanel-applet2-doc/ -name ".arch-ids" -depth -exec rm -rf {} \; + +clean:: + # GNOME Team 'uploaders.mk' should not override this behavior, here is a workarround : + sed -i "s/@cdbs@/$(CDBS_BUILD_DEPENDS)/g" debian/control + rm -rf $(DEB_BUILDDIR) + -rm -f debian/application-default-icon.png --- gnome-panel-2.14.1.orig/debian/gnome-vfolder-user +++ gnome-panel-2.14.1/debian/gnome-vfolder-user @@ -0,0 +1,43 @@ +#!/usr/bin/install-menu +# gnome-vfolder based on: +# Also used as /etc/menu-methods/menu-xdg +# Copyright 2004 - Chris Cheney +# Licensed under the GNU General Public License, version 2. + +!include menu.h + +compat="menu-2" +outputencoding="UTF-8"; +outputlanguage="C"; + +function DirEntry() = + " " translate("",title()) "\n" + " " "debian" replacewith(tolower($section),"/","-") ".directory" "\n"; + +function desktop() = prefix() "/../../.local/share/applications/menu-xdg/X-Debian" replacewith($basesection,"/","-") "-" tolower(replacewith($title,"/ ","__") ".desktop"); + +supported; + x11 = "" desktop() "\n"; + text = "" desktop() "\n"; +endsupported; + +startmenu = " \n" DirEntry(); +endmenu = " \n"; +submenutitle = ""; + +treewalk = "(M)"; + +genmenu = "applications.debmenu"; +rcfile = "applications.vfolder-info"; +examplercfile="applications.template"; +mainmenutitle="Debian-user"; + +rootsection = ""; + +onlyrunasuser=true; +userprefix = ".gnome2/vfolders"; +rootprefix = "/etc/gnome-vfs-2.0/vfolders"; + +preoutput = ""; +postoutput = ""; + --- gnome-panel-2.14.1.orig/debian/application-default-icon.png.uue +++ gnome-panel-2.14.1/debian/application-default-icon.png.uue @@ -0,0 +1,17 @@ +begin 644 application-default-icon.png +MB5!.1PT*&@H````-24A$4@```!@````8"`8```#@=SWX````!F)+1T0`^`#U +M`/)ANX+H````"7!(67,```L3```+$P$`FIP8````!W1)344'U0,7#B4`YB3/ +M)P```@!)1$%42,?ME;UNU%`0A;\9>Z,D)!)%1$,7*BAYD!1(O!*T=$B\`$*( +MAL<)-%0@(44BFV03^\X<"J^]3EAO$`JB823[_LCWG/&9<^^%__&OPP#V]_=U +MU\#S^?P!<%+W$^\^?.33EZ\LFH*Y81@IH4PR"Q%)1*`,,A.IRZEO`91)"VBZPX;P)W!P,E2$:D$T5D&)*1:4@@6+ZZR#3:UOKA(V!K +M(+BX;+AJ6IK28.88AB2D)#/)*$0&DLA,D)8$PCJER4PB$X"JJJJ(\('@Z9-# +M#A\>T$8`X&;#0HQ5'S`S1D,,!R"R,#\]Y>WKE\QF,T6$!H*]W6UJ[[(PLQ40 +M=)*-P4?MN!\1;-=VK3;U+[8:`8R!-X&/Y_M^*<4!KB'T@'\"?C,BP@"K[RKS +M-6L-4'T3:)W>4^#K"$;?:6T--H%/@4ZLER3Y;;\\]6S(O-\'#M2^R453#OF= +MNE15E8!\2IY-;KE-GE$-5D4^.SNC;5LD;=3YMHVV6"S&+JH&@N/C8THIPPZ< +M\OBZ^7Z`':!(*DMP7Q:N[?4U +JLRU@V\SJ[F@79G8N:2[I.W#RU^_DGR$L`JH&B.Y>`````$E%3D2N0F"" +` +end --- gnome-panel-2.14.1.orig/debian/panel-test-applets.1 +++ gnome-panel-2.14.1/debian/panel-test-applets.1 @@ -0,0 +1,28 @@ +.\" This manpage has been automatically generated by docbook2man +.\" from a DocBook document. This tool can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "PANEL-TEST-APPLETS" "1" "07 dcembre 2003" "" "" + +.SH NAME +panel-test-applets \- display installed applets +.SH SYNOPSIS + +\fBpanel-test-applets\fR [ \fB--help \fR ] + +.SH "DESCRIPTION" +.PP +\fBpanel-test-applets\fR display installed applets and does +nothing else. +.SH "OPTIONS" +.TP +\fB--help\fR +Display help +.SH "SEE ALSO" +.PP +gnome-options(7) +.SH "AUTHOR" +.PP +This manual page was written by Christian Marillat for +the Debian GNU/Linux system (but may be used by others). --- gnome-panel-2.14.1.orig/debian/compat +++ gnome-panel-2.14.1/debian/compat @@ -0,0 +1 @@ +4 --- gnome-panel-2.14.1.orig/debian/panel-default-setup-laptop.entries +++ gnome-panel-2.14.1/debian/panel-default-setup-laptop.entries @@ -0,0 +1,949 @@ + + + + + + + + general/toplevel_id_list + /schemas/apps/panel/general/toplevel_id_list + + + + top_panel + + + bottom_panel + + + + + + + + + general/object_id_list + /schemas/apps/panel/general/object_id_list + + + + menu_bar + + + firefox_launcher + + + evolution_launcher + + + session_dialog + + + + + + + + + general/applet_id_list + /schemas/apps/panel/general/applet_id_list + + + + notificationarea + + + wireless + + + battstat + + + mixer + + + clock + + + show_desktop_button + + + window_list + + + workspace_switcher + + + trashapplet + + + + + + general/enable_program_list/schemas/apps/panel/general/enable_program_list + general/show_program_list/schemas/apps/panel/general/show_program_list + + + + + toplevels/top_panel/name + /schemas/apps/panel/toplevels/name + + Top Panel + + + + toplevels/top_panel/expand + /schemas/apps/panel/toplevels/expand + + true + + + + toplevels/top_panel/orientation + /schemas/apps/panel/toplevels/orientation + + top + + + + toplevels/top_panel/size + /schemas/apps/panel/toplevels/size + + 24 + + + + toplevels/top_panel/screen/schemas/apps/panel/toplevels/screen + toplevels/top_panel/monitor/schemas/apps/panel/toplevels/monitor + toplevels/top_panel/x/schemas/apps/panel/toplevels/x + toplevels/top_panel/y/schemas/apps/panel/toplevels/y + toplevels/top_panel/x_centered/schemas/apps/panel/toplevels/x_centered + toplevels/top_panel/y_centered/schemas/apps/panel/toplevels/y_centered + toplevels/top_panel/auto_hide/schemas/apps/panel/toplevels/auto_hide + toplevels/top_panel/enable_animations/schemas/apps/panel/toplevels/enable_animations + toplevels/top_panel/enable_buttons/schemas/apps/panel/toplevels/enable_buttons + toplevels/top_panel/enable_arrows/schemas/apps/panel/toplevels/enable_arrows + toplevels/top_panel/hide_delay/schemas/apps/panel/toplevels/hide_delay + toplevels/top_panel/unhide_delay/schemas/apps/panel/toplevels/unhide_delay + toplevels/top_panel/auto_hide_size/schemas/apps/panel/toplevels/auto_hide_size + toplevels/top_panel/background/type/schemas/apps/panel/toplevels/background/type + toplevels/top_panel/background/color/schemas/apps/panel/toplevels/background/color + toplevels/top_panel/background/opacity/schemas/apps/panel/toplevels/background/opacity + toplevels/top_panel/background/image/schemas/apps/panel/toplevels/background/image + toplevels/top_panel/background/fit/schemas/apps/panel/toplevels/background/fit + toplevels/top_panel/background/stretch/schemas/apps/panel/toplevels/background/stretch + toplevels/top_panel/background/rotate/schemas/apps/panel/toplevels/background/rotate + + + + + toplevels/bottom_panel/name + /schemas/apps/panel/toplevels/name + + Bottom Panel + + + + toplevels/bottom_panel/expand + /schemas/apps/panel/toplevels/expand + + true + + + + toplevels/bottom_panel/orientation + /schemas/apps/panel/toplevels/orientation + + bottom + + + + toplevels/bottom_panel/size + /schemas/apps/panel/toplevels/size + + 24 + + + + toplevels/bottom_panel/screen/schemas/apps/panel/toplevels/screen + toplevels/bottom_panel/monitor/schemas/apps/panel/toplevels/monitor + toplevels/bottom_panel/x/schemas/apps/panel/toplevels/x + toplevels/bottom_panel/y/schemas/apps/panel/toplevels/y + toplevels/bottom_panel/x_centered/schemas/apps/panel/toplevels/x_centered + toplevels/bottom_panel/y_centered/schemas/apps/panel/toplevels/y_centered + toplevels/bottom_panel/auto_hide/schemas/apps/panel/toplevels/auto_hide + toplevels/bottom_panel/enable_animations/schemas/apps/panel/toplevels/enable_animations + toplevels/bottom_panel/enable_buttons/schemas/apps/panel/toplevels/enable_buttons + toplevels/bottom_panel/enable_arrows/schemas/apps/panel/toplevels/enable_arrows + toplevels/bottom_panel/hide_delay/schemas/apps/panel/toplevels/hide_delay + toplevels/bottom_panel/unhide_delay/schemas/apps/panel/toplevels/unhide_delay + toplevels/bottom_panel/auto_hide_size/schemas/apps/panel/toplevels/auto_hide_size + toplevels/bottom_panel/background/type/schemas/apps/panel/toplevels/background/type + toplevels/bottom_panel/background/color/schemas/apps/panel/toplevels/background/color + toplevels/bottom_panel/background/opacity/schemas/apps/panel/toplevels/background/opacity + toplevels/bottom_panel/background/image/schemas/apps/panel/toplevels/background/image + toplevels/bottom_panel/background/fit/schemas/apps/panel/toplevels/background/fit + toplevels/bottom_panel/background/stretch/schemas/apps/panel/toplevels/background/stretch + toplevels/bottom_panel/background/rotate/schemas/apps/panel/toplevels/background/rotate + + + + + objects/menu_bar/object_type + /schemas/apps/panel/objects/object_type + + menu-bar + + + + objects/menu_bar/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + objects/menu_bar/position + /schemas/apps/panel/objects/position + + 0 + + + + objects/menu_bar/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + objects/menu_bar/locked + /schemas/apps/panel/objects/locked + + true + + + + objects/menu_bar/bonobo_iid/schemas/apps/panel/objects/bonobo_iid + objects/menu_bar/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + objects/menu_bar/tooltip/schemas/apps/panel/objects/tooltip + objects/menu_bar/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + objects/menu_bar/custom_icon/schemas/apps/panel/objects/custom_icon + objects/menu_bar/use_menu_path/schemas/apps/panel/objects/use_menu_path + objects/menu_bar/menu_path/schemas/apps/panel/objects/menu_path + objects/menu_bar/launcher_location/schemas/apps/panel/objects/launcher_location + objects/menu_bar/action_type/schemas/apps/panel/objects/action_type + + + + + objects/nautilus_launcher/object_type + /schemas/apps/panel/objects/object_type + + launcher-object + + + + objects/nautilus_launcher/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + objects/nautilus_launcher/position + /schemas/apps/panel/objects/position + + 1 + + + + objects/nautilus_launcher/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + objects/nautilus_launcher/locked + /schemas/apps/panel/objects/locked + + true + + + + objects/nautilus_launcher/launcher_location + /schemas/apps/panel/objects/launcher_location + + applications:///nautilus.desktop + + + + objects/nautilus_launcher/bonobo_iid/schemas/apps/panel/objects/bonobo_iid + objects/nautilus_launcher/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + objects/nautilus_launcher/tooltip/schemas/apps/panel/objects/tooltip + objects/nautilus_launcher/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + objects/nautilus_launcher/custom_icon/schemas/apps/panel/objects/custom_icon + objects/nautilus_launcher/use_menu_path/schemas/apps/panel/objects/use_menu_path + objects/nautilus_launcher/menu_path/schemas/apps/panel/objects/menu_path + objects/nautilus_launcher/action_type/schemas/apps/panel/objects/action_type + + + + + objects/firefox_launcher/object_type + /schemas/apps/panel/objects/object_type + + launcher-object + + + + objects/firefox_launcher/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + objects/firefox_launcher/position + /schemas/apps/panel/objects/position + + 2 + + + + objects/firefox_launcher/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + objects/firefox_launcher/locked + /schemas/apps/panel/objects/locked + + true + + + + objects/firefox_launcher/launcher_location + /schemas/apps/panel/objects/launcher_location + + file:///usr/share/applications/firefox.desktop + + + + objects/firefox_launcher/bonobo_iid/schemas/apps/panel/objects/bonobo_iid + objects/firefox_launcher/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + objects/firefox_launcher/tooltip/schemas/apps/panel/objects/tooltip + objects/firefox_launcher/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + objects/firefox_launcher/custom_icon/schemas/apps/panel/objects/custom_icon + objects/firefox_launcher/use_menu_path/schemas/apps/panel/objects/use_menu_path + objects/firefox_launcher/menu_path/schemas/apps/panel/objects/menu_path + objects/firefox_launcher/action_type/schemas/apps/panel/objects/action_type + + + + + objects/evolution_launcher/object_type + /schemas/apps/panel/objects/object_type + + launcher-object + + + + objects/evolution_launcher/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + objects/evolution_launcher/position + /schemas/apps/panel/objects/position + + 3 + + + + objects/evolution_launcher/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + objects/evolution_launcher/locked + /schemas/apps/panel/objects/locked + + true + + + + objects/evolution_launcher/launcher_location + /schemas/apps/panel/objects/launcher_location + + file:///usr/share/applications/evolution-mail.desktop + + + + objects/evolution_launcher/bonobo_iid/schemas/apps/panel/objects/bonobo_iid + objects/evolution_launcher/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + objects/evolution_launcher/tooltip/schemas/apps/panel/objects/tooltip + objects/evolution_launcher/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + objects/evolution_launcher/custom_icon/schemas/apps/panel/objects/custom_icon + objects/evolution_launcher/use_menu_path/schemas/apps/panel/objects/use_menu_path + objects/evolution_launcher/menu_path/schemas/apps/panel/objects/menu_path + objects/evolution_launcher/action_type/schemas/apps/panel/objects/action_type + + + + + applets/mixer/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/mixer/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + applets/mixer/position + /schemas/apps/panel/objects/position + + 1 + + + + applets/mixer/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/mixer/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/mixer/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_MixerApplet + + + + applets/mixer/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/mixer/tooltip/schemas/apps/panel/objects/tooltip + applets/mixer/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/mixer/custom_icon/schemas/apps/panel/objects/custom_icon + applets/mixer/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/mixer/menu_path/schemas/apps/panel/objects/menu_path + applets/mixer/launcher_location/schemas/apps/panel/objects/launcher_location + applets/mixer/action_type/schemas/apps/panel/objects/action_type + + + + + applets/clock/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/clock/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + applets/clock/position + /schemas/apps/panel/objects/position + + 0 + + + + applets/clock/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/clock/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/clock/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_ClockApplet + + + + applets/clock/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/clock/tooltip/schemas/apps/panel/objects/tooltip + applets/clock/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/clock/custom_icon/schemas/apps/panel/objects/custom_icon + applets/clock/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/clock/menu_path/schemas/apps/panel/objects/menu_path + applets/clock/launcher_location/schemas/apps/panel/objects/launcher_location + applets/clock/action_type/schemas/apps/panel/objects/action_type + + + + + applets/battstat/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/battstat/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + applets/battstat/position + /schemas/apps/panel/objects/position + + 2 + + + + applets/battstat/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/battstat/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/battstat/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_BattstatApplet + + + + applets/battstat/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/battstat/tooltip/schemas/apps/panel/objects/tooltip + applets/battstat/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/battstat/custom_icon/schemas/apps/panel/objects/custom_icon + applets/battstat/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/battstat/menu_path/schemas/apps/panel/objects/menu_path + applets/battstat/launcher_location/schemas/apps/panel/objects/launcher_location + applets/battstat/action_type/schemas/apps/panel/objects/action_type + + + + + applets/wireless/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/wireless/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + applets/wireless/position + /schemas/apps/panel/objects/position + + 3 + + + + applets/wireless/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/wireless/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/wireless/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_Panel_WirelessApplet + + + + applets/wireless/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/wireless/tooltip/schemas/apps/panel/objects/tooltip + applets/wireless/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/wireless/custom_icon/schemas/apps/panel/objects/custom_icon + applets/wireless/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/wireless/menu_path/schemas/apps/panel/objects/menu_path + applets/wireless/launcher_location/schemas/apps/panel/objects/launcher_location + applets/wireless/action_type/schemas/apps/panel/objects/action_type + + + + + applets/notificationarea/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/notificationarea/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + applets/notificationarea/position + /schemas/apps/panel/objects/position + + 4 + + + + applets/notificationarea/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/notificationarea/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/notificationarea/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_NotificationAreaApplet + + + + applets/notificationarea/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/notificationarea/tooltip/schemas/apps/panel/objects/tooltip + applets/notificationarea/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/notificationarea/custom_icon/schemas/apps/panel/objects/custom_icon + applets/notificationarea/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/notificationarea/menu_path/schemas/apps/panel/objects/menu_path + applets/notificationarea/launcher_location/schemas/apps/panel/objects/launcher_location + applets/notificationarea/action_type/schemas/apps/panel/objects/action_type + + + + + applets/show_desktop_button/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/show_desktop_button/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + bottom_panel + + + + applets/show_desktop_button/position + /schemas/apps/panel/objects/position + + 0 + + + + applets/show_desktop_button/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + applets/show_desktop_button/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/show_desktop_button/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_ShowDesktopApplet + + + + applets/show_desktop_button/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/show_desktop_button/tooltip/schemas/apps/panel/objects/tooltip + applets/show_desktop_button/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/show_desktop_button/custom_icon/schemas/apps/panel/objects/custom_icon + applets/show_desktop_button/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/show_desktop_button/menu_path/schemas/apps/panel/objects/menu_path + applets/show_desktop_button/launcher_location/schemas/apps/panel/objects/launcher_location + applets/show_desktop_button/action_type/schemas/apps/panel/objects/action_type + + + + + objects/session_dialog/object_type + /schemas/apps/panel/objects/object_type + + action-applet + + + + objects/session_dialog/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + top_panel + + + + objects/session_dialog/position + /schemas/apps/panel/objects/position + + 0 + + + + objects/session_dialog/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + objects/session_dialog/locked + /schemas/apps/panel/objects/locked + + true + + + + objects/session_dialog/action_type + /schemas/apps/panel/objects/action_type + + logout + + + + objects/session_dialog/launcher_location + /schemas/apps/panel/objects/launcher_location + + + + + + objects/session_dialog/bonobo_iid/schemas/apps/panel/objects/bonobo_iid + objects/session_dialog/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + objects/session_dialog/tooltip/schemas/apps/panel/objects/tooltip + objects/session_dialog/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + objects/session_dialog/custom_icon/schemas/apps/panel/objects/custom_icon + objects/session_dialog/use_menu_path/schemas/apps/panel/objects/use_menu_path + objects/session_dialog/menu_path/schemas/apps/panel/objects/menu_path + objects/session_dialog/action_type/schemas/apps/panel/objects/action_type + + + + + applets/window_list/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/window_list/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + bottom_panel + + + + applets/window_list/position + /schemas/apps/panel/objects/position + + 1 + + + + applets/window_list/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + false + + + + applets/window_list/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/window_list/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_WindowListApplet + + + + applets/window_list/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/window_list/tooltip/schemas/apps/panel/objects/tooltip + applets/window_list/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/window_list/custom_icon/schemas/apps/panel/objects/custom_icon + applets/window_list/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/window_list/menu_path/schemas/apps/panel/objects/menu_path + applets/window_list/launcher_location/schemas/apps/panel/objects/launcher_location + applets/window_list/action_type/schemas/apps/panel/objects/action_type + + + + + applets/workspace_switcher/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/workspace_switcher/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + bottom_panel + + + + applets/workspace_switcher/position + /schemas/apps/panel/objects/position + + 1 + + + + applets/workspace_switcher/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/workspace_switcher/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/workspace_switcher/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_WorkspaceSwitcherApplet + + + + applets/workspace_switcher/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/workspace_switcher/tooltip/schemas/apps/panel/objects/tooltip + applets/workspace_switcher/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/workspace_switcher/custom_icon/schemas/apps/panel/objects/custom_icon + applets/workspace_switcher/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/workspace_switcher/menu_path/schemas/apps/panel/objects/menu_path + applets/workspace_switcher/launcher_location/schemas/apps/panel/objects/launcher_location + applets/workspace_switcher/action_type/schemas/apps/panel/objects/action_type + + + + + applets/trashapplet/object_type + /schemas/apps/panel/objects/object_type + + bonobo-applet + + + + applets/trashapplet/toplevel_id + /schemas/apps/panel/objects/toplevel_id + + bottom_panel + + + + applets/trashapplet/position + /schemas/apps/panel/objects/position + + 0 + + + + applets/trashapplet/panel_right_stick + /schemas/apps/panel/objects/panel_right_stick + + true + + + + applets/trashapplet/locked + /schemas/apps/panel/objects/locked + + true + + + + applets/trashapplet/bonobo_iid + /schemas/apps/panel/objects/bonobo_iid + + OAFIID:GNOME_Panel_TrashApplet + + + + applets/trashapplet/attached_toplevel_id/schemas/apps/panel/objects/attached_toplevel_id + applets/trashapplet/tooltip/schemas/apps/panel/objects/tooltip + applets/trashapplet/use_custom_icon/schemas/apps/panel/objects/use_custom_icon + applets/trashapplet/custom_icon/schemas/apps/panel/objects/custom_icon + applets/trashapplet/use_menu_path/schemas/apps/panel/objects/use_menu_path + applets/trashapplet/menu_path/schemas/apps/panel/objects/menu_path + applets/trashapplet/launcher_location/schemas/apps/panel/objects/launcher_location + applets/trashapplet/action_type/schemas/apps/panel/objects/action_type + + + + --- gnome-panel-2.14.1.orig/debian/gnome-panel-data.install +++ gnome-panel-2.14.1/debian/gnome-panel-data.install @@ -0,0 +1,7 @@ +debian/tmp/etc/gconf/ usr/share/ +debian/tmp/usr/lib/bonobo/ usr/lib/ +debian/tmp/usr/share/gnome-panelrc usr/share/gnome/ +debian/tmp/usr/share/gnome debian/tmp/usr/share/gnome-2.0/ debian/tmp/usr/share/locale/ debian/tmp/usr/share/omf/ debian/tmp/usr/share/icons/ usr/share/ +debian/applications.template etc/gnome-vfs-2.0/vfolders/ +debian/gnome-vfolder-user etc/menu-methods/ +debian/ubuntu-about.desktop usr/share/applications/ --- gnome-panel-2.14.1.orig/debian/panel-test-applets.sgml +++ gnome-panel-2.14.1/debian/panel-test-applets.sgml @@ -0,0 +1,99 @@ +Christian"> + Marillat"> + december 7, 2003"> + 1"> + marillat@debian.org"> + + panel-test-applets"> + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + display installed applets + + + + &dhpackage; + + + + + + + DESCRIPTION + + &dhpackage; display installed applets in a + dialog box and does nothing else. + + + + + OPTIONS + + + + + + Display help + + + + + + + SEE ALSO + + gnome-options(7) + + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). + + +
+ + --- gnome-panel-2.14.1.orig/debian/watch +++ gnome-panel-2.14.1/debian/watch @@ -0,0 +1,3 @@ +version=2 +http://ftp.gnome.org/pub/GNOME/sources/gnome-panel/2.13/gnome-panel-(.*)\.tar\.gz \ + debian uupdate --- gnome-panel-2.14.1.orig/debian/gnome-panel-data.menu-method.experimental +++ gnome-panel-2.14.1/debian/gnome-panel-data.menu-method.experimental @@ -0,0 +1,71 @@ +#!/usr/bin/install-menu +compat="menu-1" + +!include menu.h + +function findicon($filename)= \ + ifelsefile($filename, $filename, \ + iffile("/usr/X11R6/include/X11/pixmaps/" $filename, \ + "/usr/X11R6/include/X11/pixmaps/" $filename)) + +function AppEntry($var)= \ + "[Desktop Entry]\n" \ + "Encoding=UTF-8\n" \ + "Name=" title() "\n" \ + "Comment=" ifelse($longtitle,$longtitle,"") "\n" \ + "Exec=" $command "\n" \ + $var \ + ifnempty($icon,"Icon=" findicon($icon) "\n") \ + "Type=Application\n" \ + "Categories=Application" replacewith($basesection, "/", ";") ";\n" + +# To add a default icon if no icon are provided (ugly) +# ifelse($icon,"Icon="findicon($icon) "\n","Icon=gnome-debian.png\n") \ + +#function SubmenuEntry()= \ +# "[Desktop Entry]\n" \ +# "Name=" $title "\n" \ +# "Icon=gnome-fs-directory\n" \ +# "Type=Directory\n" + +supported + x11= AppEntry("Terminal=false\n") + text= AppEntry("Terminal=true\n") +endsupported + +#genmenu=ifeqelse(parent($title),"",parent($section),parent(parent($section))) "/" replacewith($title,"/","_") ifeqelse($needs, "", "/.directory", ".desktop") "" + +#genmenu=ifeqelse(parent($title),"",parent($section),\ +#parent(parent($section))) "/" replacewith($title,"/","_")\ +#ifeqelse($needs, "", +# "/.directory", +# ".desktop") "" + +#genmenu=ifelse($needs, "Debian_"$title".desktop", "") + +genmenu=ifelse($needs, $title".desktop", "") + +startmenu="" +endmenu="" + +rootsection="" + +rootprefix="/var/lib/gnome/Debian/" + +#rootprefix="/usr/share/applications/" + +userprefix=".gnome/apps" + +treewalk="M" + +#submenutitle="SUBMENUTITLE section=[" $section "] title=[" $title "]" + +#submenutitle=SubmenuEntry() + +prerun="rm -f " prefix() "/*" + +#prerun="rm -f " prefix() "/Debian_*" + +preoutput="" + +outputencoding="UTF-8" --- gnome-panel-2.14.1.orig/debian/gnome-panel-data.menu-method +++ gnome-panel-2.14.1/debian/gnome-panel-data.menu-method @@ -0,0 +1,52 @@ +#!/usr/bin/install-menu +compat="menu-1" + +!include menu.h + +function findicon($filename)= \ + ifelsefile($filename, $filename, \ + iffile("/usr/X11R6/include/X11/pixmaps/" $filename, \ + "/usr/X11R6/include/X11/pixmaps/" $filename)) + +function AppEntry($var)= \ + "[Desktop Entry]\n" \ + "Encoding=UTF-8\n" \ + "Name=" title() "\n" \ + "Comment=" ifelse($longtitle,$longtitle,"") "\n" \ + "Exec=" $command "\n" \ + $var \ + ifnempty($icon,"Icon=" findicon($icon) "\n") \ + "Type=Application\n" + +# To add a default icon if no icon are provided (ugly) +# ifelse($icon,"Icon="findicon($icon) "\n","Icon=gnome-debian.png\n") \ + +function SubmenuEntry()= \ + "[Desktop Entry]\n" \ + "Name=" $title "\n" \ + "Icon=gnome-fs-directory\n" \ + "Type=Directory\n" + +supported + x11= AppEntry("Terminal=false\n") + text= AppEntry("Terminal=true\n") +endsupported + +genmenu=ifeqelse(parent($title),"",parent($section),parent(parent($section))) "/" replacewith($title,"/","_") ifeqelse($needs, "", "/.directory", ".desktop") "" +startmenu="" +endmenu="" + +rootsection="" + +rootprefix="/var/lib/gnome/Debian/" +userprefix=".gnome/apps" + +treewalk="M" +submenutitle=SubmenuEntry() + +prerun="rm -rf " prefix() "/*" + +preoutput="" + +outputencoding="UTF-8" + --- gnome-panel-2.14.1.orig/debian/gnome-desktop-item-edit.1 +++ gnome-panel-2.14.1/debian/gnome-desktop-item-edit.1 @@ -0,0 +1,30 @@ +.\" This manpage has been automatically generated by docbook2man +.\" from a DocBook document. This tool can be found at: +.\" +.\" Please send any bug reports, improvements, comments, patches, +.\" etc. to Steve Cheng . +.TH "GNOME-DESKTOP-ITEM-EDIT" "1" "07 dcembre 2003" "" "" + +.SH NAME +gnome-desktop-item-edit \- tool to edit .desktop file +.SH SYNOPSIS + +\fBgnome-desktop-item-edit\fR [ \fB--create-new \fR ] [ \fB--help \fR ] + +.SH "DESCRIPTION" +.PP +\fBgnome-desktop-item-edit\fR allows you to edit .desktop file. +.SH "OPTIONS" +.TP +\fB--create-new\fR +Create new file in the given directory. +.TP +\fB--help\fR +Display help +.SH "SEE ALSO" +.PP +gnome-options(7) +.SH "AUTHOR" +.PP +This manual page was written by Christian Marillat for +the Debian GNU/Linux system (but may be used by others). --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-dbg.install +++ gnome-panel-2.14.1/debian/libpanel-applet2-dbg.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/libpanel-applet-2.so.* usr/lib/debug/ --- gnome-panel-2.14.1.orig/debian/gnome-panel-data.postinst +++ gnome-panel-2.14.1/debian/gnome-panel-data.postinst @@ -0,0 +1,19 @@ +#!/bin/sh + +set -e + +#DEBHELPER# + +if [ "$1" = "configure" ]; then + SCHEMA_LOCATION=/usr/share/gconf/schemas + GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` + if [ -x /usr/sbin/laptop-detect ] && /usr/sbin/laptop-detect; then + echo "laptop configuration" + HOME=/root \ + gconftool-2 --direct --config-source=${GCONF_CONFIG_SOURCE} --load ${SCHEMA_LOCATION}/panel-default-setup-laptop.entries + else + echo "desktop configuration" + HOME=/root \ + gconftool-2 --direct --config-source=${GCONF_CONFIG_SOURCE} --load ${SCHEMA_LOCATION}/panel-default-setup.entries + fi +fi --- gnome-panel-2.14.1.orig/debian/gnome-panel.manpages +++ gnome-panel-2.14.1/debian/gnome-panel.manpages @@ -0,0 +1,2 @@ +man/*.1 +debian/*.1 --- gnome-panel-2.14.1.orig/debian/gnome-panel-data.postrm +++ gnome-panel-2.14.1/debian/gnome-panel-data.postrm @@ -0,0 +1,9 @@ +#!/bin/sh -e + +if [ "$1" = "purge" ]; then + rm -rf /var/lib/gnome +fi + +#DEBHELPER# + +exit 0 --- gnome-panel-2.14.1.orig/debian/gnome-desktop-item-edit.sgml +++ gnome-panel-2.14.1/debian/gnome-desktop-item-edit.sgml @@ -0,0 +1,107 @@ +Christian"> + Marillat"> + december 7, 2003"> + 1"> + marillat@debian.org"> + + gnome-desktop-item-edit"> + + Debian GNU/Linux"> + GNU"> +]> + + + +
+ &dhemail; +
+ + &dhfirstname; + &dhsurname; + + + 2001 + &dhusername; + + &dhdate; +
+ + &dhucpackage; + + &dhsection; + + + &dhpackage; + + tool to edit .desktop file + + + + &dhpackage; + + + + + + + + DESCRIPTION + + &dhpackage; allows you to edit .desktop file. + + + + + OPTIONS + + + + + + + Create new file in the given directory. + + + + + + + Display help + + + + + + + SEE ALSO + + gnome-options(7) + + + + AUTHOR + + This manual page was written by &dhusername; &dhemail; for + the &debian; system (but may be used by others). + + +
+ + --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-0.install +++ gnome-panel-2.14.1/debian/libpanel-applet2-0.install @@ -0,0 +1 @@ +debian/tmp/usr/lib/libpanel-applet-2.so.* usr/lib/ --- gnome-panel-2.14.1.orig/debian/applications.template +++ gnome-panel-2.14.1/debian/applications.template @@ -0,0 +1,9 @@ + + + + Root + applications-all-users:/// + +include-menu-defs + + --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-doc.install +++ gnome-panel-2.14.1/debian/libpanel-applet2-doc.install @@ -0,0 +1 @@ +doc/reference/panel-applet/html usr/share/doc/libpanel-applet2-doc/ --- gnome-panel-2.14.1.orig/debian/gnome-panel.install +++ gnome-panel-2.14.1/debian/gnome-panel.install @@ -0,0 +1,2 @@ +debian/tmp/usr/bin usr/ +debian/tmp/usr/lib/gnome-panel/ usr/lib/ --- gnome-panel-2.14.1.orig/debian/copyright +++ gnome-panel-2.14.1/debian/copyright @@ -0,0 +1,31 @@ +This package was debianized by Jim Pick jim@jimpick.com on Sat, 14 Mar +1998 20:12:23 -0800. Taken over by Raphael Hertzog + on Wed, 22 Sep 1999 13:24:34 +0200, and taken +over again by James LewisMoss on October 26, 1999. +and again by Marc Dequènes (Duck) on 2003-03-26. + +It was downloaded from ftp://ftp.gnome.org/pub/GNOME/sources/gnome-panel/ + +Upstream Authors and Copyright holders: + Too many to list here, but the full list is in: + /usr/share/doc/gnome-panel/AUTHORS + +License: + + This package 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; version 2 dated June, 1991. + + This package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, + USA. + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-doc.doc-base +++ gnome-panel-2.14.1/debian/libpanel-applet2-doc.doc-base @@ -0,0 +1,11 @@ +Document: libpanel-applet2-doc +Title: Panel Applet Writer's Reference Manual +Author: Mark McLoughlin +Abstract: This manual documents the interfaces of the panel applet writing + library for GNOME 2.x and a short guide to porting applets from the GNOME + 1.x interfaces. +Section: Apps/Programming + +Format: HTML +Index: /usr/share/doc/libpanel-applet2-doc/html/index.html +Files: /usr/share/doc/libpanel-applet2-doc/html/*.html --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-dev.install +++ gnome-panel-2.14.1/debian/libpanel-applet2-dev.install @@ -0,0 +1,4 @@ +debian/tmp/usr/include/ usr/ +debian/tmp/usr/lib/pkgconfig usr/lib/ +debian/tmp/usr/lib/libpanel-applet-2.{a,la,so} usr/lib/ +debian/tmp/usr/share/idl/ usr/share/ --- gnome-panel-2.14.1.orig/debian/libpanel-applet2-doc.links +++ gnome-panel-2.14.1/debian/libpanel-applet2-doc.links @@ -0,0 +1 @@ +usr/share/doc/libpanel-applet2-doc/html/ usr/share/gtk-doc/html/panel-applet --- gnome-panel-2.14.1.orig/debian/README.Debian +++ gnome-panel-2.14.1/debian/README.Debian @@ -0,0 +1,18 @@ +gnome-panel for Debian +---------------------- + + +--- vfolder user menu --- +(Thanks to Bill Allombert) + +If you want to get a customisable copy of the Debian menu, +you just need to to the following : + 1) apt-get install menu-xdg + 2) chmod +x /etc/menu-methods/gnome-vfolder-user + 3) put your custom menu file in ~/.menu/ + 4) run update-menus as user (and rerun it each time you + make modifications to your menu files) + + + -- Marc Dequènes (Duck) Fri, 11 Mar 2005 02:59:43 +0100 + --- gnome-panel-2.14.1.orig/debian/ubuntu-about.desktop.in +++ gnome-panel-2.14.1/debian/ubuntu-about.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +_Name=About Ubuntu +_Comment=Learn more about Ubuntu +Exec=yelp ghelp:about-ubuntu +Icon=/usr/share/icons/hicolor/48x48/apps/distributor-logo.png +Terminal=false +Type=Application +Categories=GNOME;Application;Core; +StartupNotify=true