diff -Nru xfdesktop4-4.8.3/debian/changelog xfdesktop4-4.8.3/debian/changelog --- xfdesktop4-4.8.3/debian/changelog 2012-01-25 19:24:25.000000000 +0000 +++ xfdesktop4-4.8.3/debian/changelog 2012-02-07 19:49:49.000000000 +0000 @@ -1,3 +1,24 @@ +xfdesktop4 (4.8.3-1ubuntu9) precise; urgency=low + + * debian/patches: + - xubuntu_single-click-option.patch: clean up autogenerated .h file. + - xubuntu_use-tumbler.patch: refreshed, based on the latest version + from upstream bug report. + - xubuntu_refreshed-translations.patch: refreshed, new translations taken + from Thunar as the added string to show thumbnails is also used there. + * debian/rules: + - regenerate and clean autogenerated settings/*ui.h. + - drop obsolete configure option. + - use debhelper 9 hardening support. + * debian/compat bumped to 9. + * debian/control: + - b-dep on exo-utils for exo-csource. + - drop hardening-includes build-dep. + - update debhelper build-dep to 9 for hardening support. + - add dpkg-dev 1.16.1 build-dep for hardening support. + + -- Lionel Le Folgoc Tue, 07 Feb 2012 20:49:46 +0100 + xfdesktop4 (4.8.3-1ubuntu8) precise; urgency=low * debian/rules, debian/xfdesktop4-data.install: keep xfce-stripes.png, it's diff -Nru xfdesktop4-4.8.3/debian/compat xfdesktop4-4.8.3/debian/compat --- xfdesktop4-4.8.3/debian/compat 2009-03-15 14:58:31.000000000 +0000 +++ xfdesktop4-4.8.3/debian/compat 2012-02-07 19:47:12.000000000 +0000 @@ -1 +1 @@ -7 +9 diff -Nru xfdesktop4-4.8.3/debian/control xfdesktop4-4.8.3/debian/control --- xfdesktop4-4.8.3/debian/control 2012-01-24 21:28:44.000000000 +0000 +++ xfdesktop4-4.8.3/debian/control 2012-02-07 19:48:03.000000000 +0000 @@ -5,11 +5,12 @@ XSBC-Original-Maintainer: Debian Xfce Maintainers Uploaders: Yves-Alexis Perez , Lionel Le Folgoc -Build-Depends: debhelper (>= 7.0.50~), libglib2.0-dev (>= 2.18.0), +Build-Depends: debhelper (>= 9), libglib2.0-dev (>= 2.18.0), libgtk2.0-dev (>= 2.14.0), libxfce4util-dev (>= 4.8.0), libxfce4ui-1-dev (>= 4.8.0), libwnck-dev (>= 2.22), libxfconf-0-dev (>= 4.8.0), intltool, libdbus-glib-1-dev, libthunarx-2-dev (>= 1.2.0), libexo-1-dev (>= 0.6.0), libgarcon-1-0-dev (>= 0.1.2), - libnotify-dev, xfce4-dev-tools, autoconf, automake, libtool, chrpath, hardening-includes + libnotify-dev, chrpath, dpkg-dev (>= 1.16.1), xfce4-dev-tools, autoconf, automake, + libtool, exo-utils Standards-Version: 3.9.2 Homepage: http://www.xfce.org/ Vcs-Svn: svn://svn.debian.org/pkg-xfce/desktop/trunk/xfdesktop4/ diff -Nru xfdesktop4-4.8.3/debian/patches/xubuntu_refreshed-translations.patch xfdesktop4-4.8.3/debian/patches/xubuntu_refreshed-translations.patch --- xfdesktop4-4.8.3/debian/patches/xubuntu_refreshed-translations.patch 2012-01-24 21:16:17.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/xubuntu_refreshed-translations.patch 2012-02-07 19:29:16.000000000 +0000 @@ -1,481 +1,638 @@ -Description: Translations for the string added by xubuntu_single-click-option.patch - Taken from Thunar, as it contains the same string. +Description: Translations for the string added by xubuntu_* patches + Taken from Thunar, as it contains the same strings. Obtained with: $ cd po $ for i in *.po; do \ grep -C 1 '_Single click to activate items' /path/to/thunar-1.2.3/po/$i >> $i; \ + grep -C 1 '_Show thumbnails' /path/to/thunar-1.2.3/po/$i >> $i; \ done - Author: Lionel Le Folgoc Forwarded: not-needed -Last-Update: 2012-01-24 +Last-Update: 2012-02-07 ---- xfdesktop4-4.8.3.orig/po/pt.po -+++ xfdesktop4-4.8.3/po/pt.po -@@ -1812,3 +1812,6 @@ msgstr "_Montar volume" +--- xfdesktop4-4.8.3.orig/po/ca.po ++++ xfdesktop4-4.8.3/po/ca.po +@@ -1929,3 +1929,9 @@ msgstr "_Munta el volum" - #~ msgid "Scientific software" - #~ msgstr "Software científico" + #~ msgid "_Desktop Properties..." + #~ msgstr "Propietats _de l’escriptori" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Clique único para activar itens" ---- xfdesktop4-4.8.3.orig/po/kk.po -+++ xfdesktop4-4.8.3/po/kk.po -@@ -1448,3 +1448,6 @@ msgstr "Бө_лімді тіркеу" ++msgstr "Només un _clic per activar els elements" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Mo_stra miniatures" +--- xfdesktop4-4.8.3.orig/po/sk.po ++++ xfdesktop4-4.8.3/po/sk.po +@@ -1793,3 +1793,9 @@ msgstr "_Pripojiť zväzok" - #~ msgid "gtk-help" - #~ msgstr "gtk-help" + #~ msgid "Scientific software" + #~ msgstr "Vedecký softvér" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Э_лементерді белсенді қылу үшін бір шертуді қолдану" ++msgstr "_Aktivovať položky jednoduchým kliknutím" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Zobraziť _miniatúry" --- xfdesktop4-4.8.3.orig/po/nb.po +++ xfdesktop4-4.8.3/po/nb.po -@@ -981,3 +981,6 @@ msgstr "_Monter dataområde" +@@ -981,3 +981,9 @@ msgstr "_Monter dataområde" #~ msgstr "" #~ "Sørg for at du har en filbehandler installert som støtter Zfce " #~ "papirkurvtjenesten, for eksempel Thunar." +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "_Enkeltklikk for å aktivere elementer" ---- xfdesktop4-4.8.3.orig/po/et.po -+++ xfdesktop4-4.8.3/po/et.po -@@ -1789,3 +1789,6 @@ msgstr "_Liida andmeruum" - #, fuzzy - #~ msgid "Scientific software" - #~ msgstr "Hariduslik tarkvara" -+#: ../thunar/thunar-preferences-dialog.c:436 -+msgid "_Single click to activate items" -+msgstr "E_semed aktiveeritakse ühe klõpsuga" ---- xfdesktop4-4.8.3.orig/po/pa.po -+++ xfdesktop4-4.8.3/po/pa.po -@@ -1843,3 +1843,6 @@ msgstr "ਵਾਲੀਅਮ ਮਾਊਂ - - #~ msgid "Scientific software" - #~ msgstr "ਸਾਇੰਸ ਸਾਫਟਵੇਅਰ" -+#: ../thunar/thunar-preferences-dialog.c:436 -+msgid "_Single click to activate items" -+msgstr "ਆਈਟਮਾਂ ਨੂੰ ਐਕਟੀਵੇਟ ਕਰਨ ਲਈ ਇੱਕ ਵਾਰ ਕਲਿੱਕ(_S)" ---- xfdesktop4-4.8.3.orig/po/lt.po -+++ xfdesktop4-4.8.3/po/lt.po -@@ -1548,3 +1548,6 @@ msgstr "_Prijungti tomą" - - #~ msgid "Delete the current entry" - #~ msgstr "Ištrinti šį įrašą" -+#: ../thunar/thunar-preferences-dialog.c:436 -+msgid "_Single click to activate items" -+msgstr "Aktyvuoti _vienu pelės mygtuko paspaudimu" ---- xfdesktop4-4.8.3.orig/po/ro.po -+++ xfdesktop4-4.8.3/po/ro.po -@@ -941,3 +941,6 @@ msgstr "_Montare volum" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Vis miniatyrbilder" +--- xfdesktop4-4.8.3.orig/po/ja.po ++++ xfdesktop4-4.8.3/po/ja.po +@@ -1050,3 +1050,9 @@ msgstr "マウント(_M)" - #~ msgid "Make sure you have a file manager installed that supports the Xfce Trash service, such as Thunar." - #~ msgstr "Asigurați-vă ca aveți instalat un manager de fișiere cu suport pentru serviciul Xfce Trash (precum Thunar)." + #~ msgid "Are you sure that you want to delete \"%s\"?" + #~ msgstr "\"%s\" を削除してもよろしいですか?" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Clic _simplu pentru activarea elementelor" ++msgstr "シングルクリックでアイテムをアクティブにする(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "サムネイルを表示する(_S)" --- xfdesktop4-4.8.3.orig/po/pl.po +++ xfdesktop4-4.8.3/po/pl.po -@@ -2004,3 +2004,6 @@ msgstr "_Zamontuj" +@@ -2004,3 +2004,9 @@ msgstr "_Zamontuj" #, fuzzy #~ msgid "Scientific software" #~ msgstr "Oprogramowanie edukacyjne" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "Zaznaczanie _jednokrotnym kliknięciem" ---- xfdesktop4-4.8.3.orig/po/uk.po -+++ xfdesktop4-4.8.3/po/uk.po -@@ -1731,3 +1731,6 @@ msgstr "_Підключити том" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Miniatury" +--- xfdesktop4-4.8.3.orig/po/kk.po ++++ xfdesktop4-4.8.3/po/kk.po +@@ -1448,3 +1448,9 @@ msgstr "Бө_лімді тіркеу" - #~ msgid "Scientific software" - #~ msgstr "Навчальні програми" + #~ msgid "gtk-help" + #~ msgstr "gtk-help" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Активація елементів _одинарним клацанням" ---- xfdesktop4-4.8.3.orig/po/ms.po -+++ xfdesktop4-4.8.3/po/ms.po -@@ -1162,3 +1162,6 @@ msgstr "Lekap Volu_m" - #, fuzzy - #~ msgid "Edit" - #~ msgstr "Edit senarai" ++msgstr "Э_лементерді белсенді қылу үшін бір шертуді қолдану" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Ү_лгілерін көрсету" +--- xfdesktop4-4.8.3.orig/po/es.po ++++ xfdesktop4-4.8.3/po/es.po +@@ -1917,3 +1917,9 @@ msgstr "_Montar volumen" + + #~ msgid "Scientific software" + #~ msgstr "Software científico" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "" ---- xfdesktop4-4.8.3.orig/po/ca.po -+++ xfdesktop4-4.8.3/po/ca.po -@@ -1929,3 +1929,6 @@ msgstr "_Munta el volum" ++msgstr "Clic _simple para activar los elementos" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Mo_strar miniaturas" +--- xfdesktop4-4.8.3.orig/po/fi.po ++++ xfdesktop4-4.8.3/po/fi.po +@@ -1762,3 +1762,9 @@ msgstr "_Liitä taltio" - #~ msgid "_Desktop Properties..." - #~ msgstr "Propietats _de l’escriptori" + #~ msgid "Xfce 4 Menu Editor" + #~ msgstr "Xfce 4 valikkoeditori" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Només un _clic per activar els elements" ---- xfdesktop4-4.8.3.orig/po/ar.po -+++ xfdesktop4-4.8.3/po/ar.po -@@ -1868,3 +1868,6 @@ msgstr "ضم الج_زء" - #, fuzzy ++msgstr "Aktivoi kohteet k_ertanapsautuksella" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Näytä pienoiskuvat" +--- xfdesktop4-4.8.3.orig/po/en_GB.po ++++ xfdesktop4-4.8.3/po/en_GB.po +@@ -1971,3 +1971,11 @@ msgstr "_Mount Volume" + #~ msgid "Scientific software" - #~ msgstr "برامج تعليمية" + #~ msgstr "Educational software" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_نقرة واحدة لتفعيل العناصر" ---- xfdesktop4-4.8.3.orig/po/ru.po -+++ xfdesktop4-4.8.3/po/ru.po -@@ -945,3 +945,6 @@ msgstr "_Извлечь том" - #: ../src/xfdesktop-volume-icon.c:689 - msgid "_Mount Volume" - msgstr "_Подключить том" ++msgstr "_Single click to activate items" ++ ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Show thumbnails" ++ +--- xfdesktop4-4.8.3.orig/po/tr.po ++++ xfdesktop4-4.8.3/po/tr.po +@@ -1727,3 +1727,9 @@ msgstr "Birim _Bağla" + + #~ msgid "Scientific software" + #~ msgstr "Eğitimsel uygulama" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Одиночный щелчок активирует объект" ---- xfdesktop4-4.8.3.orig/po/nl.po -+++ xfdesktop4-4.8.3/po/nl.po -@@ -1888,3 +1888,6 @@ msgstr "Medium aan_koppelen" ++msgstr "Ögeleri aktif etmek için _tek tıklama" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Küçük _resimleri göster" +--- xfdesktop4-4.8.3.orig/po/da.po ++++ xfdesktop4-4.8.3/po/da.po +@@ -1732,3 +1732,9 @@ msgstr "_Montér arkiv" #~ msgid "Scientific software" - #~ msgstr "Wetenschappelijke programma's" + #~ msgstr "Videnskabelig software" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Onderdelen met enkele klik activeren" ---- xfdesktop4-4.8.3.orig/po/cs.po -+++ xfdesktop4-4.8.3/po/cs.po -@@ -2012,3 +2012,6 @@ msgstr "_Připojit svazek" ++msgstr "_Enkeltklik for aktivering af elementer" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Vis miniature" +--- xfdesktop4-4.8.3.orig/po/hr.po ++++ xfdesktop4-4.8.3/po/hr.po +@@ -1142,3 +1142,9 @@ msgstr "_Montiraj uređaj" - #~ msgid "Scientific software" - #~ msgstr "Vědecký software" + #~ msgid "_Unmount Volume" + #~ msgstr "_Odmontiraj uređaj" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Jednoduché kliknutí pro aktivaci položky" ++msgstr "_Jedan klik za aktiviranje stavki" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Pokaži sličice" --- xfdesktop4-4.8.3.orig/po/vi.po +++ xfdesktop4-4.8.3/po/vi.po -@@ -1847,3 +1847,6 @@ msgstr "_Gắn ổ" +@@ -1847,3 +1847,9 @@ msgstr "_Gắn ổ" #~ msgid "Unknown error." #~ msgstr "Lỗi không rõ." +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "" ---- xfdesktop4-4.8.3.orig/po/zh_TW.po -+++ xfdesktop4-4.8.3/po/zh_TW.po -@@ -1718,3 +1718,6 @@ msgstr "掛載儲存裝置(_M)" - - #~ msgid " Bytes)" - #~ msgstr " 位元組)" -+#: ../thunar/thunar-preferences-dialog.c:436 -+msgid "_Single click to activate items" -+msgstr "單點擊以啟用項目(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "" --- xfdesktop4-4.8.3.orig/po/mk.po +++ xfdesktop4-4.8.3/po/mk.po -@@ -1815,3 +1815,6 @@ msgstr "_Монтирај партици +@@ -1815,3 +1815,9 @@ msgstr "_Монтирај партици #~ msgid "Edit Properties" #~ msgstr "Уреди ги својствата" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "_Единечен клик за активирање на елементи" ---- xfdesktop4-4.8.3.orig/po/eu.po -+++ xfdesktop4-4.8.3/po/eu.po -@@ -1741,3 +1741,6 @@ msgstr "Bolumena _muntatu" - ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Прикажи сликички" +--- xfdesktop4-4.8.3.orig/po/ar.po ++++ xfdesktop4-4.8.3/po/ar.po +@@ -1868,3 +1868,9 @@ msgstr "ضم الج_زء" + #, fuzzy #~ msgid "Scientific software" - #~ msgstr "Zientzi softwarea" + #~ msgstr "برامج تعليمية" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Klik _bakana elementuak aktibatzeko" ++msgstr "_نقرة واحدة لتفعيل العناصر" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "أظهر المص_غارات" +--- xfdesktop4-4.8.3.orig/po/bn.po ++++ xfdesktop4-4.8.3/po/bn.po +@@ -1337,3 +1337,9 @@ msgstr "খন্ড মাউন্ট + + #~ msgid "Web Browser" + #~ msgstr "ওয়েব ব্রাউজার" ++#: ../thunar/thunar-preferences-dialog.c:436 ++msgid "_Single click to activate items" ++msgstr "আইটেম সক্রিয় করতে ক্লিক করুন (_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "থাম্বনেইল প্রদর্শন (_S)" --- xfdesktop4-4.8.3.orig/po/ur_PK.po +++ xfdesktop4-4.8.3/po/ur_PK.po -@@ -1903,3 +1903,6 @@ msgstr "والی_م ماؤنٹ کریں" +@@ -1903,3 +1903,9 @@ msgstr "والی_م ماؤنٹ کریں" #, fuzzy #~ msgid "Scientific software" #~ msgstr "تعلیمی پروگرام" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "ایک_ کلک پر عناصر کی فعالیت" ---- xfdesktop4-4.8.3.orig/po/he.po -+++ xfdesktop4-4.8.3/po/he.po -@@ -1806,3 +1806,6 @@ msgstr "_חבר כרך" - - #~ msgid "Edit Properties" - #~ msgstr "עריכת מאפיינים" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "ت_ھمبنیل دکھائیں" +--- xfdesktop4-4.8.3.orig/po/be.po ++++ xfdesktop4-4.8.3/po/be.po +@@ -1973,3 +1973,9 @@ msgstr "Пры_мантаваць пад + #, fuzzy + #~ msgid "Scientific software" + #~ msgstr "Адукацыйныя праграмы" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "לחיצה _אחת כדי להפעיל פריטים" ---- xfdesktop4-4.8.3.orig/po/es.po -+++ xfdesktop4-4.8.3/po/es.po -@@ -1917,3 +1917,6 @@ msgstr "_Montar volumen" - - #~ msgid "Scientific software" - #~ msgstr "Software científico" ++msgstr "Задзейнічаць элемэнты _самотнай пстрычкай" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Паказваць _мініятуры" +--- xfdesktop4-4.8.3.orig/po/te.po ++++ xfdesktop4-4.8.3/po/te.po +@@ -939,3 +939,9 @@ msgstr "సంపుటమును న + #: ../src/xfdesktop-volume-icon.c:689 + msgid "_Mount Volume" + msgstr "సంపుటమును అధిరోహించు (_M)" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Clic _simple para activar los elementos" ---- xfdesktop4-4.8.3.orig/po/id.po -+++ xfdesktop4-4.8.3/po/id.po -@@ -1889,3 +1889,6 @@ msgstr "_Mount Volume" ++msgstr "ఒకే నొక్కుతో అంశాలను క్రియాత్మకం చేయి (_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "చిరుచిత్రాలను చూపించు (_S)" +--- xfdesktop4-4.8.3.orig/po/ug.po ++++ xfdesktop4-4.8.3/po/ug.po +@@ -1516,3 +1516,9 @@ msgstr "Volume نى Mount قىل(_M)" - #~ msgid "Scientific software" - #~ msgstr "Peranti lunak pendidikan" + #~ msgid "gtk-help" + #~ msgstr "ヘルプ" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Klik tunggal untk mengaktivasi item" ---- xfdesktop4-4.8.3.orig/po/sq.po -+++ xfdesktop4-4.8.3/po/sq.po -@@ -1804,3 +1804,6 @@ msgstr "_Monto Vëllimin" - #, fuzzy ++msgstr "تۈرلەرنى بىرلا چېكىپ ئاكتىپلاش(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "thumbnails كۆرسەت(_S)" +--- xfdesktop4-4.8.3.orig/po/pa.po ++++ xfdesktop4-4.8.3/po/pa.po +@@ -1843,3 +1843,9 @@ msgstr "ਵਾਲੀਅਮ ਮਾਊਂ + #~ msgid "Scientific software" - #~ msgstr "Programe edukimi" + #~ msgstr "ਸਾਇੰਸ ਸਾਫਟਵੇਅਰ" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Klikim _njësh për aktivizim elementësh" ---- xfdesktop4-4.8.3.orig/po/gl.po -+++ xfdesktop4-4.8.3/po/gl.po -@@ -1504,3 +1504,6 @@ msgstr "_Montar volume" ++msgstr "ਆਈਟਮਾਂ ਨੂੰ ਐਕਟੀਵੇਟ ਕਰਨ ਲਈ ਇੱਕ ਵਾਰ ਕਲਿੱਕ(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "ਥੰਮਨੇਲ ਵੇਖਾਓ(_S)" +--- xfdesktop4-4.8.3.orig/po/sv.po ++++ xfdesktop4-4.8.3/po/sv.po +@@ -1855,3 +1855,9 @@ msgstr "_Montera volym" #~ msgid "Scientific software" - #~ msgstr "Software científico" + #~ msgstr "Vetenskaplig programvara" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Unha _soa pulsación para activar os elementos" ---- xfdesktop4-4.8.3.orig/po/ja.po -+++ xfdesktop4-4.8.3/po/ja.po -@@ -1050,3 +1050,6 @@ msgstr "マウント(_M)" ++msgstr "_Enkelklicka för att aktivera ett objekt" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Visa _miniatyrbilder" +--- xfdesktop4-4.8.3.orig/po/ur.po ++++ xfdesktop4-4.8.3/po/ur.po +@@ -1927,3 +1927,9 @@ msgstr "والی_م ماؤنٹ کریں" - #~ msgid "Are you sure that you want to delete \"%s\"?" - #~ msgstr "\"%s\" を削除してもよろしいですか?" + #~ msgid "Show windows on each workspace in sub_menus" + #~ msgstr "ہر مقام کار میں ونڈوز _ذیلی مینیو میں ظاہر کریں" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "シングルクリックでアイテムをアクティブにする(_S)" ---- xfdesktop4-4.8.3.orig/po/it.po -+++ xfdesktop4-4.8.3/po/it.po -@@ -1175,3 +1175,6 @@ msgstr "_Monta volume" ++msgstr "ایک_ کلک پر عناصر کی فعالیت" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "ت_ھمبنیل دکھائیں" +--- xfdesktop4-4.8.3.orig/po/zh_CN.po ++++ xfdesktop4-4.8.3/po/zh_CN.po +@@ -1838,3 +1838,9 @@ msgstr "挂载卷(_M)" - #~ msgid "Unable to create folder named \"%s\":" - #~ msgstr "Impossibile creare la cartella chiamata \"%s\":" + #~ msgid "Scientific software" + #~ msgstr "科学软件" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Singolo clic per attivare gli elementi" ++msgstr "单击激活项目(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "显示缩略图(_S)" --- xfdesktop4-4.8.3.orig/po/de.po +++ xfdesktop4-4.8.3/po/de.po -@@ -1516,3 +1516,6 @@ msgstr "Datenträger _einhängen" +@@ -1516,3 +1516,9 @@ msgstr "Datenträger _einhängen" #~ msgid "Scientific software" #~ msgstr "Bildungsprogramme" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "_Einfacher Klick zum Aktivieren von Objekten" ---- xfdesktop4-4.8.3.orig/po/en_GB.po -+++ xfdesktop4-4.8.3/po/en_GB.po -@@ -1971,3 +1971,7 @@ msgstr "_Mount Volume" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Miniatur-Vorschaubilder anzeigen" +--- xfdesktop4-4.8.3.orig/po/zh_TW.po ++++ xfdesktop4-4.8.3/po/zh_TW.po +@@ -1718,3 +1718,9 @@ msgstr "掛載儲存裝置(_M)" - #~ msgid "Scientific software" - #~ msgstr "Educational software" + #~ msgid " Bytes)" + #~ msgstr " 位元組)" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Single click to activate items" -+ ---- xfdesktop4-4.8.3.orig/po/fr.po -+++ xfdesktop4-4.8.3/po/fr.po -@@ -1769,3 +1769,6 @@ msgstr "_Monter le périphérique" ++msgstr "單點擊以啟用項目(_S)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "顯示縮圖(_S)" +--- xfdesktop4-4.8.3.orig/po/he.po ++++ xfdesktop4-4.8.3/po/he.po +@@ -1806,3 +1806,9 @@ msgstr "_חבר כרך" - #~ msgid "Scientific software" - #~ msgstr "Logiciels éducatifs" + #~ msgid "Edit Properties" + #~ msgstr "עריכת מאפיינים" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Simple clic pour activer les éléments" ---- xfdesktop4-4.8.3.orig/po/sk.po -+++ xfdesktop4-4.8.3/po/sk.po -@@ -1793,3 +1793,6 @@ msgstr "_Pripojiť zväzok" ++msgstr "לחיצה _אחת כדי להפעיל פריטים" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "הצגת _תמונות מוקטנות" +--- xfdesktop4-4.8.3.orig/po/eo.po ++++ xfdesktop4-4.8.3/po/eo.po +@@ -1720,3 +1720,9 @@ msgstr "" - #~ msgid "Scientific software" - #~ msgstr "Vedecký softvér" + #~ msgid "Delete the current entry" + #~ msgstr "Forigu la kurantan elementon" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Aktivovať položky jednoduchým kliknutím" ---- xfdesktop4-4.8.3.orig/po/ka.po -+++ xfdesktop4-4.8.3/po/ka.po -@@ -949,3 +949,6 @@ msgstr "" - - #~ msgid "Style:" - #~ msgstr "სტილი:" ++msgstr "_Unuopa klako por aktivigi erojn" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Montru bildetojn" +--- xfdesktop4-4.8.3.orig/po/ms.po ++++ xfdesktop4-4.8.3/po/ms.po +@@ -1162,3 +1162,9 @@ msgstr "Lekap Volu_m" + #, fuzzy + #~ msgid "Edit" + #~ msgstr "Edit senarai" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "" ---- xfdesktop4-4.8.3.orig/po/da.po -+++ xfdesktop4-4.8.3/po/da.po -@@ -1732,3 +1732,6 @@ msgstr "_Montér arkiv" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "" +--- xfdesktop4-4.8.3.orig/po/id.po ++++ xfdesktop4-4.8.3/po/id.po +@@ -1889,3 +1889,9 @@ msgstr "_Mount Volume" #~ msgid "Scientific software" - #~ msgstr "Videnskabelig software" -+#: ../thunar/thunar-preferences-dialog.c:436 -+msgid "_Single click to activate items" -+msgstr "_Enkeltklik for aktivering af elementer" ---- xfdesktop4-4.8.3.orig/po/el.po -+++ xfdesktop4-4.8.3/po/el.po -@@ -1006,3 +1006,6 @@ msgstr "Προ_σάρτηση τόμου - - #~ msgid "Whether or not the app supports startup notification" - #~ msgstr "Αν η εφαρμογή υποστηρίζει ενημέρωση εκκίνησης" + #~ msgstr "Peranti lunak pendidikan" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Μονό κλικ για την ενεργοποίηση αντικειμένων" ---- xfdesktop4-4.8.3.orig/po/ug.po -+++ xfdesktop4-4.8.3/po/ug.po -@@ -1516,3 +1516,6 @@ msgstr "Volume نى Mount قىل(_M)" - - #~ msgid "gtk-help" - #~ msgstr "ヘルプ" ++msgstr "_Klik tunggal untk mengaktivasi item" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Tampilkan miniatur" +--- xfdesktop4-4.8.3.orig/po/et.po ++++ xfdesktop4-4.8.3/po/et.po +@@ -1789,3 +1789,9 @@ msgstr "_Liida andmeruum" + #, fuzzy + #~ msgid "Scientific software" + #~ msgstr "Hariduslik tarkvara" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "تۈرلەرنى بىرلا چېكىپ ئاكتىپلاش(_S)" ---- xfdesktop4-4.8.3.orig/po/hr.po -+++ xfdesktop4-4.8.3/po/hr.po -@@ -1142,3 +1142,6 @@ msgstr "_Montiraj uređaj" ++msgstr "E_semed aktiveeritakse ühe klõpsuga" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Näidata pi_sipilte" +--- xfdesktop4-4.8.3.orig/po/nl.po ++++ xfdesktop4-4.8.3/po/nl.po +@@ -1888,3 +1888,9 @@ msgstr "Medium aan_koppelen" - #~ msgid "_Unmount Volume" - #~ msgstr "_Odmontiraj uređaj" + #~ msgid "Scientific software" + #~ msgstr "Wetenschappelijke programma's" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Jedan klik za aktiviranje stavki" ---- xfdesktop4-4.8.3.orig/po/zh_CN.po -+++ xfdesktop4-4.8.3/po/zh_CN.po -@@ -1838,3 +1838,6 @@ msgstr "挂载卷(_M)" ++msgstr "_Onderdelen met enkele klik activeren" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Miniaturen _weergeven" +--- xfdesktop4-4.8.3.orig/po/pt.po ++++ xfdesktop4-4.8.3/po/pt.po +@@ -1812,3 +1812,9 @@ msgstr "_Montar volume" #~ msgid "Scientific software" - #~ msgstr "科学软件" + #~ msgstr "Software científico" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "单击激活项目(_S)" ---- xfdesktop4-4.8.3.orig/po/fi.po -+++ xfdesktop4-4.8.3/po/fi.po -@@ -1762,3 +1762,6 @@ msgstr "_Liitä taltio" ++msgstr "_Clique único para activar itens" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Mostar miniaturas" +--- xfdesktop4-4.8.3.orig/po/ast.po ++++ xfdesktop4-4.8.3/po/ast.po +@@ -1499,3 +1499,9 @@ msgstr "_Montar volume" - #~ msgid "Xfce 4 Menu Editor" - #~ msgstr "Xfce 4 valikkoeditori" + #~ msgid "Scientific software" + #~ msgstr "Software de ciencia" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Aktivoi kohteet k_ertanapsautuksella" ---- xfdesktop4-4.8.3.orig/po/si.po -+++ xfdesktop4-4.8.3/po/si.po -@@ -1328,3 +1328,6 @@ msgstr "පරිමාව _Mount කර ++msgstr "Clic _simple p'activar los elementos" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Am_osar miniatures" +--- xfdesktop4-4.8.3.orig/po/ka.po ++++ xfdesktop4-4.8.3/po/ka.po +@@ -949,3 +949,9 @@ msgstr "" - #~ msgid "Scientific software" - #~ msgstr "විද්‍යාත්මක මෘදුකාංග" + #~ msgid "Style:" + #~ msgstr "სტილი:" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "" ---- xfdesktop4-4.8.3.orig/po/te.po -+++ xfdesktop4-4.8.3/po/te.po -@@ -939,3 +939,6 @@ msgstr "సంపుటమును న - #: ../src/xfdesktop-volume-icon.c:689 - msgid "_Mount Volume" - msgstr "సంపుటమును అధిరోహించు (_M)" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "" +--- xfdesktop4-4.8.3.orig/po/it.po ++++ xfdesktop4-4.8.3/po/it.po +@@ -1175,3 +1175,9 @@ msgstr "_Monta volume" + + #~ msgid "Unable to create folder named \"%s\":" + #~ msgstr "Impossibile creare la cartella chiamata \"%s\":" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "ఒకే నొక్కుతో అంశాలను క్రియాత్మకం చేయి (_S)" ++msgstr "_Singolo clic per attivare gli elementi" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Mostra _miniature" --- xfdesktop4-4.8.3.orig/po/dz.po +++ xfdesktop4-4.8.3/po/dz.po -@@ -1824,3 +1824,6 @@ msgstr "སྐད་ཤུགས་ས +@@ -1824,3 +1824,9 @@ msgstr "སྐད་ཤུགས་ས #~ msgid "Edit Properties" #~ msgstr "རྒྱུ་དངོས་ཚུ་ཞུན་དག་རྐྱབས།" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "རྣམ་གྲངས་ཚུ་ཤུགས་ལྡན་བཟོ་ནི་ལུ་ ཨེབ་གཏང་རྐྱང་པ།(_S)" ---- xfdesktop4-4.8.3.orig/po/ast.po -+++ xfdesktop4-4.8.3/po/ast.po -@@ -1499,3 +1499,6 @@ msgstr "_Montar volume" - - #~ msgid "Scientific software" - #~ msgstr "Software de ciencia" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "མཐེ་གཟེར་ཚུ་སྟོན།(_S)" +--- xfdesktop4-4.8.3.orig/po/ru.po ++++ xfdesktop4-4.8.3/po/ru.po +@@ -945,3 +945,9 @@ msgstr "_Извлечь том" + #: ../src/xfdesktop-volume-icon.c:689 + msgid "_Mount Volume" + msgstr "_Подключить том" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Clic _simple p'activar los elementos" ---- xfdesktop4-4.8.3.orig/po/lv.po -+++ xfdesktop4-4.8.3/po/lv.po -@@ -1927,3 +1927,6 @@ msgstr "_Montēt sējumu" ++msgstr "_Одиночный щелчок активирует объект" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Показывать _образцы файлов" +--- xfdesktop4-4.8.3.orig/po/pt_BR.po ++++ xfdesktop4-4.8.3/po/pt_BR.po +@@ -1949,3 +1949,9 @@ msgstr "_Montar volume" #~ msgid "Scientific software" - #~ msgstr "Zinātnes programmatūra" + #~ msgstr "Programas científicos" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Viens klikšķis, lai aktivizētu vienumus" ---- xfdesktop4-4.8.3.orig/po/tr.po -+++ xfdesktop4-4.8.3/po/tr.po -@@ -1727,3 +1727,6 @@ msgstr "Birim _Bağla" ++msgstr "Clique único para ativar iten_s" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Mostar miniaturas" +--- xfdesktop4-4.8.3.orig/po/el.po ++++ xfdesktop4-4.8.3/po/el.po +@@ -1006,3 +1006,9 @@ msgstr "Προ_σάρτηση τόμου - #~ msgid "Scientific software" - #~ msgstr "Eğitimsel uygulama" + #~ msgid "Whether or not the app supports startup notification" + #~ msgstr "Αν η εφαρμογή υποστηρίζει ενημέρωση εκκίνησης" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Ögeleri aktif etmek için _tek tıklama" ---- xfdesktop4-4.8.3.orig/po/ur.po -+++ xfdesktop4-4.8.3/po/ur.po -@@ -1927,3 +1927,6 @@ msgstr "والی_م ماؤنٹ کریں" ++msgstr "_Μονό κλικ για την ενεργοποίηση αντικειμένων" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Εμφάνιση _μικρογραφιών:" +--- xfdesktop4-4.8.3.orig/po/ro.po ++++ xfdesktop4-4.8.3/po/ro.po +@@ -941,3 +941,9 @@ msgstr "_Montare volum" - #~ msgid "Show windows on each workspace in sub_menus" - #~ msgstr "ہر مقام کار میں ونڈوز _ذیلی مینیو میں ظاہر کریں" + #~ msgid "Make sure you have a file manager installed that supports the Xfce Trash service, such as Thunar." + #~ msgstr "Asigurați-vă ca aveți instalat un manager de fișiere cu suport pentru serviciul Xfce Trash (precum Thunar)." +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "ایک_ کلک پر عناصر کی فعالیت" ++msgstr "Clic _simplu pentru activarea elementelor" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Arată _miniaturi" --- xfdesktop4-4.8.3.orig/po/hu.po +++ xfdesktop4-4.8.3/po/hu.po -@@ -973,3 +973,6 @@ msgstr "Kötet _csatolása" +@@ -973,3 +973,9 @@ msgstr "Kötet _csatolása" #~ msgstr "" #~ "Győződjön meg, hogy telepítve van az Xfce Kuka szolgáltatást támogató " #~ "fájlkezelő, például a Thunar." +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "Elemek _aktiválása egy kattintással" ---- xfdesktop4-4.8.3.orig/po/eo.po -+++ xfdesktop4-4.8.3/po/eo.po -@@ -1720,3 +1720,6 @@ msgstr "" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Bélyegké_pek megjelenítése" +--- xfdesktop4-4.8.3.orig/po/gl.po ++++ xfdesktop4-4.8.3/po/gl.po +@@ -1504,3 +1504,9 @@ msgstr "_Montar volume" - #~ msgid "Delete the current entry" - #~ msgstr "Forigu la kurantan elementon" + #~ msgid "Scientific software" + #~ msgstr "Software científico" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Unuopa klako por aktivigi erojn" ---- xfdesktop4-4.8.3.orig/po/pt_BR.po -+++ xfdesktop4-4.8.3/po/pt_BR.po -@@ -1949,3 +1949,6 @@ msgstr "_Montar volume" ++msgstr "Unha _soa pulsación para activar os elementos" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Mo_strar miniaturas" +--- xfdesktop4-4.8.3.orig/po/sq.po ++++ xfdesktop4-4.8.3/po/sq.po +@@ -1804,3 +1804,9 @@ msgstr "_Monto Vëllimin" + #, fuzzy + #~ msgid "Scientific software" + #~ msgstr "Programe edukimi" ++#: ../thunar/thunar-preferences-dialog.c:436 ++msgid "_Single click to activate items" ++msgstr "Klikim _njësh për aktivizim elementësh" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Shfaqni miniatura" +--- xfdesktop4-4.8.3.orig/po/uk.po ++++ xfdesktop4-4.8.3/po/uk.po +@@ -1731,3 +1731,9 @@ msgstr "_Підключити том" #~ msgid "Scientific software" - #~ msgstr "Programas científicos" + #~ msgstr "Навчальні програми" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Clique único para ativar iten_s" ++msgstr "Активація елементів _одинарним клацанням" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Показувати мініатюри" +--- xfdesktop4-4.8.3.orig/po/lv.po ++++ xfdesktop4-4.8.3/po/lv.po +@@ -1927,3 +1927,9 @@ msgstr "_Montēt sējumu" + + #~ msgid "Scientific software" + #~ msgstr "Zinātnes programmatūra" ++#: ../thunar/thunar-preferences-dialog.c:436 ++msgid "_Single click to activate items" ++msgstr "_Viens klikšķis, lai aktivizētu vienumus" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Rādīt sīktēlus" --- xfdesktop4-4.8.3.orig/po/ko.po +++ xfdesktop4-4.8.3/po/ko.po -@@ -934,3 +934,6 @@ msgstr "볼륨 추출(_j)" +@@ -934,3 +934,9 @@ msgstr "볼륨 추출(_j)" msgid "_Mount Volume" msgstr "볼륨 마운트(_M)" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" +msgstr "싱글클릭으로 아이템 활성화(_S)" ---- xfdesktop4-4.8.3.orig/po/bn.po -+++ xfdesktop4-4.8.3/po/bn.po -@@ -1337,3 +1337,6 @@ msgstr "খন্ড মাউন্ট ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "썸네일 보이기(_S)" +--- xfdesktop4-4.8.3.orig/po/eu.po ++++ xfdesktop4-4.8.3/po/eu.po +@@ -1741,3 +1741,9 @@ msgstr "Bolumena _muntatu" - #~ msgid "Web Browser" - #~ msgstr "ওয়েব ব্রাউজার" + #~ msgid "Scientific software" + #~ msgstr "Zientzi softwarea" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "আইটেম সক্রিয় করতে ক্লিক করুন (_S)" ---- xfdesktop4-4.8.3.orig/po/sv.po -+++ xfdesktop4-4.8.3/po/sv.po -@@ -1855,3 +1855,6 @@ msgstr "_Montera volym" ++msgstr "Klik _bakana elementuak aktibatzeko" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Argazkitxoak bi_starazi" +--- xfdesktop4-4.8.3.orig/po/fr.po ++++ xfdesktop4-4.8.3/po/fr.po +@@ -1769,3 +1769,9 @@ msgstr "_Monter le périphérique" #~ msgid "Scientific software" - #~ msgstr "Vetenskaplig programvara" + #~ msgstr "Logiciels éducatifs" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "_Enkelklicka för att aktivera ett objekt" ---- xfdesktop4-4.8.3.orig/po/be.po -+++ xfdesktop4-4.8.3/po/be.po -@@ -1973,3 +1973,6 @@ msgstr "Пры_мантаваць пад - #, fuzzy ++msgstr "_Simple clic pour activer les éléments" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "_Montrer les miniatures" +--- xfdesktop4-4.8.3.orig/po/cs.po ++++ xfdesktop4-4.8.3/po/cs.po +@@ -2012,3 +2012,9 @@ msgstr "_Připojit svazek" + #~ msgid "Scientific software" - #~ msgstr "Адукацыйныя праграмы" + #~ msgstr "Vědecký software" +#: ../thunar/thunar-preferences-dialog.c:436 +msgid "_Single click to activate items" -+msgstr "Задзейнічаць элемэнты _самотнай пстрычкай" ++msgstr "_Jednoduché kliknutí pro aktivaci položky" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Z_obrazovat náhledy" +--- xfdesktop4-4.8.3.orig/po/si.po ++++ xfdesktop4-4.8.3/po/si.po +@@ -1328,3 +1328,9 @@ msgstr "පරිමාව _Mount කර + + #~ msgid "Scientific software" + #~ msgstr "විද්‍යාත්මක මෘදුකාංග" ++#: ../thunar/thunar-preferences-dialog.c:436 ++msgid "_Single click to activate items" ++msgstr "" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "" +--- xfdesktop4-4.8.3.orig/po/lt.po ++++ xfdesktop4-4.8.3/po/lt.po +@@ -1548,3 +1548,9 @@ msgstr "_Prijungti tomą" + + #~ msgid "Delete the current entry" + #~ msgstr "Ištrinti šį įrašą" ++#: ../thunar/thunar-preferences-dialog.c:436 ++msgid "_Single click to activate items" ++msgstr "Aktyvuoti _vienu pelės mygtuko paspaudimu" ++#: ../thunar/thunar-preferences-dialog.c:253 ++msgid "_Show thumbnails" ++msgstr "Rodyti _miniatūras" diff -Nru xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch --- xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch 2012-01-24 21:34:17.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/xubuntu_single-click-option.patch 2012-02-07 19:29:16.000000000 +0000 @@ -11,394 +11,10 @@ has been modified to match the option name in Thunar, so we can reuse existing translations. -Last-Update: 2012-01-24 +Last-Update: 2012-02-07 Origin: other, https://bugzilla.xfce.org/attachment.cgi?id=4113 Bug: https://bugzilla.xfce.org/show_bug.cgi?id=1797 ---- xfdesktop4-4.8.3.orig/settings/xfdesktop-settings-ui.h -+++ xfdesktop4-4.8.3/settings/xfdesktop-settings-ui.h -@@ -651,189 +651,201 @@ static const char xfdesktop_settings_ui[ - "operty name=\"position\">1\n " - " \n \n " - " \n \n True\n " -- " GDK_POINTER_MOTION_MASK | GDK_POINTER_MOT" -- "ION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n 4\n \n " -- " \n True\n True\n " -- " GDK_POINTER_MOTION_MASK | GDK_POIN" -- "TER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK<" -- "/property>\n Use custom _font size:\n " -- " True\n True\n \n \n " -- " False\n " -- " \n " -- " \n \n " -- " \n True\n " -- " False\n " -- " True\n " -- " GDK_POINTER" -- "_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | G" -- "DK_BUTTON_RELEASE_MASK\n " -- " adjustment4\n " -- " \n " -- " \n False\n 1\n " -- " \n \n " -- " \n " -- "\n False\n 2\n \n" -- " \n " -- " \n \n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BU" -- "TTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -- " 12\n " -- " \n " -- " \n " -- " True\n " -- " GDK_POINTER_MOTIO" -- "N_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUT" -- "TON_RELEASE_MASK\n Label trans_parency:\n True\n \n \n " -- " False\n " -- " \n " -- " \n \n " -- " \n \n " -+ " True\n " -+ " True\n " -+ " GDK_POINTER_" -+ "MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GD" -+ "K_BUTTON_RELEASE_MASK\n <" -+ "property name=\"label\" translatable=\"yes\">_Single click to activate " -+ "items\n True\n True\n " -+ " \n \n " -+ " \n \n " -+ " True\n " -+ " GDK_POINTER_MOTION_MASK | GDK_PO" -+ "INTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MAS" -+ "K\n 4\n \n " -+ " \n True\n " -+ " True\n " -+ " GDK_POINTER_MOTION_MASK " -+ "| GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_REL" -+ "EASE_MASK\n Use custom _font size:\n" -+ " True\n True\n " -- " GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTIO" -- "N_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n Specify the transparency level for the rounded" -- " label drawn behind the icon text\n " -- " adjustment5\n " -- " 0\n GTK_POS_RIGHT\n \n \n " -- " 1\n " -- " \n " -- " \n \n " -- " \n " -- " 3\n " -- " \n \n " -- " \n \n \n \n \n " -- " \n " -- " True\n " -- " GDK_POINTER_MOTION_MASK | GDK_POINTER" -- "_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n <b>Appearance</b>\n " -- " True\n " -- " \n \n " -- " \n \n " -- " False\n " -- " \n \n \n" -- " \n " -- " True\n " -+ "e=\"draw_indicator\">True\n " -+ " \n \n " -+ " False\n \n " -+ " \n \n \n True\n " -+ " False\n " -+ " True" -+ "\n GDK" -+ "_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_" -+ "MASK | GDK_BUTTON_RELEASE_MASK\n " -+ " adjustment4\n " -+ " \n " -+ " \n False\n " -+ " 1\n " -+ " \n \n" -+ " \n " -+ " \n False\n 2\n \n \n " -+ " \n \n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK" -+ " | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -+ " 12\n " -+ " \n " -+ " \n " -+ " True\n " -+ " GDK_POIN" -+ "TER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK " -+ "| GDK_BUTTON_RELEASE_MASK\n " -+ " Label trans_parenc" -+ "y:\n True\n " -+ "\n \n " -+ " False" -+ "\n \n " -+ " \n \n" -+ " \n True\n True\n " -+ " GDK_POINTER_MOTION_MASK | GDK_POINTE" -+ "R_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n Specify the transparency level for the " -+ "rounded label drawn behind the icon text\n " -+ " adjustment5\n " -+ "0\n GTK_POS_RIGHT\n " -+ " \n \n " -+ " 1\n \n " -+ " \n \n \n " -+ " 3\n " -+ " \n " -+ "\n \n " -+ "\n \n " -+ "\n \n " -+ " \n " -+ " True\n " - " GDK_POINTER_MOTION_MASK | GDK_" - "POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_M" -- "ASK\n 0\n G" -- "TK_SHADOW_NONE\n \n " -- " \n " -- " True\n " -- " GDK_POINTER_MOTION_M" -- "ASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON" -- "_RELEASE_MASK\n 6\n 6\n \n " -- " \n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK " -- "| GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -- " GTK_POLICY_" -- "AUTOMATIC\n GTK_POLICY_AUTOMATIC\n " -- " GTK_SHADOW_ETCHED_IN\n \n " -- " " -- "\n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | G" -- "DK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -- " False\n \n " -- " \n \n " -- " \n \n " -- " \n \n \n True\n GDK_POINTE" -- "R_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | " -- "GDK_BUTTON_RELEASE_MASK\n <b>Default Icons</b>" -- "\n " -- "True\n \n " -- " \n \n " -- " \n 1\n \n \n" -- " \n \n " -- "\n \n True\n GDK_POINTER_MOTION_MA" -- "SK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_" -- "RELEASE_MASK\n _Icons\n True\n \n " -- " \n 2\n False\n \n \n " -- " \n \n \n " -- " \n 1\n " -- " \n \n \n \n True\n " -- " GDK_POINTER_MOTION_MASK | GDK_POINT" -- "ER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n \n \n True\n True\n" -- " True\n " -- " GDK_POINTER_MOTION_MASK | GDK_P" -- "OINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MA" -- "SK\n gtk-help\n True\n " -- " \n \n \n " -- " \n True\n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PR" -- "ESS_MASK | GDK_BUTTON_RELEASE_MASK\n gtk-close\n True\n \n \n 1\n " -- " \n \n \n " -- " \n False\n " -- " GTK_PACK_END\n " -- " \n \n \n \n \n button2\n button1\n " -- " \n \n\n" -+ "ASK\n <b>Appearance</b>\n " -+ " True\n " -+ " \n \n " -+ " \n \n " -+ " False\n " -+ " \n \n <" -+ "child>\n " -+ "\n True\n " -+ " GDK_POINTER_MOTION_MAS" -+ "K | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_R" -+ "ELEASE_MASK\n 0\n GTK_SHADOW_NONE\n \n " -+ " \n True\n GDK_POINTER_M" -+ "OTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK" -+ "_BUTTON_RELEASE_MASK\n 6\n 6\n \n \n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HI" -+ "NT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -+ " GTK" -+ "_POLICY_AUTOMATIC\n GTK_POLICY_AUTOMATIC\n " -+ " GTK_SHADOW_ETCHED_" -+ "IN\n \n " -+ " \n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_M" -+ "ASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n " -+ " False" -+ "\n \n " -+ " \n \n " -+ " \n \n \n \n \n True" -+ "\n GDK_" -+ "POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_M" -+ "ASK | GDK_BUTTON_RELEASE_MASK\n <" -+ "property name=\"label\" translatable=\"yes\"><b>Default Icons<" -+ "/b>\n True\n \n " -+ " \n \n " -+ " \n 1" -+ "\n \n \n \n \n " -+ " \n \n True\n GDK_POINTER_MOT" -+ "ION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_B" -+ "UTTON_RELEASE_MASK\n _Icons\n True\n " -+ "\n \n 2\n F" -+ "alse\n \n " -+ "\n \n \n \n " -+ " \n 1\n \n \n \n \n True\n GDK_POINTER_MOTION_MASK | GD" -+ "K_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE" -+ "_MASK\n \n \n T" -+ "rue\n True\n True\n GDK_POINTER_MOTION_MASK " -+ "| GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_REL" -+ "EASE_MASK\n gtk-help" -+ "\n True\n \n \n \n" -+ " \n " -+ " True\n True\n True\n GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUT" -+ "TON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK\n gtk-close\n True\n \n " -+ " \n 1" -+ "\n \n \n \n" -+ " \n False\n GTK_PACK_END\n" -+ " \n \n \n \n" -+ " \n button2\n button1\n \n \n\n" - }; - --static const unsigned xfdesktop_settings_ui_length = 56448u; -+static const unsigned xfdesktop_settings_ui_length = 57281u; - --- xfdesktop4-4.8.3.orig/settings/main.c +++ xfdesktop4-4.8.3/settings/main.c @@ -69,6 +69,7 @@ diff -Nru xfdesktop4-4.8.3/debian/patches/xubuntu_use-tumbler.patch xfdesktop4-4.8.3/debian/patches/xubuntu_use-tumbler.patch --- xfdesktop4-4.8.3/debian/patches/xubuntu_use-tumbler.patch 2012-01-24 21:53:49.000000000 +0000 +++ xfdesktop4-4.8.3/debian/patches/xubuntu_use-tumbler.patch 2012-02-07 19:29:16.000000000 +0000 @@ -1,49 +1,15 @@ -From 671ad508d0e86581f5ac81f777bda27f775ae56e Mon Sep 17 00:00:00 2001 -From: Eric Koegel -Date: Sat, 14 Jan 2012 19:35:15 +0300 -Subject: [PATCH] Thumbnail desktop icons from tumblerd and display icon - tooltips - -Adds support for drawing thumbnails from the dbus thumbnail -service. Adds a show-thumbnails xfconf property to toggle showing -thumbnails. Moves the marshal.list into common to allow -xfdesktop-settings to use thumbnails as well. It's possible to -add code to fallback to gdk_pixbuf loading in a worker thread -in the future should tumblerd not be installed but this isn't -implemented or needed for this patch to operate. This patch -also sets it so that xfdesktop will display preview icons on -the tooltip popup. For bug 4344. - -Slightly modified for Xubuntu to apply cleanly, to comment out debug -statements, to remove the preview icon from the tooltip and to disable -thumbnails by default. - -Last-Update: 2012-01-17 -Origin: other, https://bugzilla.xfce.org/attachment.cgi?id=4102 +Description: use Tumbler to generate thumbnails on desktop + Slightly modified for Xubuntu to apply cleanly, comment out debug + statements, remove the thumbnail from the icon tooltip and disable + thumbnails by default. The added string has been modified to match + the option name in Thunar, so we can reuse existing translations + (yes, there's a mnemonics conflict, I know). +Last-Update: 2012-02-07 +Origin: other, https://bugzilla.xfce.org/attachment.cgi?id=4168 Bug: https://bugzilla.xfce.org/show_bug.cgi?id=4344 ---- - common/Makefile.am | 37 +++- - common/xfdesktop-marshal.list | 4 + - common/xfdesktop-thumbnailer.c | 588 +++++++++++++++++++++++++++++++++++++ - common/xfdesktop-thumbnailer.h | 101 +++++++ - src/Makefile.am | 16 +- - src/xfdesktop-file-icon-manager.c | 124 ++++++++- - src/xfdesktop-file-icon-manager.h | 4 + - src/xfdesktop-icon.c | 31 ++ - src/xfdesktop-icon.h | 6 + - src/xfdesktop-marshal.list | 2 - - src/xfdesktop-regular-file-icon.c | 78 +++++- - 12 files changed, 969 insertions(+), 23 deletions(-) - create mode 100644 common/xfdesktop-marshal.list - create mode 100644 common/xfdesktop-thumbnailer.c - create mode 100644 common/xfdesktop-thumbnailer.h - delete mode 100644 src/xfdesktop-marshal.list - -diff --git a/common/Makefile.am b/common/Makefile.am -index b6145ba..1af6ac8 100644 ---- a/common/Makefile.am -+++ b/common/Makefile.am +--- xfdesktop4-4.8.3.orig/common/Makefile.am ++++ xfdesktop4-4.8.3/common/Makefile.am @@ -2,9 +2,44 @@ noinst_LTLIBRARIES = libxfdesktop.la libxfdesktop_la_SOURCES = \ @@ -90,22 +56,16 @@ + +EXTRA_DIST = \ + xfdesktop-marshal.list -diff --git a/common/xfdesktop-marshal.list b/common/xfdesktop-marshal.list -new file mode 100644 -index 0000000..8fe4148 --- /dev/null -+++ b/common/xfdesktop-marshal.list ++++ xfdesktop4-4.8.3/common/xfdesktop-marshal.list @@ -0,0 +1,4 @@ +BOOLEAN:VOID +BOOLEAN:ENUM,INT +VOID:UINT,BOXED +VOID:STRING,STRING -diff --git a/common/xfdesktop-thumbnailer.c b/common/xfdesktop-thumbnailer.c -new file mode 100644 -index 0000000..20bf489 --- /dev/null -+++ b/common/xfdesktop-thumbnailer.c -@@ -0,0 +1,588 @@ ++++ xfdesktop4-4.8.3/common/xfdesktop-thumbnailer.c +@@ -0,0 +1,571 @@ +/* + * xfdesktop - xfce4's desktop manager + * @@ -149,42 +109,26 @@ +#include "xfdesktop-thumbnailer.h" +#include "xfdesktop-marshal.h" + -+static void -+xfdesktop_thumbnailer_init (GObject *); -+static void -+xfdesktop_thumbnailer_class_init (GObjectClass *); ++static void xfdesktop_thumbnailer_init(GObject *); ++static void xfdesktop_thumbnailer_class_init(GObjectClass *); + -+static void -+xfdesktop_thumbnailer_dispose (GObject *object); -+static void -+xfdesktop_thumbnailer_finalize (GObject *object); ++static void xfdesktop_thumbnailer_dispose(GObject *object); ++static void xfdesktop_thumbnailer_finalize(GObject *object); + -+static void -+xfdesktop_thumbnailer_request_finished_dbus ( -+ DBusGProxy *proxy, -+ gint handle, -+ gpointer data); -+static void -+xfdesktop_thumbnailer_thumbnail_ready_dbus ( -+ DBusGProxy *proxy, -+ gint handle, -+ const gchar **uri, -+ gpointer data); ++static void xfdesktop_thumbnailer_request_finished_dbus(DBusGProxy *proxy, ++ gint handle, ++ gpointer data); ++ ++static void xfdesktop_thumbnailer_thumbnail_ready_dbus(DBusGProxy *proxy, ++ gint handle, ++ const gchar **uri, ++ gpointer data); + -+static gboolean -+xfdesktop_thumbnailer_queue_request_timer (XfdesktopThumbnailer *thumbnailer); ++static gboolean xfdesktop_thumbnailer_queue_request_timer(XfdesktopThumbnailer *thumbnailer); + +static GObjectClass *parent_class = NULL; +static XfdesktopThumbnailer *thumbnailer_object = NULL; + -+typedef enum -+{ -+ XFDESKTOP_NULL_SERVICE, -+ XFDESKTOP_THUMBNAILER_SERVICE, -+ XFDESKTOP_GTK_SERVICE, -+ XFDESKTOP_SERVICE_COUNT -+} XFDESKTOP_ICON_SERVICE; -+ +enum +{ + THUMBNAIL_READY, @@ -194,11 +138,11 @@ +static guint thumbnailer_signals[LAST_SIGNAL] = { 0, }; + +GType -+xfdesktop_thumbnailer_get_type (void) ++xfdesktop_thumbnailer_get_type(void) +{ + static GType xfdesktop_thumbnailer_type = 0; + -+ if (!xfdesktop_thumbnailer_type) { ++ if(!xfdesktop_thumbnailer_type) { + static const GTypeInfo xfdesktop_thumbnailer_info = + { + sizeof (XfdesktopThumbnailerClass), @@ -213,11 +157,11 @@ + NULL + }; + -+ xfdesktop_thumbnailer_type = g_type_register_static ( -+ G_TYPE_OBJECT, -+ "XfdesktopThumbnailer", -+ &xfdesktop_thumbnailer_info, -+ 0); ++ xfdesktop_thumbnailer_type = g_type_register_static( ++ G_TYPE_OBJECT, ++ "XfdesktopThumbnailer", ++ &xfdesktop_thumbnailer_info, ++ 0); + } + return xfdesktop_thumbnailer_type; +} @@ -229,78 +173,69 @@ + GSList *queue; + gchar **supported_mimetypes; + gint handle; -+ XFDESKTOP_ICON_SERVICE service; + -+ gint request_timer_id; ++ gint request_timer_id; +}; + +static void -+xfdesktop_thumbnailer_init (GObject *object) ++xfdesktop_thumbnailer_init(GObject *object) +{ + XfdesktopThumbnailer *thumbnailer; + DBusGConnection *connection; + -+ thumbnailer = XFDESKTOP_THUMBNAILER (object); ++ thumbnailer = XFDESKTOP_THUMBNAILER(object); + -+ thumbnailer->priv = g_new0 (XfdesktopThumbnailerPriv, 1); ++ thumbnailer->priv = g_new0(XfdesktopThumbnailerPriv, 1); + + connection = dbus_g_bus_get(DBUS_BUS_SESSION, NULL); + -+ if (connection) { -+ thumbnailer->priv->proxy = dbus_g_proxy_new_for_name ( -+ connection, -+ "org.freedesktop.thumbnails.Thumbnailer1", -+ "/org/freedesktop/thumbnails/Thumbnailer1", -+ "org.freedesktop.thumbnails.Thumbnailer1"); ++ if(connection) { ++ thumbnailer->priv->proxy = dbus_g_proxy_new_for_name( ++ connection, ++ "org.freedesktop.thumbnails.Thumbnailer1", ++ "/org/freedesktop/thumbnails/Thumbnailer1", ++ "org.freedesktop.thumbnails.Thumbnailer1"); + + if(thumbnailer->priv->proxy) { + gchar **supported_uris; + -+ /* We have a thumbnail service */ -+ thumbnailer->priv->service = XFDESKTOP_THUMBNAILER_SERVICE; -+ -+ dbus_g_object_register_marshaller ( ++ dbus_g_object_register_marshaller( + (GClosureMarshal) xfdesktop_marshal_VOID__UINT_BOXED, + G_TYPE_NONE, G_TYPE_UINT, + G_TYPE_STRV, G_TYPE_INVALID); + -+ dbus_g_proxy_add_signal ( ++ dbus_g_proxy_add_signal( + thumbnailer->priv->proxy, + "Finished", G_TYPE_UINT, G_TYPE_INVALID); -+ dbus_g_proxy_add_signal ( ++ dbus_g_proxy_add_signal( + thumbnailer->priv->proxy, + "Ready", G_TYPE_UINT, G_TYPE_STRV, G_TYPE_INVALID); -+ -+ dbus_g_proxy_connect_signal ( ++ ++ dbus_g_proxy_connect_signal( + thumbnailer->priv->proxy, + "Finished", G_CALLBACK (xfdesktop_thumbnailer_request_finished_dbus), + thumbnailer, NULL); -+ dbus_g_proxy_connect_signal ( ++ dbus_g_proxy_connect_signal( + thumbnailer->priv->proxy, + "Ready", G_CALLBACK(xfdesktop_thumbnailer_thumbnail_ready_dbus), + thumbnailer, NULL); + -+ dbus_g_proxy_call (thumbnailer->priv->proxy, "GetSupported", NULL, G_TYPE_INVALID, -+ G_TYPE_STRV, &supported_uris, -+ G_TYPE_STRV, &thumbnailer->priv->supported_mimetypes, -+ G_TYPE_INVALID); -+ -+ } else { -+ /* We don't have a thumbnail service, use the GTK one */ -+ thumbnailer->priv->service = XFDESKTOP_GTK_SERVICE; ++ dbus_g_proxy_call(thumbnailer->priv->proxy, "GetSupported", NULL, G_TYPE_INVALID, ++ G_TYPE_STRV, &supported_uris, ++ G_TYPE_STRV, &thumbnailer->priv->supported_mimetypes, ++ G_TYPE_INVALID); + } + -+ dbus_g_connection_unref (connection); ++ dbus_g_connection_unref(connection); + } +} + +static void +xfdesktop_thumbnailer_class_init (GObjectClass *object_class) +{ -+ XfdesktopThumbnailerClass *thumbnailer_class = XFDESKTOP_THUMBNAILER_CLASS ( -+ object_class); ++ XfdesktopThumbnailerClass *thumbnailer_class = XFDESKTOP_THUMBNAILER_CLASS(object_class); + -+ parent_class = g_type_class_peek_parent (thumbnailer_class); ++ parent_class = g_type_class_peek_parent(thumbnailer_class); + + object_class->dispose = xfdesktop_thumbnailer_dispose; + object_class->finalize = xfdesktop_thumbnailer_finalize; @@ -322,9 +257,9 @@ + * + */ +static void -+xfdesktop_thumbnailer_dispose (GObject *object) ++xfdesktop_thumbnailer_dispose(GObject *object) +{ -+ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER (object); ++ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER(object); + + if(thumbnailer->priv->proxy) + g_object_unref(thumbnailer->priv->proxy); @@ -332,8 +267,8 @@ + if(thumbnailer->priv->supported_mimetypes) + g_free(thumbnailer->priv->supported_mimetypes); + -+ if (thumbnailer->priv) { -+ g_free (thumbnailer->priv); ++ if(thumbnailer->priv) { ++ g_free(thumbnailer->priv); + thumbnailer->priv = NULL; + } + @@ -346,12 +281,10 @@ + * + */ +static void -+xfdesktop_thumbnailer_finalize (GObject *object) ++xfdesktop_thumbnailer_finalize(GObject *object) +{ +} + -+ -+ +/** + * xfdesktop_thumbnailer_new: + * @@ -359,12 +292,12 @@ + * Singleton + */ +XfdesktopThumbnailer * -+xfdesktop_thumbnailer_new (void) ++xfdesktop_thumbnailer_new(void) +{ -+ if (thumbnailer_object == NULL) { -+ thumbnailer_object = g_object_new (XFDESKTOP_TYPE_THUMBNAILER, NULL); ++ if(thumbnailer_object == NULL) { ++ thumbnailer_object = g_object_new(XFDESKTOP_TYPE_THUMBNAILER, NULL); + } else { -+ g_object_ref (thumbnailer_object); ++ g_object_ref(thumbnailer_object); + } + + return thumbnailer_object; @@ -377,50 +310,49 @@ + GFileInfo *file_info; + gchar *mime_type = NULL; + -+ g_return_val_if_fail (file != NULL, NULL); ++ g_return_val_if_fail(file != NULL, NULL); + -+ temp_file = g_file_new_for_path (file); -+ file_info = g_file_query_info (temp_file, -+ "standard::content-type", -+ 0, -+ NULL, -+ NULL); ++ temp_file = g_file_new_for_path(file); + -+ mime_type = g_strdup(g_file_info_get_content_type (file_info)); ++ g_return_val_if_fail(temp_file != NULL, NULL); ++ ++ file_info = g_file_query_info(temp_file, ++ "standard::content-type", ++ 0, ++ NULL, ++ NULL); ++ ++ if(file_info != NULL) { ++ mime_type = g_strdup(g_file_info_get_content_type(file_info)); ++ ++ g_object_unref(file_info); ++ } + -+ g_object_unref (file_info); -+ g_object_unref (temp_file); ++ g_object_unref(temp_file); + + return mime_type; +} + +gboolean -+xfdesktop_thumbnailer_is_supported (XfdesktopThumbnailer *thumbnailer, -+ gchar *file) ++xfdesktop_thumbnailer_is_supported(XfdesktopThumbnailer *thumbnailer, ++ gchar *file) +{ + guint n; + gchar *mime_type = NULL; + -+ g_return_val_if_fail (XFDESKTOP_IS_THUMBNAILER (thumbnailer), FALSE); -+ g_return_val_if_fail (file != NULL, FALSE); ++ g_return_val_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer), FALSE); ++ g_return_val_if_fail(file != NULL, FALSE); + -+ mime_type = xfdesktop_get_file_mimetype (file); ++ mime_type = xfdesktop_get_file_mimetype(file); + -+ if (!mime_type) { -+ g_warning ("File has no mime type"); ++ if(mime_type == NULL) { ++ g_warning("File has no mime type"); + return FALSE; + } + -+ if(thumbnailer->priv->service == XFDESKTOP_GTK_SERVICE) { -+ /* This is a hack because I don't want to test and hard code -+ * every mime type gdk supports. */ -+ gboolean ret = g_str_has_prefix(mime_type, "image/"); -+ -+ g_free(mime_type); -+ return ret; -+ } else if (thumbnailer->priv->supported_mimetypes != NULL) { -+ for (n = 0; thumbnailer->priv->supported_mimetypes[n] != NULL; ++n) { -+ if (g_content_type_is_a (mime_type, thumbnailer->priv->supported_mimetypes[n])) { ++ if(thumbnailer->priv->supported_mimetypes != NULL) { ++ for(n = 0; thumbnailer->priv->supported_mimetypes[n] != NULL; ++n) { ++ if(g_content_type_is_a (mime_type, thumbnailer->priv->supported_mimetypes[n])) { + g_free(mime_type); + return TRUE; + } @@ -431,95 +363,106 @@ + return FALSE; +} + ++/** ++ * xfdesktop_thumbnailer_queue_thumbnail: ++ * ++ * Queues a file for thumbnail creation. ++ * A "thumbnail-ready" signal will be emitted when the thumbnail is ready. ++ * The signal will pass 2 parameters: a gchar *file which will be file ++ * that's passed in here and a gchar *thumbnail_file which will be the ++ * location of the thumbnail. ++ */ +gboolean -+xfdesktop_thumbnailer_queue_thumbnail ( -+ XfdesktopThumbnailer *thumbnailer, -+ gchar *file) ++xfdesktop_thumbnailer_queue_thumbnail(XfdesktopThumbnailer *thumbnailer, ++ gchar *file) +{ -+ g_return_val_if_fail (XFDESKTOP_IS_THUMBNAILER (thumbnailer), FALSE); -+ g_return_val_if_fail (file != NULL, FALSE); ++ g_return_val_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer), FALSE); ++ g_return_val_if_fail(file != NULL, FALSE); + + if(!xfdesktop_thumbnailer_is_supported(thumbnailer, file)) { + /*g_debug("file: %s not supported", file);*/ + return FALSE; + } -+ if (thumbnailer->priv->request_timer_id) { -+ g_source_remove (thumbnailer->priv->request_timer_id); ++ if(thumbnailer->priv->request_timer_id) { ++ g_source_remove(thumbnailer->priv->request_timer_id); + -+ if (thumbnailer->priv->handle) { -+ if(thumbnailer->priv->service == XFDESKTOP_THUMBNAILER_SERVICE) { -+ if(dbus_g_proxy_call(thumbnailer->priv->proxy, -+ "Dequeue", -+ NULL, -+ G_TYPE_UINT, thumbnailer->priv->handle, -+ G_TYPE_INVALID) == FALSE) -+ { -+ g_warning("Dequeue of thumbnailer->priv->handle: %d failed", thumbnailer->priv->handle); -+ } ++ if(thumbnailer->priv->handle && thumbnailer->priv->proxy != NULL) { ++ if(dbus_g_proxy_call(thumbnailer->priv->proxy, ++ "Dequeue", ++ NULL, ++ G_TYPE_UINT, thumbnailer->priv->handle, ++ G_TYPE_INVALID) == FALSE) ++ { ++ g_warning("Dequeue of thumbnailer->priv->handle: %d failed", ++ thumbnailer->priv->handle); + } ++ + thumbnailer->priv->handle = 0; + } + } + -+ if (g_slist_find (thumbnailer->priv->queue, file) == NULL) { -+ thumbnailer->priv->queue = g_slist_prepend (thumbnailer->priv->queue, -+ file); ++ if(g_slist_find(thumbnailer->priv->queue, file) == NULL) { ++ thumbnailer->priv->queue = g_slist_prepend(thumbnailer->priv->queue, ++ file); + } + -+ thumbnailer->priv->request_timer_id = g_timeout_add_full ( -+ G_PRIORITY_LOW, -+ 300, -+ (GSourceFunc)xfdesktop_thumbnailer_queue_request_timer, -+ thumbnailer, -+ NULL); ++ thumbnailer->priv->request_timer_id = g_timeout_add_full( ++ G_PRIORITY_LOW, ++ 300, ++ (GSourceFunc)xfdesktop_thumbnailer_queue_request_timer, ++ thumbnailer, ++ NULL); + -+ + return TRUE; +} + ++/** ++ * xfdesktop_thumbnailer_dequeue_thumbnail: ++ * ++ * Removes a file from the list of pending thumbnail creations. ++ * This is not guaranteed to always remove the file, if processing ++ * of that thumbnail has started it won't stop. ++ */ +void -+xfdesktop_thumbnailer_dequeue_thumbnail ( -+ XfdesktopThumbnailer *thumbnailer, -+ gchar *file) ++xfdesktop_thumbnailer_dequeue_thumbnail(XfdesktopThumbnailer *thumbnailer, ++ gchar *file) +{ -+ g_return_if_fail ( XFDESKTOP_IS_THUMBNAILER (thumbnailer) ); -+ g_return_if_fail ( file != NULL ); -+ -+ if (thumbnailer->priv->request_timer_id) { -+ g_source_remove (thumbnailer->priv->request_timer_id); ++ g_return_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer)); ++ g_return_if_fail(file != NULL); + -+ if (thumbnailer->priv->handle) { -+ if(thumbnailer->priv->service == XFDESKTOP_THUMBNAILER_SERVICE) { -+ if(dbus_g_proxy_call(thumbnailer->priv->proxy, -+ "Dequeue", -+ NULL, -+ G_TYPE_UINT, thumbnailer->priv->handle, -+ G_TYPE_INVALID) == FALSE) -+ { -+ g_warning("Dequeue of thumbnailer->priv->handle: %d failed", thumbnailer->priv->handle); -+ } ++ if(thumbnailer->priv->request_timer_id) { ++ g_source_remove(thumbnailer->priv->request_timer_id); ++ ++ if(thumbnailer->priv->handle && thumbnailer->priv->proxy) { ++ if(dbus_g_proxy_call(thumbnailer->priv->proxy, ++ "Dequeue", ++ NULL, ++ G_TYPE_UINT, thumbnailer->priv->handle, ++ G_TYPE_INVALID) == FALSE) ++ { ++ g_warning("Dequeue of thumbnailer->priv->handle: %d failed", ++ thumbnailer->priv->handle); + } + } + thumbnailer->priv->handle = 0; + } + -+ if (g_slist_find (thumbnailer->priv->queue, file) != NULL) { -+ thumbnailer->priv->queue = g_slist_remove_all ( -+ thumbnailer->priv->queue, -+ file); ++ if(g_slist_find(thumbnailer->priv->queue, file) != NULL) { ++ thumbnailer->priv->queue = g_slist_remove_all( ++ thumbnailer->priv->queue, ++ file); + } + -+ thumbnailer->priv->request_timer_id = g_timeout_add_full ( -+ G_PRIORITY_LOW, -+ 300, -+ (GSourceFunc)xfdesktop_thumbnailer_queue_request_timer, -+ thumbnailer, -+ NULL); ++ thumbnailer->priv->request_timer_id = g_timeout_add_full( ++ G_PRIORITY_LOW, ++ 300, ++ (GSourceFunc)xfdesktop_thumbnailer_queue_request_timer, ++ thumbnailer, ++ NULL); +} + +static gboolean -+xfdesktop_thumbnailer_queue_request_timer ( -+ XfdesktopThumbnailer *thumbnailer) ++xfdesktop_thumbnailer_queue_request_timer(XfdesktopThumbnailer *thumbnailer) +{ + gchar **uris; + gchar **mimetypes; @@ -528,46 +471,40 @@ + GFile *file; + GError *error = NULL; + -+ g_return_val_if_fail ( XFDESKTOP_IS_THUMBNAILER (thumbnailer), FALSE); ++ g_return_val_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer), FALSE); + -+ uris = g_new0 (gchar *, -+ g_slist_length(thumbnailer->priv->queue) + 1); -+ mimetypes = g_new0 (gchar *, -+ g_slist_length (thumbnailer->priv->queue) + 1); ++ uris = g_new0(gchar *, ++ g_slist_length(thumbnailer->priv->queue) + 1); ++ mimetypes = g_new0(gchar *, ++ g_slist_length (thumbnailer->priv->queue) + 1); + + iter = thumbnailer->priv->queue; -+ while (iter) { -+ if (iter->data) { ++ while(iter) { ++ if(iter->data) { + file = g_file_new_for_path(iter->data); -+ uris[i] = g_file_get_uri (file); -+ mimetypes[i] = xfdesktop_get_file_mimetype (iter->data); ++ uris[i] = g_file_get_uri(file); ++ mimetypes[i] = xfdesktop_get_file_mimetype(iter->data); + g_object_unref(file); + } + iter = g_slist_next(iter); + i++; + } + -+ if(thumbnailer->priv->service == XFDESKTOP_THUMBNAILER_SERVICE) { ++ if(thumbnailer->priv->proxy != NULL) { + if(dbus_g_proxy_call(thumbnailer->priv->proxy, -+ "Queue", -+ &error, -+ G_TYPE_STRV, uris, -+ G_TYPE_STRV, mimetypes, -+ G_TYPE_STRING, "normal", -+ G_TYPE_STRING, "default", -+ G_TYPE_UINT, 0, -+ G_TYPE_INVALID, -+ G_TYPE_UINT, &thumbnailer->priv->handle, -+ G_TYPE_INVALID) == FALSE) ++ "Queue", ++ &error, ++ G_TYPE_STRV, uris, ++ G_TYPE_STRV, mimetypes, ++ G_TYPE_STRING, "normal", ++ G_TYPE_STRING, "default", ++ G_TYPE_UINT, 0, ++ G_TYPE_INVALID, ++ G_TYPE_UINT, &thumbnailer->priv->handle, ++ G_TYPE_INVALID) == FALSE) + { -+ if (NULL != error) { -+ g_warning("DBUS-call failed:%s", error->message); -+ if ((error->domain == DBUS_GERROR) && -+ (error->code == DBUS_GERROR_SERVICE_UNKNOWN)) -+ { -+ /* TODO: fall back to gtk */ -+ } -+ } ++ if(error != NULL) ++ g_warning("DBUS-call failed: %s", error->message); + } + } + @@ -583,80 +520,86 @@ +} + +static void -+xfdesktop_thumbnailer_request_finished_dbus ( -+ DBusGProxy *proxy, -+ gint handle, -+ gpointer data) ++xfdesktop_thumbnailer_request_finished_dbus(DBusGProxy *proxy, ++ gint handle, ++ gpointer data) +{ -+ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER (data); ++ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER(data); + -+ g_return_if_fail ( XFDESKTOP_IS_THUMBNAILER (thumbnailer) ); ++ g_return_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer)); + + thumbnailer->priv->handle = 0; +} + +static void -+xfdesktop_thumbnailer_thumbnail_ready_dbus ( -+ DBusGProxy *proxy, -+ gint handle, -+ const gchar **uri, -+ gpointer data) ++xfdesktop_thumbnailer_thumbnail_ready_dbus(DBusGProxy *proxy, ++ gint handle, ++ const gchar **uri, ++ gpointer data) +{ -+ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER (data); ++ XfdesktopThumbnailer *thumbnailer = XFDESKTOP_THUMBNAILER(data); + gchar *thumbnail_location; + GFile *file; + GSList *iter = thumbnailer->priv->queue; + gchar *f_uri, *f_uri_checksum, *filename; + gint x = 0; + -+ g_return_if_fail ( XFDESKTOP_IS_THUMBNAILER (thumbnailer) ); ++ g_return_if_fail(XFDESKTOP_IS_THUMBNAILER(thumbnailer)); + -+ while (iter) { -+ if ((uri[x] == NULL) || (iter->data == NULL)) { ++ while(iter) { ++ if((uri[x] == NULL) || (iter->data == NULL)) { + break; + } + + file = g_file_new_for_path(iter->data); -+ f_uri = g_file_get_uri (file); ++ f_uri = g_file_get_uri(file); + -+ if (strcmp (uri[x], f_uri) == 0) { ++ if(strcmp (uri[x], f_uri) == 0) { + /* The thumbnail is in the format/location + * /homedir/.thumbnails/normal/MD5_Hash_Of_URI.png + */ -+ f_uri_checksum = g_compute_checksum_for_string (G_CHECKSUM_MD5, -+ f_uri, strlen (f_uri)); -+ filename = g_strconcat (f_uri_checksum, ".png", NULL); -+ -+ thumbnail_location = g_build_path ("/", g_get_home_dir(), -+ ".thumbnails", "normal", -+ filename, NULL); ++ f_uri_checksum = g_compute_checksum_for_string(G_CHECKSUM_MD5, ++ f_uri, strlen (f_uri)); ++ filename = g_strconcat(f_uri_checksum, ".png", NULL); ++ ++ thumbnail_location = g_build_path("/", g_get_home_dir(), ++ ".thumbnails", "normal", ++ filename, NULL); + + /*g_debug("thumbnail-ready src: %s thumbnail: %s", -+ (char*)iter->data, -+ thumbnail_location);*/ ++ (char*)iter->data, ++ thumbnail_location);*/ ++ + g_signal_emit(G_OBJECT(thumbnailer), + thumbnailer_signals[THUMBNAIL_READY], + 0, + iter->data, + thumbnail_location); + -+ thumbnailer->priv->queue = g_slist_remove (thumbnailer->priv->queue, -+ iter->data); ++ thumbnailer->priv->queue = g_slist_remove(thumbnailer->priv->queue, ++ iter->data); + + iter = thumbnailer->priv->queue; + x++; + -+ g_free (filename); -+ g_free (f_uri_checksum); ++ g_free(filename); ++ g_free(f_uri_checksum); + } else { + iter = g_slist_next(iter); + } + -+ g_object_unref (file); -+ g_free (f_uri); ++ g_object_unref(file); ++ g_free(f_uri); + } +} + ++/** ++ * xfdesktop_thumbnailer_delete_thumbnail: ++ * ++ * Tells the thumbnail service the src_file will be deleted. ++ * This function should be called when the file is deleted or moved so ++ * the thumbnail file doesn't take up space on the user's drive. ++ */ +void +xfdesktop_thumbnailer_delete_thumbnail(XfdesktopThumbnailer *thumbnailer, gchar *src_file) +{ @@ -670,11 +613,11 @@ + connection = dbus_g_bus_get (DBUS_BUS_SESSION, NULL); + if (connection != NULL) { + cache = dbus_g_proxy_new_for_name(connection, -+ "org.freedesktop.thumbnails.Cache1", -+ "/org/freedesktop/thumbnails/Cache1", -+ "org.freedesktop.thumbnails.Cache1"); ++ "org.freedesktop.thumbnails.Cache1", ++ "/org/freedesktop/thumbnails/Cache1", ++ "org.freedesktop.thumbnails.Cache1"); + -+ dbus_g_connection_unref (connection); ++ dbus_g_connection_unref(connection); + } + } + @@ -694,12 +637,9 @@ + if(error) + g_error_free(error); +} -diff --git a/common/xfdesktop-thumbnailer.h b/common/xfdesktop-thumbnailer.h -new file mode 100644 -index 0000000..fc16bdb --- /dev/null -+++ b/common/xfdesktop-thumbnailer.h -@@ -0,0 +1,101 @@ ++++ xfdesktop4-4.8.3/common/xfdesktop-thumbnailer.h +@@ -0,0 +1,76 @@ +/* + * xfdesktop - xfce4's desktop manager + * @@ -720,7 +660,7 @@ + * 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. -+ * ++ * + * xfdesktop-thumbnailer is based on thumbnailer code from Ristretto + * Copyright (c) Stephan Arts 2009-2011 + */ @@ -732,7 +672,6 @@ + +G_BEGIN_DECLS + -+ +#define XFDESKTOP_TYPE_THUMBNAILER (xfdesktop_thumbnailer_get_type()) +#define XFDESKTOP_THUMBNAILER(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), XFDESKTOP_TYPE_THUMBNAILER, XfdesktopThumbnailer)) +#define XFDESKTOP_IS_THUMBNAILER(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), XFDESKTOP_TYPE_THUMBNAILER)) @@ -759,52 +698,221 @@ + void (*thumbnail_ready)(gchar *src_file, gchar *thumb_file); +}; + -+XfdesktopThumbnailer * -+xfdesktop_thumbnailer_new (void); ++XfdesktopThumbnailer * xfdesktop_thumbnailer_new(void); + -+GType -+xfdesktop_thumbnailer_get_type (void); ++GType xfdesktop_thumbnailer_get_type(void); + -+gboolean -+xfdesktop_thumbnailer_is_supported (XfdesktopThumbnailer *thumbnailer, -+ gchar *file); ++gboolean xfdesktop_thumbnailer_is_supported(XfdesktopThumbnailer *thumbnailer, ++ gchar *file); + -+/* Queues a file for thumbnail creation. -+ * A "thumbnail-ready" signal will be emitted when the thumbnail is ready. -+ * The signal will pass 2 parameters: a gchar *file which will be file -+ * that's passed in here and a gchar *thumbnail_file which will be the -+ * location of the thumbnail. -+ */ -+gboolean -+xfdesktop_thumbnailer_queue_thumbnail ( -+ XfdesktopThumbnailer *thumbnailer, -+ gchar *file); -+ -+/* Removes a file from the list of pending thumbnail creations. -+ * This is not guaranteed to always remove the file, if processing -+ * of that thumbnail has started it won't stop. -+ */ -+void -+xfdesktop_thumbnailer_dequeue_thumbnail ( -+ XfdesktopThumbnailer *thumbnailer, -+ gchar *file); ++gboolean xfdesktop_thumbnailer_queue_thumbnail(XfdesktopThumbnailer *thumbnailer, ++ gchar *file); ++void xfdesktop_thumbnailer_dequeue_thumbnail(XfdesktopThumbnailer *thumbnailer, ++ gchar *file); + -+/* This function tells the thumbnail service the src_file will be deleted. -+ * This function should be called when the file is deleted or moved so -+ * the thumbnail file doesn't take up space on the user's drive. -+ */ -+void -+xfdesktop_thumbnailer_delete_thumbnail ( -+ XfdesktopThumbnailer *thumbnailer, -+ gchar *src_file); ++void xfdesktop_thumbnailer_delete_thumbnail(XfdesktopThumbnailer *thumbnailer, ++ gchar *src_file); + +G_END_DECLS + +#endif /* __XFDESKTOP_THUMBNAILER_H__ */ -diff --git a/src/Makefile.am b/src/Makefile.am -index 5d1fd4d..3adb3d2 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am +--- xfdesktop4-4.8.3.orig/settings/xfdesktop-settings-ui.glade ++++ xfdesktop4-4.8.3/settings/xfdesktop-settings-ui.glade +@@ -695,6 +695,17 @@ + + + ++ ++ True ++ True ++ GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK ++ _Show thumbnails ++ Select this option to display preview-able files on the desktop as automatically generated thumbnail icons. ++ True ++ True ++ ++ ++ + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK +--- xfdesktop4-4.8.3.orig/settings/main.c ++++ xfdesktop4-4.8.3/settings/main.c +@@ -71,6 +71,7 @@ + #define DESKTOP_ICONS_FONT_SIZE_PROP "/desktop-icons/font-size" + #define DESKTOP_ICONS_SINGLE_CLICK_PROP "/desktop-icons/single-click" + #define DESKTOP_ICONS_CUSTOM_FONT_SIZE_PROP "/desktop-icons/use-custom-font-size" ++#define DESKTOP_ICONS_SHOW_THUMBNAILS_PROP "/desktop-icons/show-thumbnails" + #define DESKTOP_ICONS_SHOW_HOME "/desktop-icons/file-icons/show-home" + #define DESKTOP_ICONS_SHOW_TRASH "/desktop-icons/file-icons/show-trash" + #define DESKTOP_ICONS_SHOW_FILESYSTEM "/desktop-icons/file-icons/show-filesystem" +@@ -1228,7 +1229,7 @@ xfdesktop_settings_dialog_new(GtkBuilder + gint i, j, nmonitors, nscreens; + GtkWidget *dialog, *appearance_container, *chk_custom_font_size, + *spin_font_size, *color_style_widget, *w, *box, +- *chk_single_click; ++ *chk_single_click, *chk_show_thumbnails; + + dialog = GTK_WIDGET(gtk_builder_get_object(main_gxml, "prefs_dialog")); + appearance_container = GTK_WIDGET(gtk_builder_get_object(main_gxml, +@@ -1245,6 +1246,9 @@ xfdesktop_settings_dialog_new(GtkBuilder + G_CALLBACK(cb_xfdesktop_chk_custom_font_size_toggled), + spin_font_size); + ++ chk_show_thumbnails = GTK_WIDGET(gtk_builder_get_object(main_gxml, ++ "chk_show_thumbnails")); ++ + nscreens = gdk_display_get_n_screens(gdk_display_get_default()); + + for(i = 0; i < nscreens; ++i) { +@@ -1496,6 +1500,9 @@ xfdesktop_settings_dialog_new(GtkBuilder + xfconf_g_property_bind(channel, DESKTOP_ICONS_SINGLE_CLICK_PROP, + G_TYPE_BOOLEAN, G_OBJECT(chk_single_click), + "active"); ++ xfconf_g_property_bind(channel, DESKTOP_ICONS_SHOW_THUMBNAILS_PROP, ++ G_TYPE_BOOLEAN, G_OBJECT(chk_show_thumbnails), ++ "active"); + + setup_special_icon_list(main_gxml, channel); + +--- xfdesktop4-4.8.3.orig/src/xfdesktop-icon.c ++++ xfdesktop4-4.8.3/src/xfdesktop-icon.c +@@ -37,7 +37,6 @@ struct _XfdesktopIconPrivate + gint16 row; + gint16 col; + +- gboolean extents_dirty; + GdkRectangle pixbuf_extents; + GdkRectangle text_extents; + GdkRectangle total_extents; +@@ -116,7 +115,6 @@ xfdesktop_icon_init(XfdesktopIcon *icon) + { + icon->priv = G_TYPE_INSTANCE_GET_PRIVATE(icon, XFDESKTOP_TYPE_ICON, + XfdesktopIconPrivate); +- icon->priv->extents_dirty = TRUE; + } + + +@@ -158,7 +156,6 @@ xfdesktop_icon_set_extents(XfdesktopIcon + icon->priv->pixbuf_extents = *pixbuf_extents; + icon->priv->text_extents = *text_extents; + icon->priv->total_extents = *total_extents; +- icon->priv->extents_dirty = FALSE; + } + + gboolean +@@ -169,9 +166,6 @@ xfdesktop_icon_get_extents(XfdesktopIcon + { + g_return_val_if_fail(XFDESKTOP_IS_ICON(icon), FALSE); + +- if(icon->priv->extents_dirty) +- return FALSE; +- + if(pixbuf_extents) + *pixbuf_extents = icon->priv->pixbuf_extents; + if(text_extents) +@@ -182,16 +176,6 @@ xfdesktop_icon_get_extents(XfdesktopIcon + return TRUE; + } + +-void +-xfdesktop_icon_mark_extents_dirty(XfdesktopIcon *icon) +-{ +- g_return_if_fail(XFDESKTOP_IS_ICON(icon)); +- +- icon->priv->extents_dirty = TRUE; +-} +- +- +- + /*< required >*/ + GdkPixbuf * + xfdesktop_icon_peek_pixbuf(XfdesktopIcon *icon, +@@ -283,6 +267,37 @@ xfdesktop_icon_peek_tooltip(XfdesktopIco + } + + /*< optional >*/ ++void xfdesktop_icon_delete_thumbnail(XfdesktopIcon *icon) ++{ ++ XfdesktopIconClass *klass; ++ ++ g_return_if_fail(XFDESKTOP_IS_ICON(icon)); ++ ++ klass = XFDESKTOP_ICON_GET_CLASS(icon); ++ ++ if(!klass->delete_thumbnail_file) ++ return; ++ ++ klass->delete_thumbnail_file(icon); ++} ++ ++/*< optional >*/ ++void ++xfdesktop_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file) ++{ ++ XfdesktopIconClass *klass; ++ ++ g_return_if_fail(XFDESKTOP_IS_ICON(icon)); ++ ++ klass = XFDESKTOP_ICON_GET_CLASS(icon); ++ ++ if(!klass->set_thumbnail_file) ++ return; ++ ++ klass->set_thumbnail_file(icon, file); ++} ++ ++/*< optional >*/ + gboolean + xfdesktop_icon_populate_context_menu(XfdesktopIcon *icon, + GtkWidget *menu) +@@ -312,7 +327,6 @@ void + xfdesktop_icon_pixbuf_changed(XfdesktopIcon *icon) + { + g_return_if_fail(XFDESKTOP_IS_ICON(icon)); +- xfdesktop_icon_mark_extents_dirty(icon); + g_signal_emit(icon, __signals[SIG_PIXBUF_CHANGED], 0); + } + +@@ -320,7 +334,6 @@ void + xfdesktop_icon_label_changed(XfdesktopIcon *icon) + { + g_return_if_fail(XFDESKTOP_IS_ICON(icon)); +- xfdesktop_icon_mark_extents_dirty(icon); + g_signal_emit(icon, __signals[SIG_LABEL_CHANGED], 0); + } + +@@ -328,7 +341,6 @@ void + xfdesktop_icon_position_changed(XfdesktopIcon *icon) + { + g_return_if_fail(XFDESKTOP_IS_ICON(icon)); +- xfdesktop_icon_mark_extents_dirty(icon); + g_signal_emit(icon, __signals[SIG_POS_CHANGED], 0); + } + +@@ -337,7 +349,6 @@ void + xfdesktop_icon_selected(XfdesktopIcon *icon) + { + g_return_if_fail(XFDESKTOP_IS_ICON(icon)); +- xfdesktop_icon_mark_extents_dirty(icon); + g_signal_emit(G_OBJECT(icon), __signals[SIG_SELECTED], 0, NULL); + } + +--- xfdesktop4-4.8.3.orig/src/xfdesktop-file-icon-manager.h ++++ xfdesktop4-4.8.3/src/xfdesktop-file-icon-manager.h +@@ -64,6 +64,10 @@ void xfdesktop_file_icon_manager_set_sho + gboolean show_special_file); + gboolean xfdesktop_file_icon_manager_get_show_special_file(XfdesktopFileIconManager *manager, + XfdesktopSpecialFileIconType type); ++void xfdesktop_file_icon_manager_set_show_thumbnails(XfdesktopFileIconManager *manager, ++ gboolean show_thumbnails); ++gboolean xfdesktop_file_icon_manager_get_show_thumbnails(XfdesktopFileIconManager *manager); ++ + + G_END_DECLS + +--- xfdesktop4-4.8.3.orig/src/Makefile.am ++++ xfdesktop4-4.8.3/src/Makefile.am @@ -4,9 +4,7 @@ bin_PROGRAMS = xfdesktop xfdesktop_built_sources = \ @@ -841,10 +949,180 @@ - $(desktop_file_icon_sources) \ - xfdesktop-marshal.list + $(desktop_file_icon_sources) -diff --git a/src/xfdesktop-file-icon-manager.c b/src/xfdesktop-file-icon-manager.c -index d3ca2eb..dc1bc93 100644 ---- a/src/xfdesktop-file-icon-manager.c -+++ b/src/xfdesktop-file-icon-manager.c +--- xfdesktop4-4.8.3.orig/src/xfdesktop-icon.h ++++ xfdesktop4-4.8.3/src/xfdesktop-icon.h +@@ -73,6 +73,9 @@ struct _XfdesktopIconClass + + G_CONST_RETURN gchar *(*peek_tooltip)(XfdesktopIcon *icon); + ++ void (*set_thumbnail_file)(XfdesktopIcon *icon, GFile *file); ++ void (*delete_thumbnail_file)(XfdesktopIcon *icon); ++ + gboolean (*populate_context_menu)(XfdesktopIcon *icon, + GtkWidget *menu); + }; +@@ -105,6 +108,9 @@ gboolean xfdesktop_icon_populate_context + + GtkWidget *xfdesktop_icon_peek_icon_view(XfdesktopIcon *icon); + ++void xfdesktop_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file); ++void xfdesktop_icon_delete_thumbnail(XfdesktopIcon *icon); ++ + /*< signal triggers >*/ + + void xfdesktop_icon_pixbuf_changed(XfdesktopIcon *icon); +@@ -123,7 +129,6 @@ gboolean xfdesktop_icon_get_extents(Xfde + GdkRectangle *pixbuf_extents, + GdkRectangle *text_extents, + GdkRectangle *total_extents); +-void xfdesktop_icon_mark_extents_dirty(XfdesktopIcon *icon); + + G_END_DECLS + +--- xfdesktop4-4.8.3.orig/src/xfdesktop-regular-file-icon.c ++++ xfdesktop4-4.8.3/src/xfdesktop-regular-file-icon.c +@@ -68,11 +68,15 @@ struct _XfdesktopRegularFileIconPrivate + GFileInfo *file_info; + GFileInfo *filesystem_info; + GFile *file; ++ GFile *thumbnail_file; + GdkScreen *gscreen; + }; + + static void xfdesktop_regular_file_icon_finalize(GObject *obj); + ++static void xfdesktop_regular_file_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file); ++static void xfdesktop_regular_file_icon_delete_thumbnail_file(XfdesktopIcon *icon); ++ + static GdkPixbuf *xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, + gint size); + static G_CONST_RETURN gchar *xfdesktop_regular_file_icon_peek_label(XfdesktopIcon *icon); +@@ -127,6 +131,8 @@ xfdesktop_regular_file_icon_class_init(X + icon_class->get_allowed_drag_actions = xfdesktop_regular_file_icon_get_allowed_drag_actions; + icon_class->get_allowed_drop_actions = xfdesktop_regular_file_icon_get_allowed_drop_actions; + icon_class->do_drop_dest = xfdesktop_regular_file_icon_do_drop_dest; ++ icon_class->set_thumbnail_file = xfdesktop_regular_file_icon_set_thumbnail_file; ++ icon_class->delete_thumbnail_file = xfdesktop_regular_file_icon_delete_thumbnail_file; + + file_icon_class->peek_file_info = xfdesktop_regular_file_icon_peek_file_info; + file_icon_class->peek_filesystem_info = xfdesktop_regular_file_icon_peek_filesystem_info; +@@ -171,6 +177,9 @@ xfdesktop_regular_file_icon_finalize(GOb + + if(icon->priv->tooltip) + g_free(icon->priv->tooltip); ++ ++ if(icon->priv->thumbnail_file) ++ g_object_unref(icon->priv->thumbnail_file); + + G_OBJECT_CLASS(xfdesktop_regular_file_icon_parent_class)->finalize(obj); + } +@@ -201,6 +210,43 @@ xfdesktop_regular_file_icon_invalidate_p + } + } + ++static void ++xfdesktop_regular_file_icon_delete_thumbnail_file(XfdesktopIcon *icon) ++{ ++ XfdesktopRegularFileIcon *file_icon; ++ ++ if(!XFDESKTOP_IS_REGULAR_FILE_ICON(icon)) ++ return; ++ ++ file_icon = XFDESKTOP_REGULAR_FILE_ICON(icon); ++ ++ if(file_icon->priv->thumbnail_file) { ++ g_object_unref(file_icon->priv->thumbnail_file); ++ file_icon->priv->thumbnail_file = NULL; ++ } ++ ++ xfdesktop_regular_file_icon_invalidate_pixbuf(file_icon); ++ xfdesktop_icon_pixbuf_changed(XFDESKTOP_ICON(icon)); ++} ++ ++static void ++xfdesktop_regular_file_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file) ++{ ++ XfdesktopRegularFileIcon *file_icon; ++ ++ if(!XFDESKTOP_IS_REGULAR_FILE_ICON(icon)) ++ return; ++ ++ file_icon = XFDESKTOP_REGULAR_FILE_ICON(icon); ++ ++ if(file_icon->priv->thumbnail_file) ++ g_object_unref(file_icon->priv->thumbnail_file); ++ ++ file_icon->priv->thumbnail_file = file; ++ ++ xfdesktop_regular_file_icon_invalidate_pixbuf(file_icon); ++ xfdesktop_icon_pixbuf_changed(XFDESKTOP_ICON(icon)); ++} + + static GdkPixbuf * + xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, +@@ -224,6 +270,10 @@ xfdesktop_regular_file_icon_peek_pixbuf( + if(g_file_has_prefix(file_icon->priv->file, thumbnail_dir)) { + /* use the filename as custom icon name for thumbnails */ + icon_name = g_file_get_path(file_icon->priv->file); ++ ++ /* release thumbnail path */ ++ g_object_unref(thumbnail_dir); ++ g_free(thumbnail_dir_path); + } else if(xfdesktop_file_utils_is_desktop_file(file_icon->priv->file_info)) { + gchar *contents; + gsize length; +@@ -248,12 +298,16 @@ xfdesktop_regular_file_icon_peek_pixbuf( + g_key_file_free(key_file); + g_free(contents); + } ++ } else { ++ /* If we have a thumbnail then they are enabled, use it. */ ++ if(file_icon->priv->thumbnail_file) ++ { ++ file_icon->priv->pix = gdk_pixbuf_new_from_file_at_scale(g_file_get_path(file_icon->priv->thumbnail_file), ++ size, size, ++ TRUE, NULL); ++ } + } + +- /* release thumbnail path */ +- g_object_unref(thumbnail_dir); +- g_free(thumbnail_dir_path); +- + /* load the symlink emblem if necessary */ + if(g_file_info_get_attribute_boolean(file_icon->priv->file_info, + G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK)) +@@ -280,10 +334,24 @@ xfdesktop_regular_file_icon_peek_pixbuf( + + if(file_icon->priv->file_info) + gicon = g_file_info_get_icon(file_icon->priv->file_info); +- +- file_icon->priv->pix = xfdesktop_file_utils_get_icon(icon_name, gicon, +- size, emblem_pix, +- file_icon->priv->pix_opacity); ++ ++ if(file_icon->priv->pix) { ++ if(emblem_pix) { ++ gint emblem_pix_size = gdk_pixbuf_get_width(emblem_pix); ++ gint dest_size = size - emblem_pix_size; ++ ++ /* We have to add the emblem */ ++ gdk_pixbuf_composite(emblem_pix, file_icon->priv->pix, ++ dest_size, dest_size, ++ emblem_pix_size, emblem_pix_size, ++ dest_size, dest_size, ++ 1.0, 1.0, GDK_INTERP_BILINEAR, 255); ++ } ++ } else { ++ file_icon->priv->pix = xfdesktop_file_utils_get_icon(icon_name, gicon, ++ size, emblem_pix, ++ file_icon->priv->pix_opacity); ++ } + + file_icon->priv->cur_pix_size = size; + +--- xfdesktop4-4.8.3.orig/src/xfdesktop-file-icon-manager.c ++++ xfdesktop4-4.8.3/src/xfdesktop-file-icon-manager.c @@ -71,6 +71,7 @@ #include "xfdesktop-special-file-icon.h" #include "xfdesktop-trash-proxy.h" @@ -886,15 +1164,18 @@ }; static void xfdesktop_file_icon_manager_set_property(GObject *object, -@@ -175,6 +181,7 @@ static void xfdesktop_file_icon_manager_remove_removable_media(XfdesktopFileIcon +@@ -175,6 +181,10 @@ static void xfdesktop_file_icon_manager_ static void xfdesktop_file_icon_position_changed(XfdesktopFileIcon *icon, gpointer user_data); -+static void xfdesktop_file_icon_manager_update_image (GtkWidget *widget, gchar *srcfile, gchar *thumbfile, XfdesktopFileIconManager *fmanager); ++static void xfdesktop_file_icon_manager_update_image(GtkWidget *widget, ++ gchar *srcfile, ++ gchar *thumbfile, ++ XfdesktopFileIconManager *fmanager); G_DEFINE_TYPE_EXTENDED(XfdesktopFileIconManager, xfdesktop_file_icon_manager, -@@ -264,6 +271,12 @@ xfdesktop_file_icon_manager_class_init(XfdesktopFileIconManagerClass *klass) +@@ -264,6 +274,12 @@ xfdesktop_file_icon_manager_class_init(X "show removable", TRUE, XFDESKTOP_PARAM_FLAGS)); @@ -907,7 +1188,7 @@ #undef XFDESKTOP_PARAM_FLAGS xfdesktop_app_info_quark = g_quark_from_static_string("xfdesktop-app-info-quark"); -@@ -282,6 +295,10 @@ xfdesktop_file_icon_manager_init(XfdesktopFileIconManager *fmanager) +@@ -282,6 +298,10 @@ xfdesktop_file_icon_manager_init(Xfdeskt n_drag_targets); fmanager->priv->drop_targets = gtk_target_list_new(drop_targets, n_drop_targets); @@ -918,7 +1199,7 @@ } static void -@@ -321,6 +338,11 @@ xfdesktop_file_icon_manager_set_property(GObject *object, +@@ -321,6 +341,11 @@ xfdesktop_file_icon_manager_set_property g_value_get_boolean(value)); break; @@ -930,7 +1211,7 @@ default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); } -@@ -357,6 +379,10 @@ xfdesktop_file_icon_manager_get_property(GObject *object, +@@ -357,6 +382,10 @@ xfdesktop_file_icon_manager_get_property case PROP_SHOW_REMOVABLE: g_value_set_boolean(value, fmanager->priv->show_removable_media); break; @@ -941,7 +1222,7 @@ default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); -@@ -377,6 +403,7 @@ xfdesktop_file_icon_manager_finalize(GObject *obj) +@@ -377,6 +406,7 @@ xfdesktop_file_icon_manager_finalize(GOb gtk_target_list_unref(fmanager->priv->drop_targets); g_object_unref(fmanager->priv->folder); @@ -949,7 +1230,7 @@ G_OBJECT_CLASS(xfdesktop_file_icon_manager_parent_class)->finalize(obj); } -@@ -1829,6 +1856,15 @@ xfdesktop_file_icon_manager_add_icon(XfdesktopFileIconManager *fmanager, +@@ -1842,6 +1872,15 @@ xfdesktop_file_icon_manager_add_icon(Xfd gint16 row = -1, col = -1; gboolean do_add = FALSE; const gchar *name; @@ -957,7 +1238,7 @@ + + file = xfdesktop_file_icon_peek_file(icon); + -+ if(fmanager->priv->show_thumbnails) { ++ if(fmanager->priv->show_thumbnails && g_file_get_path(file) != NULL) { + xfdesktop_thumbnailer_queue_thumbnail(fmanager->priv->thumbnailer, + g_file_get_path(file)); + } @@ -965,7 +1246,7 @@ name = xfdesktop_icon_peek_label(XFDESKTOP_ICON(icon)); if(xfdesktop_file_icon_manager_get_cached_icon_position(fmanager, name, -@@ -1839,7 +1875,6 @@ xfdesktop_file_icon_manager_add_icon(XfdesktopFileIconManager *fmanager, +@@ -1852,7 +1891,6 @@ xfdesktop_file_icon_manager_add_icon(Xfd do_add = TRUE; } else { if(defer_if_missing) { @@ -973,7 +1254,7 @@ fmanager->priv->deferred_icons = g_list_prepend(fmanager->priv->deferred_icons, g_object_ref(file)); } else -@@ -2195,6 +2230,13 @@ xfdesktop_file_icon_manager_file_changed(GFileMonitor *monitor, +@@ -2220,6 +2258,13 @@ xfdesktop_file_icon_manager_file_changed icon = g_hash_table_lookup(fmanager->priv->icons, file); if(icon) { @@ -987,7 +1268,7 @@ xfdesktop_icon_view_remove_item(fmanager->priv->icon_view, XFDESKTOP_ICON(icon)); g_hash_table_remove(fmanager->priv->icons, file); -@@ -2996,6 +3038,8 @@ xfdesktop_file_icon_manager_new(GFile *folder, +@@ -3021,6 +3066,8 @@ xfdesktop_file_icon_manager_new(GFile *f G_OBJECT(fmanager), "show-trash"); xfconf_g_property_bind(channel, SETTING_SHOW_REMOVABLE, G_TYPE_BOOLEAN, G_OBJECT(fmanager), "show-removable"); @@ -996,7 +1277,7 @@ return XFDESKTOP_ICON_VIEW_MANAGER(fmanager); } -@@ -3027,6 +3071,64 @@ xfdesktop_file_icon_manager_get_show_removable_media(XfdesktopFileIconManager *m +@@ -3052,6 +3099,64 @@ xfdesktop_file_icon_manager_get_show_rem return manager->priv->show_removable_media; } @@ -1043,7 +1324,7 @@ + manager); + } else { + /* We have to remove the thumbnails because the regular file -+ * icons can't check if thumbnails are allowed. ++ * icons can't easily check if thumbnails are allowed. + */ + g_hash_table_foreach(manager->priv->icons, + xfdesktop_file_icon_manager_remove_thumbnails, @@ -1061,13 +1342,16 @@ void xfdesktop_file_icon_manager_set_show_special_file(XfdesktopFileIconManager *manager, XfdesktopSpecialFileIconType type, -@@ -3068,3 +3170,23 @@ xfdesktop_file_icon_manager_get_show_special_file(XfdesktopFileIconManager *mana +@@ -3093,3 +3198,26 @@ xfdesktop_file_icon_manager_get_show_spe return manager->priv->show_special[type]; } + +static void -+xfdesktop_file_icon_manager_update_image (GtkWidget *widget, gchar *srcfile, gchar *thumbfile, XfdesktopFileIconManager *manager) ++xfdesktop_file_icon_manager_update_image(GtkWidget *widget, ++ gchar *srcfile, ++ gchar *thumbfile, ++ XfdesktopFileIconManager *manager) +{ + GFile *file; + XfdesktopIcon *icon; @@ -1085,236 +1369,86 @@ + xfdesktop_icon_set_thumbnail_file(icon, file); + } +} -diff --git a/src/xfdesktop-file-icon-manager.h b/src/xfdesktop-file-icon-manager.h -index 703a6f4..1c45ecb 100644 ---- a/src/xfdesktop-file-icon-manager.h -+++ b/src/xfdesktop-file-icon-manager.h -@@ -64,6 +64,10 @@ void xfdesktop_file_icon_manager_set_show_special_file(XfdesktopFileIconManager - gboolean show_special_file); - gboolean xfdesktop_file_icon_manager_get_show_special_file(XfdesktopFileIconManager *manager, - XfdesktopSpecialFileIconType type); -+void xfdesktop_file_icon_manager_set_show_thumbnails(XfdesktopFileIconManager *manager, -+ gboolean show_thumbnails); -+gboolean xfdesktop_file_icon_manager_get_show_thumbnails(XfdesktopFileIconManager *manager); +--- xfdesktop4-4.8.3.orig/src/xfdesktop-icon-view.c ++++ xfdesktop4-4.8.3/src/xfdesktop-icon-view.c +@@ -1046,7 +1046,7 @@ xfdesktop_icon_view_show_tooltip(GtkWidg + tip_text = xfdesktop_icon_peek_tooltip(icon_view->priv->item_under_pointer); + if(!tip_text) + return FALSE; +- + + gtk_tooltip_set_text(tooltip, tip_text); - G_END_DECLS - -diff --git a/src/xfdesktop-icon.c b/src/xfdesktop-icon.c -index 431ba79..31c082b 100644 ---- a/src/xfdesktop-icon.c -+++ b/src/xfdesktop-icon.c -@@ -283,6 +283,37 @@ xfdesktop_icon_peek_tooltip(XfdesktopIcon *icon) - } - - /*< optional >*/ -+void xfdesktop_icon_delete_thumbnail(XfdesktopIcon *icon) -+{ -+ XfdesktopIconClass *klass; -+ -+ g_return_if_fail(XFDESKTOP_IS_ICON(icon)); -+ -+ klass = XFDESKTOP_ICON_GET_CLASS(icon); -+ -+ if(!klass->delete_thumbnail_file) -+ return; -+ -+ klass->delete_thumbnail_file(icon); -+} -+ -+/*< optional >*/ -+void -+xfdesktop_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file) -+{ -+ XfdesktopIconClass *klass; -+ -+ g_return_if_fail(XFDESKTOP_IS_ICON(icon)); -+ -+ klass = XFDESKTOP_ICON_GET_CLASS(icon); -+ -+ if(!klass->set_thumbnail_file) -+ return; -+ -+ klass->set_thumbnail_file(icon, file); -+} -+ -+/*< optional >*/ - gboolean - xfdesktop_icon_populate_context_menu(XfdesktopIcon *icon, - GtkWidget *menu) -diff --git a/src/xfdesktop-icon.h b/src/xfdesktop-icon.h -index b838ed5..36e4925 100644 ---- a/src/xfdesktop-icon.h -+++ b/src/xfdesktop-icon.h -@@ -73,6 +73,9 @@ struct _XfdesktopIconClass - - G_CONST_RETURN gchar *(*peek_tooltip)(XfdesktopIcon *icon); - -+ void (*set_thumbnail_file)(XfdesktopIcon *icon, GFile *file); -+ void (*delete_thumbnail_file)(XfdesktopIcon *icon); -+ - gboolean (*populate_context_menu)(XfdesktopIcon *icon, - GtkWidget *menu); - }; -@@ -105,6 +108,9 @@ gboolean xfdesktop_icon_populate_context_menu(XfdesktopIcon *icon, - - GtkWidget *xfdesktop_icon_peek_icon_view(XfdesktopIcon *icon); - -+void xfdesktop_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file); -+void xfdesktop_icon_delete_thumbnail(XfdesktopIcon *icon); -+ - /*< signal triggers >*/ - - void xfdesktop_icon_pixbuf_changed(XfdesktopIcon *icon); -diff --git a/src/xfdesktop-marshal.list b/src/xfdesktop-marshal.list -deleted file mode 100644 -index 819c32e..0000000 ---- a/src/xfdesktop-marshal.list -+++ /dev/null -@@ -1,2 +0,0 @@ --BOOLEAN:VOID --BOOLEAN:ENUM,INT -diff --git a/src/xfdesktop-regular-file-icon.c b/src/xfdesktop-regular-file-icon.c -index e14256a..742a197 100644 ---- a/src/xfdesktop-regular-file-icon.c -+++ b/src/xfdesktop-regular-file-icon.c -@@ -68,11 +68,15 @@ struct _XfdesktopRegularFileIconPrivate - GFileInfo *file_info; - GFileInfo *filesystem_info; - GFile *file; -+ GFile *thumbnail_file; - GdkScreen *gscreen; - }; - - static void xfdesktop_regular_file_icon_finalize(GObject *obj); + return TRUE; +@@ -1520,7 +1520,6 @@ xfdesktop_icon_view_drag_drop(GtkWidget + + /* clear out old extents, if any */ + /* FIXME: is this right? */ +- //xfdesktop_icon_mark_extents_dirty(icon); + xfdesktop_icon_view_invalidate_icon(icon_view, icon, TRUE); + + /* Now that we have moved the icon the user selected, +@@ -2792,29 +2791,17 @@ xfdesktop_icon_view_paint_icon(Xfdesktop -+static void xfdesktop_regular_file_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file); -+static void xfdesktop_regular_file_icon_delete_thumbnail_file(XfdesktopIcon *icon); -+ - static GdkPixbuf *xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, - gint size); - static G_CONST_RETURN gchar *xfdesktop_regular_file_icon_peek_label(XfdesktopIcon *icon); -@@ -127,6 +131,8 @@ xfdesktop_regular_file_icon_class_init(XfdesktopRegularFileIconClass *klass) - icon_class->get_allowed_drag_actions = xfdesktop_regular_file_icon_get_allowed_drag_actions; - icon_class->get_allowed_drop_actions = xfdesktop_regular_file_icon_get_allowed_drop_actions; - icon_class->do_drop_dest = xfdesktop_regular_file_icon_do_drop_dest; -+ icon_class->set_thumbnail_file = xfdesktop_regular_file_icon_set_thumbnail_file; -+ icon_class->delete_thumbnail_file = xfdesktop_regular_file_icon_delete_thumbnail_file; + playout = icon_view->priv->playout; - file_icon_class->peek_file_info = xfdesktop_regular_file_icon_peek_file_info; - file_icon_class->peek_filesystem_info = xfdesktop_regular_file_icon_peek_filesystem_info; -@@ -171,6 +177,9 @@ xfdesktop_regular_file_icon_finalize(GObject *obj) - - if(icon->priv->tooltip) - g_free(icon->priv->tooltip); -+ -+ if(icon->priv->thumbnail_file) -+ g_object_unref(icon->priv->thumbnail_file); - - G_OBJECT_CLASS(xfdesktop_regular_file_icon_parent_class)->finalize(obj); - } -@@ -201,6 +210,43 @@ xfdesktop_regular_file_icon_invalidate_pixbuf(XfdesktopRegularFileIcon *icon) +- if(xfdesktop_icon_get_extents(icon, &pixbuf_extents, +- &text_extents, &total_extents)) ++ xfdesktop_icon_get_extents(icon, &pixbuf_extents, ++ &text_extents, &total_extents); ++ xfdesktop_icon_view_setup_pango_layout(icon_view, icon, playout); ++ ++ if(!xfdesktop_icon_view_update_icon_extents(icon_view, icon, ++ &pixbuf_extents, ++ &text_extents, ++ &total_extents)) + { +- xfdesktop_icon_view_setup_pango_layout(icon_view, icon, playout); +- } else { +- /* if we get here, it's likely that the expose area doesn't +- * include everything we *actually* need to repaint. the +- * extents should be recalculated before invalidating rects +- * in the first place. for now just fix it up and re-expose +- * the correct area. */ +- if(!xfdesktop_icon_view_update_icon_extents(icon_view, icon, +- &pixbuf_extents, +- &text_extents, +- &total_extents)) +- { +- g_warning("Can't update extents for icon '%s'", +- xfdesktop_icon_peek_label(icon)); +- } else { +- gtk_widget_queue_draw_area(GTK_WIDGET(icon_view), +- total_extents.x, total_extents.y, +- total_extents.width, total_extents.height); +- } +- return; ++ g_warning("Can't update extents for icon '%s'", ++ xfdesktop_icon_peek_label(icon)); } - } - -+static void -+xfdesktop_regular_file_icon_delete_thumbnail_file(XfdesktopIcon *icon) -+{ -+ XfdesktopRegularFileIcon *file_icon; -+ -+ if(!XFDESKTOP_IS_REGULAR_FILE_ICON(icon)) -+ return; -+ -+ file_icon = XFDESKTOP_REGULAR_FILE_ICON(icon); -+ -+ if(file_icon->priv->thumbnail_file) { -+ g_object_unref(file_icon->priv->thumbnail_file); -+ file_icon->priv->thumbnail_file = NULL; -+ } -+ -+ xfdesktop_regular_file_icon_invalidate_pixbuf(file_icon); -+ xfdesktop_icon_pixbuf_changed(XFDESKTOP_ICON(icon)); -+} -+ -+static void -+xfdesktop_regular_file_icon_set_thumbnail_file(XfdesktopIcon *icon, GFile *file) -+{ -+ XfdesktopRegularFileIcon *file_icon; -+ -+ if(!XFDESKTOP_IS_REGULAR_FILE_ICON(icon)) -+ return; -+ -+ file_icon = XFDESKTOP_REGULAR_FILE_ICON(icon); -+ -+ if(file_icon->priv->thumbnail_file) -+ g_object_unref(file_icon->priv->thumbnail_file); -+ -+ file_icon->priv->thumbnail_file = file; -+ -+ xfdesktop_regular_file_icon_invalidate_pixbuf(file_icon); -+ xfdesktop_icon_pixbuf_changed(XFDESKTOP_ICON(icon)); -+} - static GdkPixbuf * - xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, -@@ -224,6 +270,10 @@ xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, - if(g_file_has_prefix(file_icon->priv->file, thumbnail_dir)) { - /* use the filename as custom icon name for thumbnails */ - icon_name = g_file_get_path(file_icon->priv->file); -+ -+ /* release thumbnail path */ -+ g_object_unref(thumbnail_dir); -+ g_free(thumbnail_dir_path); - } else if(xfdesktop_file_utils_is_desktop_file(file_icon->priv->file_info)) { - gchar *contents; - gsize length; -@@ -248,12 +298,16 @@ xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, - g_key_file_free(key_file); - g_free(contents); - } -+ } else { -+ /* If we have a thumbnail then they are enabled, use it. */ -+ if(file_icon->priv->thumbnail_file) -+ { -+ file_icon->priv->pix = gdk_pixbuf_new_from_file_at_scale(g_file_get_path(file_icon->priv->thumbnail_file), -+ size, size, -+ TRUE, NULL); -+ } + if(g_list_find(icon_view->priv->selected_icons, icon)) { +@@ -2954,7 +2941,6 @@ xfdesktop_grid_do_resize(XfdesktopIconVi + + /* move all icons into the pending_icons list */ + for(l = icon_view->priv->icons; l; l = l->next) { +- xfdesktop_icon_mark_extents_dirty(XFDESKTOP_ICON(l->data)); + g_signal_handlers_disconnect_by_func(G_OBJECT(l->data), + G_CALLBACK(xfdesktop_icon_view_icon_changed), + icon_view); +@@ -3374,7 +3360,6 @@ xfdesktop_icon_view_remove_item(Xfdeskto + + if(xfdesktop_icon_get_position(icon, &row, &col)) { + xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); +- xfdesktop_icon_mark_extents_dirty(icon); + xfdesktop_grid_set_position_free(icon_view, row, col); + } + icon_view->priv->icons = g_list_delete_link(icon_view->priv->icons, l); +@@ -3422,7 +3407,6 @@ xfdesktop_icon_view_remove_all(Xfdesktop + if(xfdesktop_icon_get_position(icon, &row, &col)) { + xfdesktop_icon_view_invalidate_icon(icon_view, icon, FALSE); + xfdesktop_grid_set_position_free(icon_view, row, col); +- xfdesktop_icon_mark_extents_dirty(icon); } - -- /* release thumbnail path */ -- g_object_unref(thumbnail_dir); -- g_free(thumbnail_dir_path); -- - /* load the symlink emblem if necessary */ - if(g_file_info_get_attribute_boolean(file_icon->priv->file_info, - G_FILE_ATTRIBUTE_STANDARD_IS_SYMLINK)) -@@ -280,10 +334,24 @@ xfdesktop_regular_file_icon_peek_pixbuf(XfdesktopIcon *icon, - - if(file_icon->priv->file_info) - gicon = g_file_info_get_icon(file_icon->priv->file_info); -- -+ -+ if(file_icon->priv->pix) { -+ if(emblem_pix) { -+ gint emblem_pix_size = gdk_pixbuf_get_width(emblem_pix); -+ gint dest_size = size - emblem_pix_size; -+ -+ /* We have to add the emblem */ -+ gdk_pixbuf_composite(emblem_pix, file_icon->priv->pix, -+ dest_size, dest_size, -+ emblem_pix_size, emblem_pix_size, -+ dest_size, dest_size, -+ 1.0, 1.0, GDK_INTERP_BILINEAR, 255); -+ } -+ } else { - file_icon->priv->pix = xfdesktop_file_utils_get_icon(icon_name, gicon, - size, emblem_pix, - file_icon->priv->pix_opacity); -+ } - file_icon->priv->cur_pix_size = size; - --- -1.7.5.4 - + g_signal_handlers_disconnect_by_func(G_OBJECT(l->data), diff -Nru xfdesktop4-4.8.3/debian/rules xfdesktop4-4.8.3/debian/rules --- xfdesktop4-4.8.3/debian/rules 2012-01-25 19:23:33.000000000 +0000 +++ xfdesktop4-4.8.3/debian/rules 2012-02-07 19:48:21.000000000 +0000 @@ -1,15 +1,11 @@ #!/usr/bin/make -f -include /usr/share/hardening-includes/hardening.make - -CFLAGS=$(shell dpkg-buildflags --get CFLAGS) -LDFLAGS=$(shell dpkg-buildflags --get LDFLAGS) -LDFLAGS+=$(HARDENING_LDFLAGS) -Wl,-z,defs -Wl,--as-needed -Wl,-O1 -CFLAGS+=$(HARDENING_CFLAGS) - -export CFLAGS LDFLAGS +export DEB_LDFLAGS_MAINT_APPEND=-Wl,-z,defs -Wl,--as-needed -Wl,-O1 +export DEB_BUILD_MAINT_OPTIONS=hardening=+pie,+bindnow override_dh_auto_configure: + exo-csource --static --name=`basename xfdesktop-settings-ui.glade .glade | sed -e 's/-/_/g'` \ + $(CURDIR)/settings/xfdesktop-settings-ui.glade >$(CURDIR)/settings/xfdesktop-settings-ui.h NOCONFIGURE=1 xdt-autogen find .pc -type f -name '*.c' -exec echo '{}' >> po/POTFILES.skip \; dh_auto_configure -- --enable-thunarx --enable-exo \ @@ -18,7 +14,8 @@ override_dh_auto_clean: rm -f po/POTFILES.skip dh_auto_clean - rm -f aclocal.m4 common/Makefile.in config.guess config.sub configure ltmain.sh src/Makefile.in + rm -f aclocal.m4 config.guess config.sub configure ltmain.sh settings/xfdesktop-settings-ui.h + rm -f $$(find -name 'Makefile.in*') override_dh_install: chrpath -d -k $(CURDIR)/debian/tmp/usr/bin/*